diff --git a/.vscode/settings.json b/.vscode/settings.json index 3f9b2dc8..a0476bfb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,7 +10,8 @@ "unordered_set": "cpp", "vector": "cpp", "string_view": "cpp", - "initializer_list": "cpp" + "initializer_list": "cpp", + "typeinfo": "cpp" }, "cmake.configureOnOpen": false } \ No newline at end of file diff --git a/esp3d/configuration.h b/esp3d/configuration.h index d23443bb..bea1a199 100644 --- a/esp3d/configuration.h +++ b/esp3d/configuration.h @@ -245,7 +245,6 @@ /* SD card library * ESP_SD_NATIVE //esp32 / esp8266 * ESP_SDIO //esp32 only -* ESP_SDFAT //esp8266 / esp32 * ESP_SDFAT2 //esp8266 / esp32 */ //#define SD_DEVICE ESP_SDFAT2 diff --git a/esp3d/src/include/defines.h b/esp3d/src/include/defines.h index 5662e068..2f98e64f 100644 --- a/esp3d/src/include/defines.h +++ b/esp3d/src/include/defines.h @@ -200,8 +200,7 @@ //SD READER FS type supported #define ESP_SD_NATIVE 1 #define ESP_SDIO 2 -#define ESP_SDFAT 3 -#define ESP_SDFAT2 4 +#define ESP_SDFAT2 3 //SDIO Mode #define SD_ONE_BIT_MODE 1 diff --git a/esp3d/src/include/version.h b/esp3d/src/include/version.h index a7323dbe..cd5c66fa 100644 --- a/esp3d/src/include/version.h +++ b/esp3d/src/include/version.h @@ -22,7 +22,7 @@ #define _VERSION_ESP3D_H //version and sources location -#define FW_VERSION "3.0.0.a208" +#define FW_VERSION "3.0.0.a209" #define REPOSITORY "https://github.com/luc-github/ESP3D/tree/3.0" #endif //_VERSION_ESP3D_H diff --git a/esp3d/src/modules/filesystem/flash/fat_esp32_filesystem.cpp b/esp3d/src/modules/filesystem/flash/fat_esp32_filesystem.cpp index 6816cd4d..7ab4fd45 100644 --- a/esp3d/src/modules/filesystem/flash/fat_esp32_filesystem.cpp +++ b/esp3d/src/modules/filesystem/flash/fat_esp32_filesystem.cpp @@ -143,35 +143,39 @@ bool ESP_FileSystem::mkdir(const char *path) bool ESP_FileSystem::rmdir(const char *path) { String p = path; - if(p[0]!='/') { - p="/"+p; + if (!p.startsWith("/")) { + p = '/'+p; } - if (p[p.length()-1] == '/') { - if (p!="/") { + if (p!= "/") { + if (p.endsWith("/")) { p.remove(p.length()-1); } } - if (!exists(p.c_str())) { return false; } bool res = true; std::stack pathlist; pathlist.push(p); - while (pathlist.size() > 0) { + while (pathlist.size() > 0 && res) { File dir = FFat.open(pathlist.top().c_str()); File f = dir.openNextFile(); bool candelete = true; - while (f) { + while (f && res) { if (f.isDirectory()) { candelete = false; - String newdir = f.name(); + String newdir = pathlist.top()+ '/'; + newdir+= f.name(); pathlist.push(newdir); f.close(); f = File(); } else { - FFat.remove(f.name()); + String filepath = pathlist.top()+ '/'; + filepath+= f.name(); f.close(); + if (!FFat.remove(filepath.c_str())) { + res = false; + } f = dir.openNextFile(); } } diff --git a/esp3d/src/modules/filesystem/flash/littlefs_esp32_filesystem.cpp b/esp3d/src/modules/filesystem/flash/littlefs_esp32_filesystem.cpp index c81ac580..50ef950a 100644 --- a/esp3d/src/modules/filesystem/flash/littlefs_esp32_filesystem.cpp +++ b/esp3d/src/modules/filesystem/flash/littlefs_esp32_filesystem.cpp @@ -150,35 +150,39 @@ bool ESP_FileSystem::mkdir(const char *path) bool ESP_FileSystem::rmdir(const char *path) { String p = path; - if(p[0]!='/') { - p="/"+p; + if (!p.startsWith("/")) { + p = '/'+p; } - if (p[p.length()-1] == '/') { - if (p!="/") { + if (p!= "/") { + if (p.endsWith("/")) { p.remove(p.length()-1); } } - if (!exists(p.c_str())) { return false; } bool res = true; std::stack pathlist; pathlist.push(p); - while (pathlist.size() > 0) { + while (pathlist.size() > 0 && res) { File dir = LittleFS.open(pathlist.top().c_str()); File f = dir.openNextFile(); bool candelete = true; - while (f) { + while (f && res) { if (f.isDirectory()) { candelete = false; - String newdir = f.name(); + String newdir = pathlist.top()+ '/'; + newdir+= f.name(); pathlist.push(newdir); f.close(); f = File(); } else { - LittleFS.remove(f.name()); + String filepath = pathlist.top()+ '/'; + filepath+= f.name(); f.close(); + if (!LittleFS.remove(filepath.c_str())) { + res = false; + } f = dir.openNextFile(); } } diff --git a/esp3d/src/modules/filesystem/flash/littlefs_esp8266_filesystem .cpp b/esp3d/src/modules/filesystem/flash/littlefs_esp8266_filesystem .cpp index 02c0319c..cfc76fa8 100644 --- a/esp3d/src/modules/filesystem/flash/littlefs_esp8266_filesystem .cpp +++ b/esp3d/src/modules/filesystem/flash/littlefs_esp8266_filesystem .cpp @@ -153,46 +153,40 @@ bool ESP_FileSystem::mkdir(const char *path) bool ESP_FileSystem::rmdir(const char *path) { - if (!exists(path)) { + String p = path; + if (!p.endsWith("/")) { + p+= '/'; + } + if (!p.startsWith("/")) { + p = '/'+p; + } + if (!exists(p.c_str())) { return false; } bool res = true; std::stack pathlist; - String spath = path; - spath.trim(); - if (spath[spath.length()-1] != '/') { - spath+="/"; - } - if (spath[0] != '/') { - spath ="/" + spath; - } - pathlist.push(spath); + pathlist.push(p); while (pathlist.size() > 0) { - spath=pathlist.top(); + bool candelete = true; - if (LittleFS.exists(spath.c_str())) { - Dir dir = LittleFS.openDir(pathlist.top().c_str()); - while (dir.next()) { - if (dir.isDirectory()) { - candelete = false; - String newdir = pathlist.top() + dir.fileName() + "/"; - pathlist.push(newdir); - } else { - log_esp3d("remove %s", dir.fileName().c_str()); - String s = spath + dir.fileName(); - LittleFS.remove(s); - } + Dir dir = LittleFS.openDir(pathlist.top().c_str()); + while (dir.next()) { + if (dir.isDirectory()) { + candelete = false; + String newdir = pathlist.top() + dir.fileName() + "/"; + pathlist.push(newdir); + } else { + String filepath = pathlist.top()+ '/'; + filepath+= dir.fileName(); + log_esp3d("remove %s", filepath.c_str()); + LittleFS.remove(filepath.c_str()); } } if (candelete) { - if (spath !="/") { - if (spath[spath.length()-1] == '/') { - spath.remove(spath.length()-1); + if (pathlist.top() !="/") { + if (LittleFS.exists(pathlist.top().c_str())) { + res = LittleFS.rmdir(pathlist.top().c_str()); } - if (LittleFS.exists(spath.c_str())) { - res = LittleFS.rmdir(spath.c_str()); - } - log_esp3d("rmdir %s %d", spath.c_str(), res); } pathlist.pop(); } diff --git a/esp3d/src/modules/filesystem/flash/spiffs_esp32_filesystem.cpp b/esp3d/src/modules/filesystem/flash/spiffs_esp32_filesystem.cpp index d459f183..15a8bfb6 100644 --- a/esp3d/src/modules/filesystem/flash/spiffs_esp32_filesystem.cpp +++ b/esp3d/src/modules/filesystem/flash/spiffs_esp32_filesystem.cpp @@ -168,11 +168,11 @@ bool ESP_FileSystem::rmdir(const char *path) { String spath = path; spath.trim(); - if(spath[0]!='/') { - spath="/"+spath; + if (!spath.startsWith("/")) { + spath = '/'+spath; } - if (spath[spath.length()-1] == '/') { - if (spath!="/") { + if (spath!= "/") { + if (spath.endsWith("/")) { spath.remove(spath.length()-1); } } diff --git a/esp3d/src/modules/filesystem/flash/spiffs_esp8266_filesystem.cpp b/esp3d/src/modules/filesystem/flash/spiffs_esp8266_filesystem.cpp deleted file mode 100644 index 32594aa8..00000000 --- a/esp3d/src/modules/filesystem/flash/spiffs_esp8266_filesystem.cpp +++ /dev/null @@ -1,389 +0,0 @@ -/* - spiffs_8266_filesystem.cpp - ESP3D filesystem configuration class - - Copyright (c) 2014 Luc Lebosse. All rights reserved. - - This code is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This code 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with This code; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include "../../../include/esp3d_config.h" -#if (FILESYSTEM_FEATURE == ESP_SPIFFS_FILESYSTEM) && defined (ARDUINO_ARCH_ESP8266) -#include "../esp_filesystem.h" -#include -Dir tDir_handle[ESP_MAX_OPENHANDLE]; -extern File tFile_handle[ESP_MAX_OPENHANDLE]; - -bool ESP_FileSystem::begin() -{ - _started = SPIFFS.begin(); - return _started; -} -void ESP_FileSystem::end() -{ - _started = false; - SPIFFS.end(); -} - -size_t ESP_FileSystem::freeBytes() -{ - return totalBytes() - usedBytes(); -} - -size_t ESP_FileSystem::totalBytes() -{ - fs::FSInfo info; - SPIFFS.info (info); - return info.totalBytes; -} - -size_t ESP_FileSystem::usedBytes() -{ - fs::FSInfo info; - SPIFFS.info (info); - return info.usedBytes; -} - -uint ESP_FileSystem::maxPathLength() -{ - return 32; -} - -bool ESP_FileSystem::rename(const char *oldpath, const char *newpath) -{ - return SPIFFS.rename(oldpath,newpath); -} - -const char * ESP_FileSystem::FilesystemName() -{ - return "SPIFFS"; -} - -bool ESP_FileSystem::format() -{ - bool res = SPIFFS.format(); - if (res) { - res = begin(); - } - return res; -} - -ESP_File ESP_FileSystem::open(const char* path, uint8_t mode) -{ - //do some check - if(((strcmp(path,"/") == 0) && ((mode == ESP_FILE_WRITE) || (mode == ESP_FILE_APPEND))) || (strlen(path) == 0)) { - return ESP_File(); - } - // path must start by '/' - if (path[0] != '/') { - return ESP_File(); - } - File ftmp = SPIFFS.open(path, (mode == ESP_FILE_READ)?"r":(mode == ESP_FILE_WRITE)?"w":"a"); - if(ftmp) { - log_esp3d("Success openening file: %s", path); - ESP_File esptmp(&ftmp, false,(mode == ESP_FILE_READ)?false:true, path); - return esptmp; - } - (void)mode; - Dir dtmp = SPIFFS.openDir(path); - ESP_File esptmp(&dtmp, true, false, path); - log_esp3d("Success openening dir: %s", path); - return esptmp; -} - -bool ESP_FileSystem::exists(const char* path) -{ - bool res = false; - //root should always be there if started - if (strcmp(path, "/") == 0) { - return _started; - } - String spath = path; - spath.trim(); - if (spath[spath.length()-1] == '/') { - if (spath!="/") { - spath.remove(spath.length()-1); - } - } - res = SPIFFS.exists(spath.c_str()); - if (!res) { - String newpath = spath; - if (newpath[newpath.length()-1] != '/') { - newpath+="/"; - } - newpath+="."; - log_esp3d("Check %s", newpath.c_str()); - res = SPIFFS.exists(newpath); - if (!res) { - ESP_File f = ESP_FileSystem::open(path, ESP_FILE_READ); - if (f) { - //Check directories - ESP_File sub = f.openNextFile(); - if (sub) { - sub.close(); - res = true; - } - f.close(); - } - } - } - return res; -} - -bool ESP_FileSystem::remove(const char *path) -{ - String p = path; - if(p[0]!='/') { - p="/"+p; - } - return SPIFFS.remove(p); -} - -bool ESP_FileSystem::mkdir(const char *path) -{ - //Use file named . to simulate directory - String p = path; - if (p[p.length()-1] != '/') { - p+="/"; - } - p+="."; - log_esp3d("Dir create : %s", p.c_str()); - ESP_File f = open(p.c_str(), ESP_FILE_WRITE); - if (f) { - f.close(); - return true; - } else { - return false; - } -} - -bool ESP_FileSystem::rmdir(const char *path) -{ - Dir dtmp = SPIFFS.openDir(path); - log_esp3d("Deleting : %s",path); - while (dtmp.next()) { - if (!SPIFFS.remove(dtmp.fileName().c_str())) { - return false; - } - } - return true; -} - -void ESP_FileSystem::closeAll() -{ - for (uint8_t i = 0; i < ESP_MAX_OPENHANDLE; i++) { - tDir_handle[i] = Dir(); - tFile_handle[i].close(); - tFile_handle[i] = File(); - } -} - -ESP_File::ESP_File(void* handle, bool isdir, bool iswritemode, const char * path) -{ - _isdir = isdir; - _dirlist = ""; - _isfakedir = false; - _index = -1; - _filename = ""; - _name = ""; - _lastwrite = 0; - _iswritemode = iswritemode; - _size = 0; - if (!handle) { - log_esp3d("No handle"); - return ; - } - bool set =false; - if (_isdir) { - for (uint8_t i=0; (i < ESP_MAX_OPENHANDLE) && !set; i++) { - if (tDir_handle[i].fileName().length() == 0) { - tDir_handle[i] = *((Dir *)handle); - _index = i; - //Path = filename - if (path) { - _filename = path; - if (_filename == "/") { - _filename = "/."; - } - if (_filename[_filename.length()-1] != '.') { - if (_filename[_filename.length()-2] != '/') { - _filename+="/"; - } - _filename+="."; - } - log_esp3d("Filename: %s", _filename.c_str()); - //Name - if (_filename == "/.") { - _name = "/"; - } else { - _name = _filename; - if (_name.length() >=2) { - if ((_name[_name.length() - 1] == '.') && (_name[_name.length() - 2] == '/')) { - _name.remove( _name.length() - 2,2); - } - } - _name.remove( 0, _name.lastIndexOf('/')+1); - } - } - log_esp3d("Dir: %s index: %d", _name.c_str(), _index); - log_esp3d("name: %s", _name.c_str()); - log_esp3d("filename: %s", _filename.c_str()); - set = true; - } - } - return; - } - for (uint8_t i=0; (i < ESP_MAX_OPENHANDLE) && !set; i++) { - if (!tFile_handle[i]) { - tFile_handle[i] = *((File*)handle); - //filename - _filename = tFile_handle[i].name(); - - //if root - if (_filename == "/") { - _filename = "/."; - } - if (_isdir) { - if (_filename[_filename.length()-1] != '.') { - if (_filename[_filename.length()-2] != '/') { - _filename+="/"; - } - _filename+="."; - } - } - //name - if (_filename == "/.") { - _name = "/"; - } else { - _name = _filename; - if (_name.endsWith("/.")) { - _name.remove( _name.length() - 2,2); - _isfakedir = true; - _isdir = true; - } - if (_name[0] == '/') { - _name.remove( 0, 1); - } - int pos = _name.lastIndexOf('/'); - if (pos != -1) { - _name.remove( 0, pos+1); - } - } - //size - _size = tFile_handle[i].size(); - //time - _lastwrite = tFile_handle[i].getLastWrite(); - _index = i; - log_esp3d("Opening File at index %d",_index); - log_esp3d("name: %s", _name.c_str()); - log_esp3d("filename: %s", _filename.c_str()); - set = true; - } - } -} - -bool ESP_File::seek(uint32_t pos, uint8_t mode) -{ - return tFile_handle[_index].seek(pos, (SeekMode)mode); -} - -void ESP_File::close() -{ - if (_index != -1) { - if (_isdir && !_isfakedir) { - log_esp3d("Closing Dir at index %d", _index); - tDir_handle[_index] = Dir(); - _index = -1; - return; - } - log_esp3d("Closing File at index %d", _index); - tFile_handle[_index].close(); - //reopen if mode = write - //udate size + date - if (_iswritemode && !_isdir) { - File ftmp = SPIFFS.open(_filename.c_str(), "r"); - if (ftmp) { - _size = ftmp.size(); - _lastwrite = ftmp.getLastWrite(); - ftmp.close(); - } - } - _index = -1; - } -} - -ESP_File ESP_File::openNextFile() -{ - if ((_index == -1) || !_isdir) { - log_esp3d("openNextFile failed"); - return ESP_File(); - } - if(tDir_handle[_index].next()) { - log_esp3d("Getting next file from %s", _filename.c_str()); - File tmp = tDir_handle[_index].openFile("r"); - while (tmp) { - ESP_File esptmp(&tmp); - esptmp.close(); - String sub = esptmp.filename(); - sub.remove(0,_filename.length()-1); - int pos = sub.indexOf("/"); - if (pos!=-1) { - //is subdir - sub = sub.substring(0,pos); - log_esp3d("file name:%s name: %s %s sub:%s root:%s", esptmp.filename(), esptmp.name(), (esptmp.isDirectory())?"isDir":"isFile", sub.c_str(), _filename.c_str()); - String tag = "*" + sub + "*"; - //test if already in directory list - if (_dirlist.indexOf(tag) == -1) {//not in list so add it and return the info - _dirlist+= tag; - String fname = _filename.substring(0,_filename.length()-1) + sub + "/."; - log_esp3d("Found dir # name: %s filename:%s", sub.c_str(), fname.c_str()); - if (sub == ".") { - log_esp3d("Dir tag, ignore it"); - if(!tDir_handle[_index].next()) { - return ESP_File(); - } else { - tmp = tDir_handle[_index].openFile("r"); - } - } else { - esptmp = ESP_File(sub.c_str(), fname.c_str()); - return esptmp; - } - } else { //already in list so ignore it - log_esp3d("Dir name: %s already in list", sub.c_str()); - if(!tDir_handle[_index].next()) { - return ESP_File(); - } else { - tmp = tDir_handle[_index].openFile("r"); - } - } - } else { //is file - log_esp3d("file name:%s name: %s %s sub:%s root:%s", esptmp.filename(), esptmp.name(), (esptmp.isDirectory())?"isDir":"isFile", sub.c_str(), _filename.c_str()); - if (sub == ".") { - log_esp3d("Dir tag, ignore it"); - if(!tDir_handle[_index].next()) { - return ESP_File(); - } else { - tmp = tDir_handle[_index].openFile("r"); - } - } else { - log_esp3d("Found file # name: %s filename:%s", esptmp.filename(), esptmp.name()); - return esptmp; - } - } - } - } - return ESP_File(); -} - - -#endif //ESP_SPIFFS_FILESYSTEM diff --git a/esp3d/src/modules/filesystem/sd/sd_native_esp32.cpp b/esp3d/src/modules/filesystem/sd/sd_native_esp32.cpp index 101cb2c0..eb2a08e0 100644 --- a/esp3d/src/modules/filesystem/sd/sd_native_esp32.cpp +++ b/esp3d/src/modules/filesystem/sd/sd_native_esp32.cpp @@ -209,30 +209,42 @@ bool ESP_SD::mkdir(const char *path) bool ESP_SD::rmdir(const char *path) { - if (!exists(path)) { + + String p = path; + if (!p.startsWith("/")) { + p = '/'+p; + } + if (p!= "/") { + if (p.endsWith("/")) { + p.remove(p.length()-1); + } + } + if (!exists(p.c_str())) { return false; } bool res = true; std::stack pathlist; - String p = path; - if (p.endsWith("/")) { - p.remove( p.length() - 1,1); - } pathlist.push(p); - while (pathlist.size() > 0) { + while (pathlist.size() > 0 && res) { File dir = SD.open(pathlist.top().c_str()); File f = dir.openNextFile(); bool candelete = true; - while (f) { + while (f && res) { if (f.isDirectory()) { candelete = false; - String newdir = f.name(); + String newdir = pathlist.top()+ '/'; + newdir+= f.name(); pathlist.push(newdir); f.close(); f = File(); } else { - SD.remove(f.name()); + + String filepath = pathlist.top()+ '/'; + filepath+= f.name(); f.close(); + if(!SD.remove(filepath.c_str())) { + res = false; + } f = dir.openNextFile(); } } diff --git a/esp3d/src/modules/filesystem/sd/sd_native_esp8266.cpp b/esp3d/src/modules/filesystem/sd/sd_native_esp8266.cpp index 68ee8bc2..85262a2a 100644 --- a/esp3d/src/modules/filesystem/sd/sd_native_esp8266.cpp +++ b/esp3d/src/modules/filesystem/sd/sd_native_esp8266.cpp @@ -252,29 +252,39 @@ bool ESP_SD::mkdir(const char *path) bool ESP_SD::rmdir(const char *path) { - if (!exists(path)) { + String p = path; + if (!p.endsWith("/")) { + p+= '/'; + } + if (!p.startsWith("/")) { + p = '/'+p; + } + if (!exists(p.c_str())) { return false; } bool res = true; std::stack pathlist; - String p = path; pathlist.push(p); - while (pathlist.size() > 0) { + while (pathlist.size() > 0 && res) { File dir = SD.open(pathlist.top().c_str()); dir.rewindDirectory(); File f = dir.openNextFile(); bool candelete = true; - while (f) { + while (f && res) { if (f.isDirectory()) { candelete = false; - String newdir = f.name(); + String newdir = pathlist.top() + f.name(); + newdir+="/"; pathlist.push(newdir); f.close(); f = File(); } else { _sizechanged = true; - SD.remove(f.fullName()); + String filepath = pathlist.top() + f.name(); f.close(); + if (!SD.remove(filepath.c_str())) { + res= false; + } f = dir.openNextFile(); } } diff --git a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp index 24f2c5e1..a3bf797a 100644 --- a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp +++ b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp32.cpp @@ -362,25 +362,33 @@ bool ESP_SD::mkdir(const char *path) bool ESP_SD::rmdir(const char *path) { - if (!exists(path)) { + + String p = path; + if (!p.endsWith("/")) { + p+= '/'; + } + if (!p.startsWith("/")) { + p = '/'+p; + } + if (!exists(p.c_str())) { return false; } bool res = true; std::stack pathlist; - String p = path; pathlist.push(p); - while (pathlist.size() > 0) { + while (pathlist.size() > 0 && res) { File dir = SD.open(pathlist.top().c_str()); dir.rewindDirectory(); File f = dir.openNextFile(); bool candelete = true; - while (f) { + while (f && res) { if (f.isDir()) { candelete = false; String newdir; char tmp[255]; f.getName(tmp,254); - newdir = tmp; + newdir = pathlist.top() + tmp; + newdir+="/"; pathlist.push(newdir); f.close(); f = File(); @@ -388,8 +396,11 @@ bool ESP_SD::rmdir(const char *path) char tmp[255]; f.getName(tmp,254); _sizechanged = true; - SD.remove(tmp); + String filepath = pathlist.top() + tmp; f.close(); + if (!SD.remove(filepath.c_str())) { + res= false; + } f = dir.openNextFile(); } } @@ -402,7 +413,7 @@ bool ESP_SD::rmdir(const char *path) dir.close(); } p = String(); - log_esp3d("count %d", pathlist.size()); + log_esp3d("count %d has error %d\n",pathlist.size(), res); return res; } diff --git a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp index 9a4a4c49..0301be7f 100644 --- a/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp +++ b/esp3d/src/modules/filesystem/sd/sd_sdfat2_esp8266.cpp @@ -347,25 +347,32 @@ bool ESP_SD::mkdir(const char *path) bool ESP_SD::rmdir(const char *path) { - if (!exists(path)) { + String p = path; + if (!p.endsWith("/")) { + p+= '/'; + } + if (!p.startsWith("/")) { + p = '/'+p; + } + if (!exists(p.c_str())) { return false; } bool res = true; std::stack pathlist; - String p = path; pathlist.push(p); - while (pathlist.size() > 0) { + while (pathlist.size() > 0 && res) { sdfat::File dir = SD.open(pathlist.top().c_str()); dir.rewindDirectory(); sdfat::File f = dir.openNextFile(); bool candelete = true; - while (f) { + while (f && res) { if (f.isDir()) { candelete = false; String newdir; char tmp[255]; f.getName(tmp,254); - newdir = tmp; + newdir = pathlist.top() + tmp; + newdir+="/"; pathlist.push(newdir); f.close(); f = sdfat::File(); @@ -373,8 +380,11 @@ bool ESP_SD::rmdir(const char *path) char tmp[255]; f.getName(tmp,254); _sizechanged = true; - SD.remove(tmp); + String filepath = pathlist.top() + tmp; f.close(); + if (!SD.remove(filepath.c_str())) { + res= false; + } f = dir.openNextFile(); } } diff --git a/esp3d/src/modules/filesystem/sd/sd_sdfat_esp32.cpp b/esp3d/src/modules/filesystem/sd/sd_sdfat_esp32.cpp deleted file mode 100644 index ea95db69..00000000 --- a/esp3d/src/modules/filesystem/sd/sd_sdfat_esp32.cpp +++ /dev/null @@ -1,853 +0,0 @@ -/* -sd_sdfat_esp32.cpp - ESP3D sd support class - - Copyright (c) 2014 Luc Lebosse. All rights reserved. - - This code is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This code 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with This code; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include "../../../include/esp3d_config.h" -#if defined (ARDUINO_ARCH_ESP32) && defined(SD_DEVICE) -#if (SD_DEVICE == ESP_SDFAT) -#include "../esp_sd.h" -#include -#include "../../../core/settings_esp3d.h" -#include -extern File tSDFile_handle[ESP_MAX_SD_OPENHANDLE]; - -//Max Freq Working -#define FREQMZ 40 -SdFat SD; - -void dateTime (uint16_t* date, uint16_t* dtime) -{ - struct tm tmstruct; - time_t now; - time (&now); - localtime_r (&now, &tmstruct); - *date = FAT_DATE ( (tmstruct.tm_year) + 1900, ( tmstruct.tm_mon) + 1, tmstruct.tm_mday); - *dtime = FAT_TIME (tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec); -} - -time_t getDateTimeFile(File & filehandle) -{ - static time_t dt = 0; -#ifdef SD_TIMESTAMP_FEATURE - struct tm timefile; - dir_t d; - if(filehandle) { - if (filehandle.dirEntry(&d)) { - timefile.tm_year = FAT_YEAR(d.lastWriteDate) - 1900; - timefile.tm_mon = FAT_MONTH(d.lastWriteDate) - 1; - timefile.tm_mday = FAT_DAY(d.lastWriteDate); - timefile.tm_hour = FAT_HOUR(d.lastWriteTime); - timefile.tm_min = FAT_MINUTE(d.lastWriteTime); - timefile.tm_sec = FAT_SECOND(d.lastWriteTime); - timefile.tm_isdst = -1; - dt = mktime(&timefile); - if (dt == -1) { - log_esp3d("mktime failed"); - } - } else { - log_esp3d("stat file failed"); - } - } else { - log_esp3d("check stat file failed"); - } -#endif //SD_TIMESTAMP_FEATURE - return dt; -} - - -uint8_t ESP_SD::getState(bool refresh) -{ -#if defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1 - //no need to go further if SD detect is not correct - if (!((digitalRead (ESP_SD_DETECT_PIN) == ESP_SD_DETECT_VALUE) ? true : false)) { - _state = ESP_SDCARD_NOT_PRESENT; - return _state; - } -#endif //ESP_SD_DETECT_PIN - //if busy doing something return state - if (!((_state == ESP_SDCARD_NOT_PRESENT) || _state == ESP_SDCARD_IDLE)) { - return _state; - } - if (!refresh) { - return _state; //to avoid refresh=true + busy to reset SD and waste time - } else { - _sizechanged = true; - } - //SD is idle or not detected, let see if still the case - _state = ESP_SDCARD_NOT_PRESENT; - log_esp3d("Spi : CS: %d, Miso: %d, Mosi: %d, SCK: %d",ESP_SD_CS_PIN!=-1?ESP_SD_CS_PIN:SS, ESP_SD_MISO_PIN!=-1?ESP_SD_MISO_PIN:MISO, ESP_SD_MOSI_PIN!=-1?ESP_SD_MOSI_PIN:MOSI, ESP_SD_SCK_PIN!=-1?ESP_SD_SCK_PIN:SCK); - //refresh content if card was removed - if (SD.begin((ESP_SD_CS_PIN == -1)?SS:ESP_SD_CS_PIN, SD_SCK_MHZ(FREQMZ/_spi_speed_divider))) { - if (SD.card()->cardSize() > 0 ) { - _state = ESP_SDCARD_IDLE; - } - } - return _state; -} - -bool ESP_SD::begin() -{ -#if (ESP_SD_CS_PIN != -1) || (ESP_SD_MISO_PIN != -1) || (ESP_SD_MOSI_PIN != -1) || (ESP_SD_SCK_PIN != -1) - SPI.begin(ESP_SD_SCK_PIN, ESP_SD_MISO_PIN, ESP_SD_MOSI_PIN, ESP_SD_CS_PIN); -#endif - _started = true; - _state = ESP_SDCARD_NOT_PRESENT; - _spi_speed_divider = Settings_ESP3D::read_byte(ESP_SD_SPEED_DIV); - //sanity check - if (_spi_speed_divider <= 0) { - _spi_speed_divider = 1; - } -#ifdef SD_TIMESTAMP_FEATURE - //set callback to get time on files on SD - SdFile::dateTimeCallback (dateTime); -#endif //SD_TIMESTAMP_FEATURE -//Setup pins -#if defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1 - pinMode (ESP_SD_DETECT_PIN, INPUT); -#endif //ESP_SD_DETECT_PIN -#if SD_DEVICE_CONNECTION == ESP_SHARED_SD -#if defined(ESP_FLAG_SHARED_SD_PIN) && ESP_FLAG_SHARED_SD_PIN != -1 - pinMode (ESP_FLAG_SHARED_SD_PIN, OUTPUT); - digitalWrite(ESP_FLAG_SHARED_SD_PIN, !ESP_FLAG_SHARED_SD_VALUE); -#endif //ESP_FLAG_SHARED_SD_PIN -#endif //SD_DEVICE_CONNECTION == ESP_SHARED_SD - return _started; -} - -void ESP_SD::end() -{ - _state = ESP_SDCARD_NOT_PRESENT; - _started = false; -} - -void ESP_SD::refreshStats(bool force) -{ - if (force || _sizechanged) { - usedBytes(true); - } - _sizechanged = false; -} - -uint64_t ESP_SD::totalBytes(bool refresh) -{ - static uint64_t _totalBytes = 0; - if (refresh || _totalBytes==0) { - _totalBytes = SD.vol()->clusterCount(); - uint8_t blocks = SD.vol()->blocksPerCluster(); - _totalBytes = _totalBytes * blocks * 512; - } - return _totalBytes; -} - -uint64_t ESP_SD::usedBytes(bool refresh) -{ - return totalBytes(refresh) - freeBytes(refresh); -} - -uint64_t ESP_SD::freeBytes(bool refresh) -{ - static uint64_t _freeBytes = 0; - if (refresh || _freeBytes==0) { - uint64_t volFree = SD.vol()->freeClusterCount(); - uint8_t blocks = SD.vol()->blocksPerCluster(); - _freeBytes = volFree * blocks * 512; - } - return _freeBytes; -} - -uint ESP_SD::maxPathLength() -{ - return 255; -} - -bool ESP_SD::rename(const char *oldpath, const char *newpath) -{ - return SD.rename(oldpath,newpath); -} - -// strings needed in file system structures -#define noName "NO NAME " -#define fat16str "FAT16 " -#define fat32str "FAT32 " -// constants for file system structure -#define BU16 128 -#define BU32 8192 -#define ERASE_SIZE 262144L - -//------------------------------------------------------------------------------ -// write cached block to the card -uint8_t writeCache(uint32_t lbn, Sd2Card & card, cache_t & cache) -{ - return card.writeBlock(lbn, cache.data); -} - -//------------------------------------------------------------------------------ -// initialize appropriate sizes for SD capacity -bool initSizes(uint32_t cardCapacityMB, uint8_t & sectorsPerCluster, uint8_t & numberOfHeads, uint8_t & sectorsPerTrack) -{ - if (cardCapacityMB <= 6) { - return false; - } else if (cardCapacityMB <= 16) { - sectorsPerCluster = 2; - } else if (cardCapacityMB <= 32) { - sectorsPerCluster = 4; - } else if (cardCapacityMB <= 64) { - sectorsPerCluster = 8; - } else if (cardCapacityMB <= 128) { - sectorsPerCluster = 16; - } else if (cardCapacityMB <= 1024) { - sectorsPerCluster = 32; - } else if (cardCapacityMB <= 32768) { - sectorsPerCluster = 64; - } else { - // SDXC cards - sectorsPerCluster = 128; - } - - // set fake disk geometry - sectorsPerTrack = cardCapacityMB <= 256 ? 32 : 63; - - if (cardCapacityMB <= 16) { - numberOfHeads = 2; - } else if (cardCapacityMB <= 32) { - numberOfHeads = 4; - } else if (cardCapacityMB <= 128) { - numberOfHeads = 8; - } else if (cardCapacityMB <= 504) { - numberOfHeads = 16; - } else if (cardCapacityMB <= 1008) { - numberOfHeads = 32; - } else if (cardCapacityMB <= 2016) { - numberOfHeads = 64; - } else if (cardCapacityMB <= 4032) { - numberOfHeads = 128; - } else { - numberOfHeads = 255; - } - return true; -} - -//------------------------------------------------------------------------------ -// zero cache and optionally set the sector signature -void clearCache(uint8_t addSig, cache_t & cache) -{ - memset(&cache, 0, sizeof(cache)); - if (addSig) { - cache.mbr.mbrSig0 = BOOTSIG0; - cache.mbr.mbrSig1 = BOOTSIG1; - } -} -//------------------------------------------------------------------------------ -// zero FAT and root dir area on SD -bool clearFatDir(uint32_t bgn, uint32_t count, Sd2Card & card, cache_t & cache, ESP3DOutput * output) -{ - clearCache(false, cache); - if (!card.writeStart(bgn, count)) { - return false; - } - for (uint32_t i = 0; i < count; i++) { - if ((i & 0XFF) == 0) { - if (output) { - output->print("."); - } - } - if (!card.writeData(cache.data)) { - return false; - } - } - if (!card.writeStop()) { - return false; - } - return true; -} - -//------------------------------------------------------------------------------ -// return cylinder number for a logical block number -uint16_t lbnToCylinder(uint32_t lbn, uint8_t numberOfHeads, uint8_t sectorsPerTrack) -{ - return lbn / (numberOfHeads * sectorsPerTrack); -} -//------------------------------------------------------------------------------ -// return head number for a logical block number -uint8_t lbnToHead(uint32_t lbn, uint8_t numberOfHeads, uint8_t sectorsPerTrack) -{ - return (lbn % (numberOfHeads * sectorsPerTrack)) / sectorsPerTrack; -} -//------------------------------------------------------------------------------ -// return sector number for a logical block number -uint8_t lbnToSector(uint32_t lbn, uint8_t sectorsPerTrack) -{ - return (lbn % sectorsPerTrack) + 1; -} - -//------------------------------------------------------------------------------ -// format and write the Master Boot Record -bool writeMbr(Sd2Card & card, cache_t & cache, uint8_t partType, uint32_t relSector, uint32_t partSize, uint8_t numberOfHeads, uint8_t sectorsPerTrack) -{ - clearCache(true, cache); - part_t* p = cache.mbr.part; - p->boot = 0; - uint16_t c = lbnToCylinder(relSector, numberOfHeads, sectorsPerTrack); - if (c > 1023) { - return false; - } - p->beginCylinderHigh = c >> 8; - p->beginCylinderLow = c & 0XFF; - p->beginHead = lbnToHead(relSector, numberOfHeads, sectorsPerTrack); - p->beginSector = lbnToSector(relSector, sectorsPerTrack); - p->type = partType; - uint32_t endLbn = relSector + partSize - 1; - c = lbnToCylinder(endLbn,numberOfHeads, sectorsPerTrack); - if (c <= 1023) { - p->endCylinderHigh = c >> 8; - p->endCylinderLow = c & 0XFF; - p->endHead = lbnToHead(endLbn, numberOfHeads, sectorsPerTrack); - p->endSector = lbnToSector(endLbn, sectorsPerTrack); - } else { - // Too big flag, c = 1023, h = 254, s = 63 - p->endCylinderHigh = 3; - p->endCylinderLow = 255; - p->endHead = 254; - p->endSector = 63; - } - p->firstSector = relSector; - p->totalSectors = partSize; - if (!writeCache(0, card, cache)) { - return false; - } - return true; -} - -//------------------------------------------------------------------------------ -// generate serial number from card size and micros since boot -uint32_t volSerialNumber(uint32_t cardSizeBlocks) -{ - return (cardSizeBlocks << 8) + micros(); -} - -// format the SD as FAT16 -bool makeFat16(uint32_t & dataStart, Sd2Card & card, cache_t & cache, uint8_t numberOfHeads, uint8_t sectorsPerTrack, uint32_t cardSizeBlocks, uint8_t sectorsPerCluster, uint32_t &relSector, uint32_t partSize, uint8_t & partType, uint32_t &fatSize, uint32_t &fatStart, uint16_t reservedSectors, ESP3DOutput * output) -{ - uint32_t nc; - for (dataStart = 2 * BU16;; dataStart += BU16) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 255)/256; - uint32_t r = BU16 + 1 + 2 * fatSize + 32; - if (dataStart < r) { - continue; - } - relSector = dataStart - r + BU16; - break; - } - // check valid cluster count for FAT16 volume - if (nc < 4085 || nc >= 65525) { - return false; - } - reservedSectors = 1; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + 2 * fatSize + reservedSectors + 32; - if (partSize < 32680) { - partType = 0X01; - } else if (partSize < 65536) { - partType = 0X04; - } else { - partType = 0X06; - } - // write MBR - if (!writeMbr(card, cache, partType, relSector, partSize, numberOfHeads, sectorsPerTrack)) { - return false; - } - clearCache(true, cache); - fat_boot_t* pb = &cache.fbs; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->rootDirEntryCount = 512; - pb->mediaType = 0XF8; - pb->sectorsPerFat16 = fatSize; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(cardSizeBlocks); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat16str, sizeof(pb->fileSystemType)); - // write partition boot sector - if (!writeCache(relSector, card, cache)) { - return false; - } - // clear FAT and root directory - clearFatDir(fatStart, dataStart - fatStart, card, cache, output); - clearCache(false, cache); - cache.fat16[0] = 0XFFF8; - cache.fat16[1] = 0XFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart, card, cache) - || !writeCache(fatStart + fatSize, card, cache)) { - return false; - } - return true; -} - -// format the SD as FAT32 -bool makeFat32(uint32_t & dataStart, Sd2Card & card, cache_t & cache, uint8_t numberOfHeads, uint8_t sectorsPerTrack, uint32_t cardSizeBlocks, uint8_t sectorsPerCluster, uint32_t &relSector, uint32_t partSize, uint8_t & partType, uint32_t &fatSize, uint32_t &fatStart, uint16_t reservedSectors, ESP3DOutput * output) -{ - uint32_t nc; - relSector = BU32; - for (dataStart = 2 * BU32;; dataStart += BU32) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 127)/128; - uint32_t r = relSector + 9 + 2 * fatSize; - if (dataStart >= r) { - break; - } - } - // error if too few clusters in FAT32 volume - if (nc < 65525) { - return false; - } - reservedSectors = dataStart - relSector - 2 * fatSize; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + dataStart - relSector; - // type depends on address of end sector - // max CHS has lbn = 16450560 = 1024*255*63 - if ((relSector + partSize) <= 16450560) { - // FAT32 - partType = 0X0B; - } else { - // FAT32 with INT 13 - partType = 0X0C; - } - if (!writeMbr(card, cache, partType, relSector, partSize, numberOfHeads, sectorsPerTrack)) { - return false; - } - clearCache(true, cache); - - fat32_boot_t* pb = &cache.fbs32; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->mediaType = 0XF8; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->sectorsPerFat32 = fatSize; - pb->fat32RootCluster = 2; - pb->fat32FSInfo = 1; - pb->fat32BackBootBlock = 6; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(cardSizeBlocks); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat32str, sizeof(pb->fileSystemType)); - // write partition boot sector and backup - if (!writeCache(relSector, card, cache) - || !writeCache(relSector + 6, card, cache)) { - return false; - } - clearCache(true, cache); - // write extra boot area and backup - if (!writeCache(relSector + 2, card, cache) - || !writeCache(relSector + 8, card, cache)) { - return false; - } - fat32_fsinfo_t* pf = &cache.fsinfo; - pf->leadSignature = FSINFO_LEAD_SIG; - pf->structSignature = FSINFO_STRUCT_SIG; - pf->freeCount = 0XFFFFFFFF; - pf->nextFree = 0XFFFFFFFF; - // write FSINFO sector and backup - if (!writeCache(relSector + 1, card, cache) - || !writeCache(relSector + 7, card, cache)) { - return false; - } - clearFatDir(fatStart, 2 * fatSize + sectorsPerCluster, card, cache, output); - clearCache(false, cache); - cache.fat32[0] = 0x0FFFFFF8; - cache.fat32[1] = 0x0FFFFFFF; - cache.fat32[2] = 0x0FFFFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart, card, cache) - || !writeCache(fatStart + fatSize, card, cache)) { - return false; - } - return true; -} - -bool eraseCard(Sd2Card & card, cache_t & cache, uint32_t cardSizeBlocks, ESP3DOutput * output) -{ - uint32_t firstBlock = 0; - uint32_t lastBlock = 0; - //uint16_t n = 0; - if (output) { - output->printMSG("Erasing ", false); - } - do { - lastBlock = firstBlock + ERASE_SIZE - 1; - if (lastBlock >= cardSizeBlocks) { - lastBlock = cardSizeBlocks - 1; - } - if (!card.erase(firstBlock, lastBlock)) { - return false; - } - if (output) { - output->print("."); - } - firstBlock += ERASE_SIZE; - } while (firstBlock < cardSizeBlocks); - - if (!card.readBlock(0, cache.data)) { - return false; - } - if (output) { - output->printLN(""); - } - return true; -} - -bool formatCard(uint32_t & dataStart, Sd2Card & card, - cache_t & cache, uint8_t numberOfHeads, - uint8_t sectorsPerTrack, uint32_t cardSizeBlocks, - uint8_t sectorsPerCluster, uint32_t &relSector, - uint32_t partSize, uint8_t & partType, - uint32_t &fatSize, uint32_t &fatStart, - uint32_t cardCapacityMB, uint16_t reservedSectors, ESP3DOutput * output) -{ - initSizes(cardCapacityMB, sectorsPerCluster, numberOfHeads, sectorsPerTrack); - if (card.type() != SD_CARD_TYPE_SDHC) { - if (output) { - output->printMSG("Formating FAT16 "); - } - if(!makeFat16(dataStart, card, cache, numberOfHeads, sectorsPerTrack, cardSizeBlocks, sectorsPerCluster, relSector, partSize, partType, fatSize, fatStart, reservedSectors, output)) { - return false; - } - } else { - if (output) { - output->printMSG("Formating FAT32 ", false); - } - if(!makeFat32(dataStart, card, cache, numberOfHeads, sectorsPerTrack, cardSizeBlocks, sectorsPerCluster, relSector, partSize, partType, fatSize, fatStart, reservedSectors, output)) { - return false; - } - } - if (output) { - output->printLN(""); - } - return true; -} - -bool ESP_SD::format(ESP3DOutput * output) -{ - if (ESP_SD::getState(true) == ESP_SDCARD_IDLE) { - Sd2Card card; - uint32_t cardSizeBlocks; - uint32_t cardCapacityMB; - // cache for SD block - cache_t cache; - - // MBR information - uint8_t partType = 0; - uint32_t relSector = 0; - uint32_t partSize = 0; - - // Fake disk geometry - uint8_t numberOfHeads = 0; - uint8_t sectorsPerTrack = 0; - - // FAT parameters - uint16_t reservedSectors = 0; - uint8_t sectorsPerCluster = 0; - uint32_t fatStart = 0; - uint32_t fatSize = 0; - uint32_t dataStart = 0; - if (!card.begin((ESP_SD_CS_PIN == -1)?SS:ESP_SD_CS_PIN, SD_SCK_MHZ(FREQMZ/_spi_speed_divider))) { - return false; - } - cardSizeBlocks = card.cardSize(); - if (cardSizeBlocks == 0) { - return false; - } - cardCapacityMB = (cardSizeBlocks + 2047)/2048; - if (output) { - String s = "Capacity detected :" + String((1.048576*cardCapacityMB)/1024) + "GB"; - output->printMSG(s.c_str()); - } - if (!eraseCard(card, cache, cardSizeBlocks, output)) { - return false; - } - - if (!formatCard(dataStart, card, cache, numberOfHeads, - sectorsPerTrack, cardSizeBlocks, - sectorsPerCluster, relSector, partSize, partType, - fatSize, fatStart, cardCapacityMB, reservedSectors,output)) { - return false; - } - return true; - } - return false; -} - -ESP_SDFile ESP_SD::open(const char* path, uint8_t mode) -{ - //do some check - if(((strcmp(path,"/") == 0) && ((mode == ESP_FILE_WRITE) || (mode == ESP_FILE_APPEND))) || (strlen(path) == 0)) { - _sizechanged = true; - return ESP_SDFile(); - } - // path must start by '/' - if (path[0] != '/') { - return ESP_SDFile(); - } - if (mode != ESP_FILE_READ) { - //check container exists - String p = path; - p.remove(p.lastIndexOf('/') +1); - if (!exists(p.c_str())) { - log_esp3d("Error opening: %s", path); - return ESP_SDFile(); - } - } - File tmp = SD.open(path, (mode == ESP_FILE_READ)?FILE_READ:(mode == ESP_FILE_WRITE)?FILE_WRITE:FILE_WRITE); - ESP_SDFile esptmp(&tmp, tmp.isDir(),(mode == ESP_FILE_READ)?false:true, path); - return esptmp; -} - -bool ESP_SD::exists(const char* path) -{ - bool res = false; - //root should always be there if started - if (strcmp(path, "/") == 0) { - return _started; - } - res = SD.exists(path); - if (!res) { - ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ); - if (root) { - res = root.isDirectory(); - } - } - return res; -} - -bool ESP_SD::remove(const char *path) -{ - _sizechanged = true; - return SD.remove(path); -} - -bool ESP_SD::mkdir(const char *path) -{ - return SD.mkdir(path); -} - -bool ESP_SD::rmdir(const char *path) -{ - if (!exists(path)) { - return false; - } - bool res = true; - std::stack pathlist; - String p = path; - pathlist.push(p); - while (pathlist.size() > 0) { - File dir = SD.open(pathlist.top().c_str()); - dir.rewindDirectory(); - File f = dir.openNextFile(); - bool candelete = true; - while (f) { - if (f.isDir()) { - candelete = false; - String newdir; - char tmp[255]; - f.getName(tmp,254); - newdir = tmp; - pathlist.push(newdir); - f.close(); - f = File(); - } else { - char tmp[255]; - f.getName(tmp,254); - _sizechanged = true; - SD.remove(tmp); - f.close(); - f = dir.openNextFile(); - } - } - if (candelete) { - if (pathlist.top() !="/") { - res = SD.rmdir(pathlist.top().c_str()); - } - pathlist.pop(); - } - dir.close(); - } - p = String(); - log_esp3d("count %d", pathlist.size()); - return res; -} - -void ESP_SD::closeAll() -{ - for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) { - tSDFile_handle[i].close(); - tSDFile_handle[i] = File(); - } -} - -bool ESP_SDFile::seek(uint32_t pos, uint8_t mode) -{ - if (mode == ESP_SEEK_END) { - return tSDFile_handle[_index].seek(-pos); //based on SDFS comment - } - return tSDFile_handle[_index].seek(pos); -} - -ESP_SDFile::ESP_SDFile(void* handle, bool isdir, bool iswritemode, const char * path) -{ - _isdir = isdir; - _dirlist = ""; - _index = -1; - _filename = ""; - _name = ""; - _lastwrite = 0 ; - _iswritemode = iswritemode; - _size = 0; - if (!handle) { - return ; - } - bool set =false; - for (uint8_t i=0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) { - if (!tSDFile_handle[i]) { - tSDFile_handle[i] = *((File*)handle); - //filename - char tmp[255]; - tSDFile_handle[i].getName(tmp,254); - _filename = path; - //name - _name = tmp; - if (_name.endsWith("/")) { - _name.remove( _name.length() - 1,1); - _isdir = true; - } - if (_name[0] == '/') { - _name.remove( 0, 1); - } - int pos = _name.lastIndexOf('/'); - if (pos != -1) { - _name.remove( 0, pos+1); - } - if (_name.length() == 0) { - _name = "/"; - } - //size - _size = tSDFile_handle[i].size(); - //time - if (!_isdir && !iswritemode) { - _lastwrite = getDateTimeFile(tSDFile_handle[i]); - - } else { - //no need date time for directory - _lastwrite = 0; - } - _index = i; - //log_esp3d("Opening File at index %d",_index); - set = true; - } - } -} -//todo need also to add short filename -const char* ESP_SDFile::shortname() const -{ - static char sname[13]; - File ftmp = SD.open(_filename.c_str()); - if (ftmp) { - ftmp.getSFN(sname); - ftmp.close(); - return sname; - } else { - return _name.c_str(); - } -} - -void ESP_SDFile::close() -{ - if (_index != -1) { - //log_esp3d("Closing File at index %d", _index); - tSDFile_handle[_index].close(); - //reopen if mode = write - //udate size + date - if (_iswritemode && !_isdir) { - File ftmp = SD.open(_filename.c_str()); - if (ftmp) { - _size = ftmp.size(); - _lastwrite = getDateTimeFile(ftmp); - ftmp.close(); - } - } - tSDFile_handle[_index] = File(); - //log_esp3d("Closing File at index %d",_index); - _index = -1; - } -} - -ESP_SDFile ESP_SDFile::openNextFile() -{ - if ((_index == -1) || !_isdir) { - log_esp3d("openNextFile failed"); - return ESP_SDFile(); - } - File tmp = tSDFile_handle[_index].openNextFile(); - if (tmp) { - char tmps[255]; - tmp.getName(tmps,254); - log_esp3d("tmp name :%s %s", tmps, (tmp.isDir())?"isDir":"isFile"); - String s = _filename ; - if (s!="/") { - s+="/"; - } - s += tmps; - ESP_SDFile esptmp(&tmp, tmp.isDir(),false, s.c_str()); - esptmp.close(); - return esptmp; - } - return ESP_SDFile(); -} - -const char * ESP_SD::FilesystemName() -{ - return "SDFat - " SD_FAT_VERSION_STR ; -} - -#endif //SD_DEVICE == ESP_SDFAT -#endif //ARCH_ESP32 && SD_DEVICE diff --git a/esp3d/src/modules/filesystem/sd/sd_sdfat_esp8266.cpp b/esp3d/src/modules/filesystem/sd/sd_sdfat_esp8266.cpp deleted file mode 100644 index ddc82801..00000000 --- a/esp3d/src/modules/filesystem/sd/sd_sdfat_esp8266.cpp +++ /dev/null @@ -1,864 +0,0 @@ -/* -sd_sdfat_esp8266.cpp - ESP3D sd support class - - Copyright (c) 2014 Luc Lebosse. All rights reserved. - - This code is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This code 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with This code; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include "../../../include/esp3d_config.h" -#if defined (ARDUINO_ARCH_ESP8266) && defined(SD_DEVICE) -#if (SD_DEVICE == ESP_SDFAT) -#define FS_NO_GLOBALS -#include "../esp_sd.h" -#include -#include "../../../core/settings_esp3d.h" -#define NO_GLOBAL_SD -#include -extern sdfat::File tSDFile_handle[ESP_MAX_SD_OPENHANDLE]; -using namespace sdfat; -SdFat SD; - -void dateTime (uint16_t* date, uint16_t* dtime) -{ - struct tm tmstruct; - time_t now; - time (&now); - localtime_r (&now, &tmstruct); - *date = FAT_DATE ( (tmstruct.tm_year) + 1900, ( tmstruct.tm_mon) + 1, tmstruct.tm_mday); - *dtime = FAT_TIME (tmstruct.tm_hour, tmstruct.tm_min, tmstruct.tm_sec); -} - -time_t getDateTimeFile(sdfat::File & filehandle) -{ - static time_t dt = 0; -#ifdef SD_TIMESTAMP_FEATURE - struct tm timefile; - dir_t d; - if(filehandle) { - if (filehandle.dirEntry(&d)) { - timefile.tm_year = FAT_YEAR(d.lastWriteDate) - 1900; - timefile.tm_mon = FAT_MONTH(d.lastWriteDate) - 1; - timefile.tm_mday = FAT_DAY(d.lastWriteDate); - timefile.tm_hour = FAT_HOUR(d.lastWriteTime); - timefile.tm_min = FAT_MINUTE(d.lastWriteTime); - timefile.tm_sec = FAT_SECOND(d.lastWriteTime); - timefile.tm_isdst = -1; - dt = mktime(&timefile); - if (dt == -1) { - log_esp3d("mktime failed"); - } - } else { - log_esp3d("stat file failed"); - } - } else { - log_esp3d("check file for stat failed"); - } -#endif //SD_TIMESTAMP_FEATURE - return dt; -} - -uint8_t ESP_SD::getState(bool refresh) -{ -#if defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1 - //no need to go further if SD detect is not correct - if (!((digitalRead (ESP_SD_DETECT_PIN) == ESP_SD_DETECT_VALUE) ? true : false)) { - log_esp3d("No SD State %d vs %d", digitalRead (ESP_SD_DETECT_PIN), ESP_SD_DETECT_VALUE); - _state = ESP_SDCARD_NOT_PRESENT; - return _state; - } else { - log_esp3d("SD Detect Pin ok"); - } -#endif //ESP_SD_DETECT_PIN - //if busy doing something return state - if (!((_state == ESP_SDCARD_NOT_PRESENT) || _state == ESP_SDCARD_IDLE)) { - log_esp3d("Busy SD State"); - return _state; - } - if (!refresh) { - log_esp3d("SD State cache is %d", _state); - return _state; //to avoid refresh=true + busy to reset SD and waste time - } else { - _sizechanged = true; - } - //SD is idle or not detected, let see if still the case - _state = ESP_SDCARD_NOT_PRESENT; - //refresh content if card was removed - if (SD.begin((ESP_SD_CS_PIN == -1)?SS:ESP_SD_CS_PIN, SD_SCK_HZ(F_CPU/_spi_speed_divider))) { - log_esp3d("Init SD State ok"); - if (SD.card()->cardSize() > 0 ) { - log_esp3d("SD available"); - _state = ESP_SDCARD_IDLE; - } else { - log_esp3d("Cannot get card size"); - } - } else { - log_esp3d("Init SD State failed"); - } - log_esp3d("SD State is %d", _state); - return _state; -} - -bool ESP_SD::begin() -{ - _started = true; - _state = ESP_SDCARD_NOT_PRESENT; - _spi_speed_divider = Settings_ESP3D::read_byte(ESP_SD_SPEED_DIV); - //sanity check - if (_spi_speed_divider <= 0) { - _spi_speed_divider = 1; - } -#ifdef SD_TIMESTAMP_FEATURE - //set callback to get time on files on SD - SdFile::dateTimeCallback (dateTime); -#endif //SD_TIMESTAMP_FEATURE - //Setup pins -#if defined(ESP_SD_DETECT_PIN) && ESP_SD_DETECT_PIN != -1 - pinMode (ESP_SD_DETECT_PIN, INPUT); -#endif //ESP_SD_DETECT_PIN -#if SD_DEVICE_CONNECTION == ESP_SHARED_SD -#if defined(ESP_FLAG_SHARED_SD_PIN) && ESP_FLAG_SHARED_SD_PIN != -1 - pinMode (ESP_FLAG_SHARED_SD_PIN, OUTPUT); - digitalWrite(ESP_FLAG_SHARED_SD_PIN, !ESP_FLAG_SHARED_SD_VALUE); -#endif //ESP_FLAG_SHARED_SD_PIN -#endif //SD_DEVICE_CONNECTION == ESP_SHARED_SD - return _started; -} - -void ESP_SD::end() -{ - _state = ESP_SDCARD_NOT_PRESENT; - _started = false; -} - -void ESP_SD::refreshStats(bool force) -{ - if (force || _sizechanged) { - usedBytes(true); - } - _sizechanged = false; -} - -uint64_t ESP_SD::totalBytes(bool refresh) -{ - static uint64_t _totalBytes = 0; - if (refresh || _totalBytes==0) { - _totalBytes = SD.vol()->clusterCount(); - uint8_t blocks = SD.vol()->blocksPerCluster(); - _totalBytes = _totalBytes * blocks * 512; - } - return _totalBytes; -} - -uint64_t ESP_SD::usedBytes(bool refresh) -{ - return totalBytes(refresh) - freeBytes(refresh); -} - -uint64_t ESP_SD::freeBytes(bool refresh) -{ - static uint64_t _freeBytes = 0; - if (_freeBytes== 0 || refresh) { - _freeBytes = SD.vol()->freeClusterCount(); - uint8_t blocks = SD.vol()->blocksPerCluster(); - _freeBytes = _freeBytes * blocks * 512; - } - - return _freeBytes; -} - -uint ESP_SD::maxPathLength() -{ - return 255; -} - -bool ESP_SD::rename(const char *oldpath, const char *newpath) -{ - return SD.rename(oldpath,newpath); -} - -// strings needed in file system structures -#define noName "NO NAME " -#define fat16str "FAT16 " -#define fat32str "FAT32 " -// constants for file system structure -#define BU16 128 -#define BU32 8192 -#define ERASE_SIZE 262144L - -//------------------------------------------------------------------------------ -// write cached block to the card -uint8_t writeCache(uint32_t lbn, Sd2Card & card, cache_t & cache) -{ - return card.writeBlock(lbn, cache.data); -} - -//------------------------------------------------------------------------------ -// initialize appropriate sizes for SD capacity -bool initSizes(uint32_t cardCapacityMB, uint8_t & sectorsPerCluster, uint8_t & numberOfHeads, uint8_t & sectorsPerTrack) -{ - if (cardCapacityMB <= 6) { - return false; - } else if (cardCapacityMB <= 16) { - sectorsPerCluster = 2; - } else if (cardCapacityMB <= 32) { - sectorsPerCluster = 4; - } else if (cardCapacityMB <= 64) { - sectorsPerCluster = 8; - } else if (cardCapacityMB <= 128) { - sectorsPerCluster = 16; - } else if (cardCapacityMB <= 1024) { - sectorsPerCluster = 32; - } else if (cardCapacityMB <= 32768) { - sectorsPerCluster = 64; - } else { - // SDXC cards - sectorsPerCluster = 128; - } - - // set fake disk geometry - sectorsPerTrack = cardCapacityMB <= 256 ? 32 : 63; - - if (cardCapacityMB <= 16) { - numberOfHeads = 2; - } else if (cardCapacityMB <= 32) { - numberOfHeads = 4; - } else if (cardCapacityMB <= 128) { - numberOfHeads = 8; - } else if (cardCapacityMB <= 504) { - numberOfHeads = 16; - } else if (cardCapacityMB <= 1008) { - numberOfHeads = 32; - } else if (cardCapacityMB <= 2016) { - numberOfHeads = 64; - } else if (cardCapacityMB <= 4032) { - numberOfHeads = 128; - } else { - numberOfHeads = 255; - } - return true; -} - -//------------------------------------------------------------------------------ -// zero cache and optionally set the sector signature -void clearCache(uint8_t addSig, cache_t & cache) -{ - memset(&cache, 0, sizeof(cache)); - if (addSig) { - cache.mbr.mbrSig0 = BOOTSIG0; - cache.mbr.mbrSig1 = BOOTSIG1; - } -} -//------------------------------------------------------------------------------ -// zero FAT and root dir area on SD -bool clearFatDir(uint32_t bgn, uint32_t count, Sd2Card & card, cache_t & cache, ESP3DOutput * output) -{ - clearCache(false, cache); - if (!card.writeStart(bgn, count)) { - return false; - } - for (uint32_t i = 0; i < count; i++) { - if ((i & 0XFF) == 0) { - if (output) { - output->print("."); - } - } - if (!card.writeData(cache.data)) { - return false; - } - } - if (!card.writeStop()) { - return false; - } - return true; -} - -//------------------------------------------------------------------------------ -// return cylinder number for a logical block number -uint16_t lbnToCylinder(uint32_t lbn, uint8_t numberOfHeads, uint8_t sectorsPerTrack) -{ - return lbn / (numberOfHeads * sectorsPerTrack); -} -//------------------------------------------------------------------------------ -// return head number for a logical block number -uint8_t lbnToHead(uint32_t lbn, uint8_t numberOfHeads, uint8_t sectorsPerTrack) -{ - return (lbn % (numberOfHeads * sectorsPerTrack)) / sectorsPerTrack; -} -//------------------------------------------------------------------------------ -// return sector number for a logical block number -uint8_t lbnToSector(uint32_t lbn, uint8_t sectorsPerTrack) -{ - return (lbn % sectorsPerTrack) + 1; -} - -//------------------------------------------------------------------------------ -// format and write the Master Boot Record -bool writeMbr(Sd2Card & card, cache_t & cache, uint8_t partType, uint32_t relSector, uint32_t partSize, uint8_t numberOfHeads, uint8_t sectorsPerTrack) -{ - clearCache(true, cache); - part_t* p = cache.mbr.part; - p->boot = 0; - uint16_t c = lbnToCylinder(relSector, numberOfHeads, sectorsPerTrack); - if (c > 1023) { - return false; - } - p->beginCylinderHigh = c >> 8; - p->beginCylinderLow = c & 0XFF; - p->beginHead = lbnToHead(relSector, numberOfHeads, sectorsPerTrack); - p->beginSector = lbnToSector(relSector, sectorsPerTrack); - p->type = partType; - uint32_t endLbn = relSector + partSize - 1; - c = lbnToCylinder(endLbn,numberOfHeads, sectorsPerTrack); - if (c <= 1023) { - p->endCylinderHigh = c >> 8; - p->endCylinderLow = c & 0XFF; - p->endHead = lbnToHead(endLbn, numberOfHeads, sectorsPerTrack); - p->endSector = lbnToSector(endLbn, sectorsPerTrack); - } else { - // Too big flag, c = 1023, h = 254, s = 63 - p->endCylinderHigh = 3; - p->endCylinderLow = 255; - p->endHead = 254; - p->endSector = 63; - } - p->firstSector = relSector; - p->totalSectors = partSize; - if (!writeCache(0, card, cache)) { - return false; - } - return true; -} - -//------------------------------------------------------------------------------ -// generate serial number from card size and micros since boot -uint32_t volSerialNumber(uint32_t cardSizeBlocks) -{ - return (cardSizeBlocks << 8) + micros(); -} - -// format the SD as FAT16 -bool makeFat16(uint32_t & dataStart, Sd2Card & card, cache_t & cache, uint8_t numberOfHeads, uint8_t sectorsPerTrack, uint32_t cardSizeBlocks, uint8_t sectorsPerCluster, uint32_t &relSector, uint8_t & partType, uint32_t &fatSize, uint32_t &fatStart, ESP3DOutput * output) -{ - uint32_t nc; - for (dataStart = 2 * BU16;; dataStart += BU16) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 255)/256; - uint32_t r = BU16 + 1 + 2 * fatSize + 32; - if (dataStart < r) { - continue; - } - relSector = dataStart - r + BU16; - break; - } - // check valid cluster count for FAT16 volume - if (nc < 4085 || nc >= 65525) { - return false; - } - uint16_t reservedSectors = 1; - fatStart = relSector + reservedSectors; - uint32_t partSize = nc * sectorsPerCluster + 2 * fatSize + reservedSectors + 32; - if (partSize < 32680) { - partType = 0X01; - } else if (partSize < 65536) { - partType = 0X04; - } else { - partType = 0X06; - } - // write MBR - if (!writeMbr(card, cache, partType, relSector, partSize, numberOfHeads, sectorsPerTrack)) { - return false; - } - clearCache(true, cache); - fat_boot_t* pb = &cache.fbs; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->rootDirEntryCount = 512; - pb->mediaType = 0XF8; - pb->sectorsPerFat16 = fatSize; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(cardSizeBlocks); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat16str, sizeof(pb->fileSystemType)); - // write partition boot sector - if (!writeCache(relSector, card, cache)) { - return false; - } - // clear FAT and root directory - clearFatDir(fatStart, dataStart - fatStart, card, cache, output); - clearCache(false, cache); - cache.fat16[0] = 0XFFF8; - cache.fat16[1] = 0XFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart, card, cache) - || !writeCache(fatStart + fatSize, card, cache)) { - return false; - } - return true; -} - -// format the SD as FAT32 -bool makeFat32(uint32_t & dataStart, Sd2Card & card, cache_t & cache, uint8_t numberOfHeads, uint8_t sectorsPerTrack, uint32_t cardSizeBlocks, uint8_t sectorsPerCluster, uint32_t &relSector, uint8_t & partType, uint32_t &fatSize, uint32_t &fatStart, ESP3DOutput * output) -{ - uint32_t nc; - relSector = BU32; - for (dataStart = 2 * BU32;; dataStart += BU32) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 127)/128; - uint32_t r = relSector + 9 + 2 * fatSize; - if (dataStart >= r) { - break; - } - } - // error if too few clusters in FAT32 volume - if (nc < 65525) { - return false; - } - uint16_t reservedSectors = dataStart - relSector - 2 * fatSize; - fatStart = relSector + reservedSectors; - uint32_t partSize = nc * sectorsPerCluster + dataStart - relSector; - // type depends on address of end sector - // max CHS has lbn = 16450560 = 1024*255*63 - if ((relSector + partSize) <= 16450560) { - // FAT32 - partType = 0X0B; - } else { - // FAT32 with INT 13 - partType = 0X0C; - } - if (!writeMbr(card, cache, partType, relSector, partSize, numberOfHeads, sectorsPerTrack)) { - return false; - } - clearCache(true, cache); - - fat32_boot_t* pb = &cache.fbs32; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->mediaType = 0XF8; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->sectorsPerFat32 = fatSize; - pb->fat32RootCluster = 2; - pb->fat32FSInfo = 1; - pb->fat32BackBootBlock = 6; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(cardSizeBlocks); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat32str, sizeof(pb->fileSystemType)); - // write partition boot sector and backup - if (!writeCache(relSector, card, cache) - || !writeCache(relSector + 6, card, cache)) { - return false; - } - clearCache(true, cache); - // write extra boot area and backup - if (!writeCache(relSector + 2, card, cache) - || !writeCache(relSector + 8, card, cache)) { - return false; - } - fat32_fsinfo_t* pf = &cache.fsinfo; - pf->leadSignature = FSINFO_LEAD_SIG; - pf->structSignature = FSINFO_STRUCT_SIG; - pf->freeCount = 0XFFFFFFFF; - pf->nextFree = 0XFFFFFFFF; - // write FSINFO sector and backup - if (!writeCache(relSector + 1, card, cache) - || !writeCache(relSector + 7, card, cache)) { - return false; - } - clearFatDir(fatStart, 2 * fatSize + sectorsPerCluster, card, cache, output); - clearCache(false, cache); - cache.fat32[0] = 0x0FFFFFF8; - cache.fat32[1] = 0x0FFFFFFF; - cache.fat32[2] = 0x0FFFFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart, card, cache) - || !writeCache(fatStart + fatSize, card, cache)) { - return false; - } - return true; -} - -bool eraseCard(Sd2Card & card, cache_t & cache, uint32_t cardSizeBlocks, ESP3DOutput * output) -{ - uint32_t firstBlock = 0; - uint32_t lastBlock; - if (output) { - output->printMSG("Erasing ", false); - } - do { - lastBlock = firstBlock + ERASE_SIZE - 1; - if (lastBlock >= cardSizeBlocks) { - lastBlock = cardSizeBlocks - 1; - } - if (!card.erase(firstBlock, lastBlock)) { - return false; - } - if (output) { - output->print("."); - } - firstBlock += ERASE_SIZE; - } while (firstBlock < cardSizeBlocks); - - if (!card.readBlock(0, cache.data)) { - return false; - } - if (output) { - output->printLN(""); - } - return true; -} - -bool formatCard(uint32_t & dataStart, Sd2Card & card, - cache_t & cache, uint32_t cardSizeBlocks, - uint32_t &relSector, - uint8_t & partType, - uint32_t &fatSize, uint32_t &fatStart, - uint32_t cardCapacityMB, ESP3DOutput * output) -{ - // Fake disk geometry - uint8_t numberOfHeads; - uint8_t sectorsPerTrack; - // FAT parameters - uint8_t sectorsPerCluster; - - initSizes(cardCapacityMB, sectorsPerCluster, numberOfHeads, sectorsPerTrack); - if (card.type() != SD_CARD_TYPE_SDHC) { - if (output) { - output->printMSG("Formating FAT16 "); - } - if(!makeFat16(dataStart, card, cache, numberOfHeads, sectorsPerTrack, cardSizeBlocks, sectorsPerCluster, relSector, partType, fatSize, fatStart, output)) { - return false; - } - } else { - if (output) { - output->printMSG("Formating FAT32 ", false); - } - if(!makeFat32(dataStart, card, cache, numberOfHeads, sectorsPerTrack, cardSizeBlocks, sectorsPerCluster, relSector, partType, fatSize, fatStart, output)) { - return false; - } - } - if (output) { - output->printLN(""); - } - return true; -} - -bool ESP_SD::format(ESP3DOutput * output) -{ - if (ESP_SD::getState(true) == ESP_SDCARD_IDLE) { - Sd2Card card; - uint32_t cardSizeBlocks; - uint32_t cardCapacityMB; - // cache for SD block - cache_t cache; - - // MBR information - uint8_t partType; - uint32_t relSector; - - // FAT parameters - uint32_t fatStart; - uint32_t fatSize; - uint32_t dataStart; - if (!card.begin((ESP_SD_CS_PIN == -1)?SS:ESP_SD_CS_PIN, SD_SCK_HZ(F_CPU/_spi_speed_divider))) { - return false; - } - cardSizeBlocks = card.cardSize(); - if (cardSizeBlocks == 0) { - return false; - } - cardCapacityMB = (cardSizeBlocks + 2047)/2048; - if (output) { - String s = "Capacity detected :" + String((1.048576*cardCapacityMB)/1024) + "GB"; - output->printMSG(s.c_str()); - } - if (!eraseCard(card, cache, cardSizeBlocks, output)) { - return false; - } - - if (!formatCard(dataStart, card, cache, cardSizeBlocks, - relSector, partType, - fatSize, fatStart, cardCapacityMB,output)) { - return false; - } - return true; - } - return false; -} - -ESP_SDFile ESP_SD::open(const char* path, uint8_t mode) -{ - //do some check - if(((strcmp(path,"/") == 0) && ((mode == ESP_FILE_WRITE) || (mode == ESP_FILE_APPEND))) || (strlen(path) == 0)) { - _sizechanged = true; - return ESP_SDFile(); - } - // path must start by '/' - if (path[0] != '/') { - return ESP_SDFile(); - } - if (mode != ESP_FILE_READ) { - //check container exists - String p = path; - p.remove(p.lastIndexOf('/') +1); - if (!exists(p.c_str())) { - log_esp3d("Error opening: %s", path); - return ESP_SDFile(); - } - } - sdfat::File tmp = SD.open(path, (mode == ESP_FILE_READ)?FILE_READ:(mode == ESP_FILE_WRITE)?FILE_WRITE:FILE_WRITE); - ESP_SDFile esptmp(&tmp, tmp.isDir(),(mode == ESP_FILE_READ)?false:true, path); - return esptmp; -} - -bool ESP_SD::exists(const char* path) -{ - bool res = false; - //root should always be there if started - if (strcmp(path, "/") == 0) { - return _started; - } - log_esp3d("%s exists ?", path); - res = SD.exists(path); - if (!res) { - log_esp3d("Seems not - trying open it"); - ESP_SDFile root = ESP_SD::open(path, ESP_FILE_READ); - if (root) { - res = root.isDirectory(); - } - } - log_esp3d("Seems %s", res?"yes":"no"); - return res; -} - -bool ESP_SD::remove(const char *path) -{ - _sizechanged = true; - return SD.remove(path); -} - -bool ESP_SD::mkdir(const char *path) -{ - return SD.mkdir(path); -} - -bool ESP_SD::rmdir(const char *path) -{ - if (!exists(path)) { - return false; - } - bool res = true; - std::stack pathlist; - String p = path; - pathlist.push(p); - while (pathlist.size() > 0) { - sdfat::File dir = SD.open(pathlist.top().c_str()); - dir.rewindDirectory(); - sdfat::File f = dir.openNextFile(); - bool candelete = true; - while (f) { - if (f.isDir()) { - candelete = false; - String newdir; - char tmp[255]; - f.getName(tmp,254); - newdir = tmp; - pathlist.push(newdir); - f.close(); - f = sdfat::File(); - } else { - char tmp[255]; - f.getName(tmp,254); - _sizechanged = true; - SD.remove(tmp); - f.close(); - f = dir.openNextFile(); - } - } - if (candelete) { - if (pathlist.top() !="/") { - res = SD.rmdir(pathlist.top().c_str()); - } - pathlist.pop(); - } - dir.close(); - } - p = String(); - log_esp3d("count %d", pathlist.size()); - return res; -} - -bool ESP_SDFile::seek(uint32_t pos, uint8_t mode) -{ - if (mode == SeekCur) { - return tSDFile_handle[_index].seekCur(pos); - } - if (mode == SeekEnd) { - return tSDFile_handle[_index].seekEnd(pos); - } - // if (mode == SeekSet) - return tSDFile_handle[_index].seekSet(pos); -} - -void ESP_SD::closeAll() -{ - for (uint8_t i = 0; i < ESP_MAX_SD_OPENHANDLE; i++) { - tSDFile_handle[i].close(); - tSDFile_handle[i] = sdfat::File(); - } -} - -ESP_SDFile::ESP_SDFile(void* handle, bool isdir, bool iswritemode, const char * path) -{ - _isdir = isdir; - _dirlist = ""; - _index = -1; - _filename = ""; - _name = ""; - _lastwrite = 0; - _iswritemode = iswritemode; - _size = 0; - if (!handle) { - return ; - } - bool set =false; - for (uint8_t i=0; (i < ESP_MAX_SD_OPENHANDLE) && !set; i++) { - if (!tSDFile_handle[i]) { - tSDFile_handle[i] = *((sdfat::File*)handle); - //filename - char tmp[255]; - tSDFile_handle[i].getName(tmp,254); - _filename = path; - //name - _name = tmp; - if (_name.endsWith("/")) { - _name.remove( _name.length() - 1,1); - _isdir = true; - } - if (_name[0] == '/') { - _name.remove( 0, 1); - } - int pos = _name.lastIndexOf('/'); - if (pos != -1) { - _name.remove( 0, pos+1); - } - if (_name.length() == 0) { - _name = "/"; - } - //size - _size = tSDFile_handle[i].size(); - //time - if (!_isdir) { - _lastwrite = getDateTimeFile(tSDFile_handle[i]); - - } else { - //no need date time for directory - _lastwrite = 0; - } - _index = i; - //log_esp3d("Opening File at index %d",_index); - set = true; - } - } -} -//todo need also to add short filename -const char* ESP_SDFile::shortname() const -{ - static char sname[13]; - sdfat::File ftmp = SD.open(_filename.c_str()); - if (ftmp) { - ftmp.getSFN(sname); - ftmp.close(); - return sname; - } else { - return _name.c_str(); - } -} - -void ESP_SDFile::close() -{ - if (_index != -1) { - //log_esp3d("Closing File at index %d", _index); - tSDFile_handle[_index].close(); - //reopen if mode = write - //udate size + date - if (_iswritemode && !_isdir) { - sdfat::File ftmp = SD.open(_filename.c_str()); - if (ftmp) { - _size = ftmp.size(); - _lastwrite = getDateTimeFile(ftmp); - ftmp.close(); - } - } - tSDFile_handle[_index] = sdfat::File(); - //log_esp3d("Closing File at index %d",_index); - _index = -1; - } -} - -ESP_SDFile ESP_SDFile::openNextFile() -{ - if ((_index == -1) || !_isdir) { - log_esp3d("openNextFile failed"); - return ESP_SDFile(); - } - sdfat::File tmp = tSDFile_handle[_index].openNextFile(); - if (tmp) { - char tmps[255]; - tmp.getName(tmps,254); - log_esp3d("tmp name :%s %s", tmps, (tmp.isDir())?"isDir":"isFile"); - String s = _filename ; - if (s!="/") { - s+="/"; - } - s += tmps; - ESP_SDFile esptmp(&tmp, tmp.isDir(),false, s.c_str()); - esptmp.close(); - return esptmp; - } - return ESP_SDFile(); -} - -const char * ESP_SD::FilesystemName() -{ - return "SDFat - " SD_FAT_VERSION_STR ; -} - -#endif //SD_DEVICE == ESP_SDFAT -#endif //ARCH_ESP8266 && SD_DEVICE diff --git a/esp3d/src/modules/filesystem/sd/sdio_esp32.cpp b/esp3d/src/modules/filesystem/sd/sdio_esp32.cpp index 442bfb8a..7a37b63b 100644 --- a/esp3d/src/modules/filesystem/sd/sdio_esp32.cpp +++ b/esp3d/src/modules/filesystem/sd/sdio_esp32.cpp @@ -243,20 +243,25 @@ bool ESP_SD::rmdir(const char *path) p.remove( p.length() - 1,1); } pathlist.push(p); - while (pathlist.size() > 0) { + while (pathlist.size() > 0 && res) { File dir = SD_MMC.open(pathlist.top().c_str()); File f = dir.openNextFile(); bool candelete = true; - while (f) { + while (f && res) { if (f.isDirectory()) { candelete = false; - String newdir = f.name(); + String newdir = pathlist.top()+ '/'; + newdir+= f.name(); pathlist.push(newdir); f.close(); f = File(); } else { - SD_MMC.remove(f.name()); + String filepath = pathlist.top()+ '/'; + filepath+= f.name(); f.close(); + if (!SD_MMC.remove(filepath.c_str())) { + res = false; + } f = dir.openNextFile(); } } diff --git a/esp3d/src/modules/http/handles/upload-SD-files.cpp b/esp3d/src/modules/http/handles/upload-SD-files.cpp index 00a6ab35..2290013c 100644 --- a/esp3d/src/modules/http/handles/upload-SD-files.cpp +++ b/esp3d/src/modules/http/handles/upload-SD-files.cpp @@ -118,7 +118,7 @@ void HTTP_Server::SDFileupload () break; } } - if (pos+1 >= path.length()-1) { + if ((size_t)(pos+1) >= path.length()-1) { pos=-1; break; } else { diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/.gitattributes b/extra-libraries/ESP8266SDFat/ESP8266SdFat/.gitattributes deleted file mode 100644 index 412eeda7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/LICENSE.md b/extra-libraries/ESP8266SDFat/ESP8266SdFat/LICENSE.md deleted file mode 100644 index ab36c873..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2011..2017 Bill Greiman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/README.esp8266.md b/extra-libraries/ESP8266SDFat/ESP8266SdFat/README.esp8266.md deleted file mode 100644 index 29087250..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/README.esp8266.md +++ /dev/null @@ -1,17 +0,0 @@ -This is a downstream version of Bill Greiman's -"SdFat" library for Arduino. - -No code changes were intended to be made. Only a custom namespace called -"sdfat" was wrapped around all objects and structures in the library. -This namespace is required because the ESP8266 already has global class -types whose names conflict with SdFat's built-in ones (File, others). - -"using namespace sdfat;" at the top of a sketch should make it work as-is, -and all examples have been so updated. - -By performing this wrapping I hope to be able to integrate the latest -updates from upstream and pull them into an ESP8266 compatible FS (like -SPIFFS or LittleFS) to make it much more useful and work much better with -the ESP8266 Arduino ecosystem. - --Earle F. Philhower, III diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/README.md b/extra-libraries/ESP8266SDFat/ESP8266SdFat/README.md deleted file mode 100644 index ef752f0c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/README.md +++ /dev/null @@ -1,42 +0,0 @@ -The Arduino SdFat library provides read/write access to FAT16/FAT32 -file systems on SD/SDHC flash cards. - -SdFat requires Arduino 1.6x or greater. - -Key changes: - -Support for multiple SPI ports now uses a pointer to a SPIClass object. - -See the STM32Test example. -``` -explicit SdFat(SPIClass* spiPort); -\\ or -explicit SdFatEX(SPIClass* spiPort); -``` - -Open flags now follow POSIX conventions. O_RDONLY is the same as O_READ and O_WRONLY is the -same as O_WRITE. One and only one of of the mode flags, O_RDONLY, O_RDWR, or -O_WRONLY is required. - -Open flags for Particle Gen3 and ARM boards are now defined by fcntl.h. -See SdFatConfig.h for options. - -Support for particle Gen3 devices. - -New cluster allocation algorithm. - -Please read changes.txt and the html documentation in the extras folder for more information. - -Please report problems as issues. - -A number of configuration options can be set by editing SdFatConfig.h -define macros. See the html documentation for details - -Please read the html documentation for this library. Start with -html/index.html and read the Main Page. Next go to the Classes tab and -read the documentation for the classes SdFat, SdFatEX, SdBaseFile, -SdFile, File, StdioStream, ifstream, ofstream, and others. - -Please continue by reading the html documentation in SdFat/extras/html - -Updated 28 Dec 2018 diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/AnalogLogger/AnalogLogger.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/AnalogLogger/AnalogLogger.ino deleted file mode 100644 index a9e089aa..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/AnalogLogger/AnalogLogger.ino +++ /dev/null @@ -1,199 +0,0 @@ -// A simple data logger for the Arduino analog pins with optional DS1307 -// uses RTClib from https://github.com/adafruit/RTClib -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -using namespace sdfat; - -#define SD_CHIP_SELECT SS // SD chip select pin -#define USE_DS1307 0 // set nonzero to use DS1307 RTC -#define LOG_INTERVAL 1000 // mills between entries -#define SENSOR_COUNT 3 // number of analog pins to log -#define ECHO_TO_SERIAL 1 // echo data to serial port if nonzero -#define WAIT_TO_START 1 // Wait for serial input in setup() -#define ADC_DELAY 10 // ADC delay for high impedence sensors - -// file system object -SdFat sd; - -// text file for logging -ofstream logfile; - -// Serial print stream -ArduinoOutStream cout(Serial); - -// buffer to format data - makes it eaiser to echo to Serial -char buf[80]; -//------------------------------------------------------------------------------ -#if SENSOR_COUNT > 6 -#error SENSOR_COUNT too large -#endif // SENSOR_COUNT -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -#if USE_DS1307 -// use RTClib from Adafruit -// https://github.com/adafruit/RTClib - -// The Arduino IDE has a bug that causes Wire and RTClib to be loaded even -// if USE_DS1307 is false. - -#error remove this line and uncomment the next two lines. -//#include -//#include -RTC_DS1307 RTC; // define the Real Time Clock object -//------------------------------------------------------------------------------ -// call back for file timestamps -void dateTime(uint16_t* date, uint16_t* time) { - DateTime now = RTC.now(); - - // return date using FAT_DATE macro to format fields - *date = FAT_DATE(now.year(), now.month(), now.day()); - - // return time using FAT_TIME macro to format fields - *time = FAT_TIME(now.hour(), now.minute(), now.second()); -} -//------------------------------------------------------------------------------ -// format date/time -ostream& operator << (ostream& os, DateTime& dt) { - os << dt.year() << '/' << int(dt.month()) << '/' << int(dt.day()) << ','; - os << int(dt.hour()) << ':' << setfill('0') << setw(2) << int(dt.minute()); - os << ':' << setw(2) << int(dt.second()) << setfill(' '); - return os; -} -#endif // USE_DS1307 -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial. - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << endl << F("FreeStack: ") << FreeStack() << endl; - -#if WAIT_TO_START - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Discard input. - do { - delay(10); - } while(Serial.available() && Serial.read() >= 0); -#endif // WAIT_TO_START - -#if USE_DS1307 - // connect to RTC - Wire.begin(); - if (!RTC.begin()) { - error("RTC failed"); - } - - // set date time callback function - SdFile::dateTimeCallback(dateTime); - DateTime now = RTC.now(); - cout << now << endl; -#endif // USE_DS1307 - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CHIP_SELECT, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // create a new file in root, the current working directory - char name[] = "logger00.csv"; - - for (uint8_t i = 0; i < 100; i++) { - name[6] = i/10 + '0'; - name[7] = i%10 + '0'; - if (sd.exists(name)) { - continue; - } - logfile.open(name); - break; - } - if (!logfile.is_open()) { - error("file.open"); - } - - cout << F("Logging to: ") << name << endl; - cout << F("Type any character to stop\n\n"); - - // format header in buffer - obufstream bout(buf, sizeof(buf)); - - bout << F("millis"); - -#if USE_DS1307 - bout << F(",date,time"); -#endif // USE_DS1307 - - for (uint8_t i = 0; i < SENSOR_COUNT; i++) { - bout << F(",sens") << int(i); - } - logfile << buf << endl; - -#if ECHO_TO_SERIAL - cout << buf << endl; -#endif // ECHO_TO_SERIAL -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t m; - - // wait for time to be a multiple of interval - do { - m = millis(); - } while (m % LOG_INTERVAL); - - // use buffer stream to format line - obufstream bout(buf, sizeof(buf)); - - // start with time in millis - bout << m; - -#if USE_DS1307 - DateTime now = RTC.now(); - bout << ',' << now; -#endif // USE_DS1307 - - // read analog pins and format data - for (uint8_t ia = 0; ia < SENSOR_COUNT; ia++) { -#if ADC_DELAY - analogRead(ia); - delay(ADC_DELAY); -#endif // ADC_DELAY - bout << ',' << analogRead(ia); - } - bout << endl; - - // log data and flush to SD - logfile << buf << flush; - - // check for error - if (!logfile) { - error("write data failed"); - } - -#if ECHO_TO_SERIAL - cout << buf; -#endif // ECHO_TO_SERIAL - - // don't log two points in the same millis - if (m == millis()) { - delay(1); - } - - if (!Serial.available()) { - return; - } - logfile.close(); - cout << F("Done!"); - SysCall::halt(); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/BaseExtCaseTest/BaseExtCaseTest.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/BaseExtCaseTest/BaseExtCaseTest.ino deleted file mode 100644 index 51cd28f7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/BaseExtCaseTest/BaseExtCaseTest.ino +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Program to test Short File Name character case flags. - */ -#include -#include "SdFat.h" - -using namespace sdfat; - -const uint8_t chipSelect = SS; - -SdFat sd; - -SdFile file; -const char* name[] = { - "low.low", "low.Mix", "low.UP", - "Mix.low", "Mix.Mix", "Mix.UP", - "UP.low", "UP.Mix", "UP.UP" -}; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - Serial.println("begin failed"); - return; - } - for (uint8_t i = 0; i < 9; i++) { - sd.remove(name[i]); - if (!file.open(name[i], O_RDWR | O_CREAT | O_EXCL)) { - sd.errorHalt(name[i]); - } - file.println(name[i]); - - file.close(); - } - sd.ls(LS_DATE|LS_SIZE); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/HelloWorld/HelloWorld.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/HelloWorld/HelloWorld.ino deleted file mode 100644 index b7d58a29..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/HelloWorld/HelloWorld.ino +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// create a serial output stream -ArduinoOutStream cout(Serial); - -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(2000); - - cout << "Hello, World!\n"; -} - -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/MiniSerial/MiniSerial.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/MiniSerial/MiniSerial.ino deleted file mode 100644 index 541dd5a4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/MiniSerial/MiniSerial.ino +++ /dev/null @@ -1,31 +0,0 @@ -// This example illustrates use of SdFat's -// minimal unbuffered AVR Serial support. -// -// This is useful for debug and saves RAM -// Will not work on Due, Leonardo, or Teensy - -#include -#include "SdFat.h" -#include "FreeStack.h" -#ifdef UDR0 // Must be AVR with serial port zero. -#include "MinimumSerial.h" - -using namespace sdfat; - -MinimumSerial MiniSerial; - -void setup() { - MiniSerial.begin(9600); - MiniSerial.println(FreeStack()); -} -void loop() { - int c; - MiniSerial.println(F("Type any Character")); - while ((c = MiniSerial.read()) < 0) {} - MiniSerial.print(F("Read: ")); - MiniSerial.println((char)c); - while (MiniSerial.read() >= 0) {} -} -#else // UDR0 -#error no AVR serial port 0 -#endif // UDR0 diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino deleted file mode 100644 index bf1c60fb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino +++ /dev/null @@ -1,127 +0,0 @@ -/* - * This program is a simple Print benchmark. - */ -#include -#include - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// number of lines to print -const uint16_t N_PRINT = 20000; - - -// test file -File file; - -//------------------------------------------------------------------------------ -void error(const char* s) { - Serial.println(s); - while (1) { - yield(); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F() stores strings in flash to save RAM - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - yield(); - } - - // initialize the SD card - if (!SD.begin(chipSelect)) { - error("begin"); - } - - Serial.println(F("Starting print test. Please wait.\n")); - - // do write test - for (int test = 0; test < 2; test++) { - file = SD.open("bench.txt", FILE_WRITE); - - if (!file) { - error("open failed"); - } - switch(test) { - case 0: - Serial.println(F("Test of println(uint16_t)")); - break; - - case 1: - Serial.println(F("Test of println(double)")); - break; - } - maxLatency = 0; - minLatency = 999999; - totalLatency = 0; - uint32_t t = millis(); - for (uint16_t i = 0; i < N_PRINT; i++) { - uint32_t m = micros(); - - switch(test) { - case 0: - file.println(i); - break; - - case 1: - file.println((double)0.01*i); - break; - } - - if (file.getWriteError()) { - error("write failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - } - file.flush(); - t = millis() - t; - double s = file.size(); - Serial.print(F("Time ")); - Serial.print(0.001*t); - Serial.println(F(" sec")); - Serial.print(F("File size ")); - Serial.print(0.001*s); - Serial.print(F(" KB\n")); - Serial.print(F("Write ")); - Serial.print(s/t); - Serial.print(F(" KB/sec\n")); - Serial.print(F("Maximum latency: ")); - Serial.print(maxLatency); - Serial.print(F(" usec, Minimum Latency: ")); - Serial.print(minLatency); - Serial.print(F(" usec, Avg Latency: ")); - Serial.print(totalLatency/N_PRINT); - Serial.println(F(" usec\n")); - SD.remove("bench.txt"); - } - file.close(); - Serial.println(F("Done!\n")); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/SD_Size/SD_Size.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/SD_Size/SD_Size.ino deleted file mode 100644 index 906bf28b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/SD_Size/SD_Size.ino +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Program to compare size of Arduino SD library with SdFat. - * See SdFatSize.ino for SdFat program. - */ -#include -#include - -using namespace sdfat; - -File file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - - if (!SD.begin()) { - Serial.println("begin failed"); - return; - } - file = SD.open("TEST_SD.TXT", FILE_WRITE); - - file.println("Hello"); - - file.close(); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/SdFatSize/SdFatSize.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/SdFatSize/SdFatSize.ino deleted file mode 100644 index 11209184..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/SdFatSize/SdFatSize.ino +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Program to compare size of SdFat with Arduino SD library. - * See SD_Size.ino for Arduino SD program. - * - */ -#include -#include "SdFat.h" - -using namespace sdfat; - -SdFat sd; - -SdFile file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - if (!sd.begin()) { - Serial.println("begin failed"); - return; - } - file.open("SizeTest.txt", O_RDWR | O_CREAT | O_AT_END); - - file.println("Hello"); - - file.close(); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/StreamParseInt/StreamParseInt.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/StreamParseInt/StreamParseInt.ino deleted file mode 100644 index c2069738..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/StreamParseInt/StreamParseInt.ino +++ /dev/null @@ -1,47 +0,0 @@ -// Simple demo of the Stream parsInt() member function. -#include -// The next two lines replace #include . -#include "SdFat.h" - -using namespace sdfat; - -SdFat SD; - -// SD card chip select pin - Modify the value of csPin for your SD module. -const uint8_t csPin = SS; - -File file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial. - while(!Serial) { - SysCall::yield(); - } - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize the SD. - if (!SD.begin(csPin)) { - Serial.println(F("begin error")); - return; - } - // Create and open the file. Use flag to truncate an existing file. - file = SD.open("stream.txt", O_RDWR|O_CREAT|O_TRUNC); - if (!file) { - Serial.println(F("open error")); - return; - } - // Write a test number to the file. - file.println("12345"); - - // Rewind the file and read the number with parseInt(). - file.seek(0); - int i = file.parseInt(); - Serial.print(F("parseInt: ")); - Serial.println(i); - file.close(); -} - -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/append/append.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/append/append.ino deleted file mode 100644 index 2a631ab8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/append/append.ino +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Append Example - * - * This program shows how to use open for append. - * The program will append 100 line each time it opens the file. - * The program will open and close the file 100 times. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// create Serial stream -ArduinoOutStream cout(Serial); - -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - // filename for this example - char name[] = "append.txt"; - - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << endl << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - cout << F("Appending to: ") << name; - - for (uint8_t i = 0; i < 100; i++) { - // open stream for append - ofstream sdout(name, ios::out | ios::app); - if (!sdout) { - error("open failed"); - } - - // append 100 lines to the file - for (uint8_t j = 0; j < 100; j++) { - // use int() so byte will print as decimal number - sdout << "line " << int(j) << " of pass " << int(i); - sdout << " millis = " << millis() << endl; - } - // close the stream - sdout.close(); - - if (!sdout) { - error("append data failed"); - } - - // output progress indicator - if (i % 25 == 0) { - cout << endl; - } - cout << '.'; - } - cout << endl << "Done" << endl; -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/average/average.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/average/average.ino deleted file mode 100644 index 861cca2e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/average/average.ino +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Calculate the sum and average of a list of floating point numbers - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// object for the SD file system -SdFat sd; - -// define a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void writeTestFile() { - // open the output file - ofstream sdout("AvgTest.txt"); - - // write a series of float numbers - for (int16_t i = -1001; i < 2000; i += 13) { - sdout << 0.1 * i << endl; - } - if (!sdout) { - sd.errorHalt("sdout failed"); - } - - sdout.close(); -} -//------------------------------------------------------------------------------ -void calcAverage() { - uint16_t n = 0; // count of input numbers - double num; // current input number - double sum = 0; // sum of input numbers - - // open the input file - ifstream sdin("AvgTest.txt"); - - // check for an open failure - if (!sdin) { - sd.errorHalt("sdin failed"); - } - - // read and sum the numbers - while (sdin >> num) { - n++; - sum += num; - } - - // print the results - cout << "sum of " << n << " numbers = " << sum << endl; - cout << "average = " << sum/n << endl; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // write the test file - writeTestFile(); - - // read the test file and calculate the average - calcAverage(); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/benchSD/benchSD.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/benchSD/benchSD.ino deleted file mode 100644 index 9ca6d15b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/benchSD/benchSD.ino +++ /dev/null @@ -1,151 +0,0 @@ -/* - * This program is a simple binary write/read benchmark - * for the standard Arduino SD.h library. - */ -#include -#include - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -#define FILE_SIZE_MB 5 -#define FILE_SIZE (1000000UL*FILE_SIZE_MB) -#define BUF_SIZE 100 - -uint8_t buf[BUF_SIZE]; - -// test file -File file; - -//------------------------------------------------------------------------------ -void error(const char* s) { - Serial.println(s); - while (1) { - yield(); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Discard any input. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F() stores strings in flash to save RAM - Serial.println(F("Type any character to start")); - - while (!Serial.available()) { - yield(); - } - if (!SD.begin(chipSelect)) { - error("begin"); - } - - // open or create file - truncate existing file. - file = SD.open("Bench.dat", O_RDWR | O_TRUNC | O_CREAT); - if (!file) { - error("open failed"); - } - - // fill buf with known data - for (uint16_t i = 0; i < (BUF_SIZE-2); i++) { - buf[i] = 'A' + (i % 26); - } - buf[BUF_SIZE-2] = '\r'; - buf[BUF_SIZE-1] = '\n'; - - Serial.print(F("File size ")); - Serial.print(FILE_SIZE_MB); - Serial.println(F("MB")); - Serial.print(F("Buffer size ")); - Serial.print(BUF_SIZE); - Serial.println(F(" bytes")); - Serial.println(F("Starting write test. Please wait up to a minute")); - - // do write test - uint32_t n = FILE_SIZE/sizeof(buf); - maxLatency = 0; - minLatency = 999999; - totalLatency = 0; - uint32_t t = millis(); - for (uint32_t i = 0; i < n; i++) { - uint32_t m = micros(); - if (file.write(buf, sizeof(buf)) != sizeof(buf)) { - error("write failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - } - file.flush(); - t = millis() - t; - double s = file.size(); - Serial.print(F("Write ")); - Serial.print(s/t); - Serial.print(F(" KB/sec\n")); - Serial.print(F("Maximum latency: ")); - Serial.print(maxLatency); - Serial.print(F(" usec, Minimum Latency: ")); - Serial.print(minLatency); - Serial.print(F(" usec, Avg Latency: ")); - Serial.print(totalLatency/n); - Serial.print(F(" usec\n\n")); - Serial.println(F("Starting read test. Please wait up to a minute")); - // do read test - file.seek(0); - maxLatency = 0; - minLatency = 99999; - totalLatency = 0; - t = millis(); - for (uint32_t i = 0; i < n; i++) { - buf[BUF_SIZE-1] = 0; - uint32_t m = micros(); - if (file.read(buf, sizeof(buf)) != sizeof(buf)) { - error("read failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - if (buf[BUF_SIZE-1] != '\n') { - error("data check"); - } - } - t = millis() - t; - Serial.print(F("Read ")); - Serial.print(s/t); - Serial.print(F(" KB/sec\n")); - Serial.print(F("Maximum latency: ")); - Serial.print(maxLatency); - Serial.print(F(" usec, Minimum Latency: ")); - Serial.print(minLatency); - Serial.print(F(" usec, Avg Latency: ")); - Serial.print(totalLatency/n); - Serial.print(F(" usec\n\n")); - Serial.print(F("Done\n\n")); - file.close(); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/bufstream/bufstream.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/bufstream/bufstream.ino deleted file mode 100644 index 631fe687..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/bufstream/bufstream.ino +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Use of ibufsteam to parse a line and obufstream to format a line - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// create a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void setup() { - char buf[20]; // buffer for formatted line - int i, j, k; // values from parsed line - - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(2000); - - // initialize input string - ibufstream bin("123 456 789"); - - // parse the string "123 456 789" - bin >> i >> j >> k; - - // initialize output buffer - obufstream bout(buf, sizeof(buf)); - - // format the output string - bout << k << ',' << j << ',' << i << endl; - - // write the string to serial - cout << buf; -} - -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/cin_cout/cin_cout.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/cin_cout/cin_cout.ino deleted file mode 100644 index dc87f570..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/cin_cout/cin_cout.ino +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Demo of ArduinoInStream and ArduinoOutStream - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// create serial output stream -ArduinoOutStream cout(Serial); - -// input line buffer -char cinBuf[40]; - -// create serial input stream -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - int32_t n = 0; - - cout << "\nenter an integer\n"; - - cin.readline(); - - if (cin >> n) { - cout << "The number is: " << n; - } else { - // will fail if no digits or not in range [-2147483648, 2147483647] - cout << "Invalid input: " << cinBuf; - } - cout << endl; -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/eventlog/eventlog.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/eventlog/eventlog.ino deleted file mode 100644 index 372cac0f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/eventlog/eventlog.ino +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Append a line to a file - demo of pathnames and streams - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// define a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -/* - * Append a line to logfile.txt - */ -void logEvent(const char *msg) { - // create dir if needed - sd.mkdir("logs/2014/Jan"); - - // create or open a file for append - ofstream sdlog("logs/2014/Jan/logfile.txt", ios::out | ios::app); - - // append a line to the file - sdlog << msg << endl; - - // check for errors - if (!sdlog) { - sd.errorHalt("append failed"); - } - - sdlog.close(); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - delay(400); // catch Due reset problem - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // append a line to the logfile - logEvent("Another line for the logfile"); - - cout << F("Done - check /logs/2014/Jan/logfile.txt on the SD") << endl; -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/fgetsRewrite/fgetsRewrite.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/fgetsRewrite/fgetsRewrite.ino deleted file mode 100644 index 869ba4e3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/fgetsRewrite/fgetsRewrite.ino +++ /dev/null @@ -1,113 +0,0 @@ -// Demo of rewriting a line read by fgets -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD card chip select pin -const uint8_t chipSelect = SS; - -// file system -SdFat sd; - -// print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash memory -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void demoFgets() { - char line[25]; - int c; - uint32_t pos; - - // open test file - SdFile rdfile("fgets.txt", O_RDWR); - - // check for open error - if (!rdfile.isOpen()) { - error("demoFgets"); - } - - // list file - cout << F("-----Before Rewrite\r\n"); - while ((c = rdfile.read()) >= 0) { - Serial.write(c); - } - - rdfile.rewind(); - // read lines from the file to get position - while (1) { - pos = rdfile.curPosition(); - if (rdfile.fgets(line, sizeof(line)) < 0) { - error("Line not found"); - } - // find line that contains "Line C" - if (strstr(line, "Line C")) { - break; - } - } - - // rewrite line with 'C' - if (!rdfile.seekSet(pos)) { - error("seekSet"); - } - rdfile.println("Line R"); - rdfile.rewind(); - - // list file - cout << F("\r\n-----After Rewrite\r\n"); - while ((c = rdfile.read()) >= 0) { - Serial.write(c); - } - - // close so rewrite is not lost - rdfile.close(); -} -//------------------------------------------------------------------------------ -void makeTestFile() { - // create or open test file - SdFile wrfile("fgets.txt", O_WRONLY | O_CREAT | O_TRUNC); - - // check for open error - if (!wrfile.isOpen()) { - error("MakeTestFile"); - } - - // write test file - wrfile.print(F( - "Line A\r\n" - "Line B\r\n" - "Line C\r\n" - "Line D\r\n" - "Line E\r\n" - )); - wrfile.close(); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - makeTestFile(); - - demoFgets(); - - cout << F("\nDone\n"); -} -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/readlog/readlog.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/readlog/readlog.ino deleted file mode 100644 index be8df402..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/readlog/readlog.ino +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Read the logfile created by the eventlog.ino example. - * Demo of pathnames and working directories - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// define a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void setup() { - int c; - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // set current working directory - if (!sd.chdir("logs/2014/Jan/")) { - sd.errorHalt("chdir failed. Did you run eventlog.ino?"); - } - // open file in current working directory - ifstream file("logfile.txt"); - - if (!file.is_open()) { - sd.errorHalt("open failed"); - } - - // copy the file to Serial - while ((c = file.get()) >= 0) { - cout << (char)c; - } - - cout << "Done" << endl; -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/readme.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/readme.txt deleted file mode 100644 index fe0742e2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/#attic/readme.txt +++ /dev/null @@ -1,34 +0,0 @@ -Old and debug examples. - -AnalogLogger - A simple data logger for one or more analog pins. - -append - This sketch creates a large file by successive - open/write/close operations. - -average - A demonstration of parsing floating point numbers. - -BaseExtCaseTest - Long file name test. - -benchSD - A read/write benchmark for the standard Arduino SD.h library. - -bufstream - ibufsteam to parse a line and obufstream to format a line. - -cin_cout - Demo of ArduinoInStream and ArduinoOutStream. - -eventlog - Append a line to a file - demo of pathnames and streams. - -fgetsRewrite - Demo of rewriting a line read by fgets. - -HelloWorld - Create a serial output stream. - -MiniSerial - SdFat minimal serial support for debug. - -PrintBenchmarkSD - Bench mark SD.h print. - -readlog - Read file. Demo of pathnames and current working directory. - -SD_Size - Determine flash used by SD.h example. - -SdFatSize - Determine flash used by SdFat. - -StreamParseInt - Simple demo of the Stream parsInt() member function. diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/AnalogBinLogger/AnalogBinLogger.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/AnalogBinLogger/AnalogBinLogger.h deleted file mode 100644 index 35a34e54..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/AnalogBinLogger/AnalogBinLogger.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef AnalogBinLogger_h -#define AnalogBinLogger_h -//------------------------------------------------------------------------------ -// First block of file. -struct metadata_t { - unsigned long adcFrequency; // ADC clock frequency - unsigned long cpuFrequency; // CPU clock frequency - unsigned long sampleInterval; // Sample interval in CPU cycles. - unsigned long recordEightBits; // Size of ADC values, nonzero for 8-bits. - unsigned long pinCount; // Number of analog pins in a sample. - unsigned long pinNumber[123]; // List of pin numbers in a sample. -}; -//------------------------------------------------------------------------------ -// Data block for 8-bit ADC mode. -const size_t DATA_DIM8 = 508; -struct block8_t { - unsigned short count; // count of data values - unsigned short overrun; // count of overruns since last block - unsigned char data[DATA_DIM8]; -}; -//------------------------------------------------------------------------------ -// Data block for 10-bit ADC mode. -const size_t DATA_DIM16 = 254; -struct block16_t { - unsigned short count; // count of data values - unsigned short overrun; // count of overruns since last block - unsigned short data[DATA_DIM16]; -}; -//------------------------------------------------------------------------------ -// Data block for PC use -struct adcdata_t { - unsigned short count; // count of data values - unsigned short overrun; // count of overruns since last block - union { - unsigned char u8[DATA_DIM8]; - unsigned short u16[DATA_DIM16]; - } data; -}; -#endif // AnalogBinLogger_h \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/AnalogBinLogger/AnalogBinLogger.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/AnalogBinLogger/AnalogBinLogger.ino deleted file mode 100644 index 8ee29a00..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/AnalogBinLogger/AnalogBinLogger.ino +++ /dev/null @@ -1,829 +0,0 @@ -/** - * This program logs data from the Arduino ADC to a binary file. - * - * Samples are logged at regular intervals. Each Sample consists of the ADC - * values for the analog pins defined in the PIN_LIST array. The pins numbers - * may be in any order. - * - * Edit the configuration constants below to set the sample pins, sample rate, - * and other configuration values. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 13 512 byte buffers will be used. - * - * Each 512 byte data block in the file has a four byte header followed by up - * to 508 bytes of data. (508 values in 8-bit mode or 254 values in 10-bit mode) - * Each block contains an integral number of samples with unused space at the - * end of the block. - * - * Data is written to the file using a SD multiple block write command. - */ -#ifdef __AVR__ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "AnalogBinLogger.h" - -using namespace sdfat; - -//------------------------------------------------------------------------------ -// Analog pin number list for a sample. Pins may be in any order and pin -// numbers may be repeated. -const uint8_t PIN_LIST[] = {0, 1, 2, 3, 4}; -//------------------------------------------------------------------------------ -// Sample rate in samples per second. -const float SAMPLE_RATE = 5000; // Must be 0.25 or greater. - -// The interval between samples in seconds, SAMPLE_INTERVAL, may be set to a -// constant instead of being calculated from SAMPLE_RATE. SAMPLE_RATE is not -// used in the code below. For example, setting SAMPLE_INTERVAL = 2.0e-4 -// will result in a 200 microsecond sample interval. -const float SAMPLE_INTERVAL = 1.0/SAMPLE_RATE; - -// Setting ROUND_SAMPLE_INTERVAL non-zero will cause the sample interval to -// be rounded to a a multiple of the ADC clock period and will reduce sample -// time jitter. -#define ROUND_SAMPLE_INTERVAL 1 -//------------------------------------------------------------------------------ -// ADC clock rate. -// The ADC clock rate is normally calculated from the pin count and sample -// interval. The calculation attempts to use the lowest possible ADC clock -// rate. -// -// You can select an ADC clock rate by defining the symbol ADC_PRESCALER to -// one of these values. You must choose an appropriate ADC clock rate for -// your sample interval. -// #define ADC_PRESCALER 7 // F_CPU/128 125 kHz on an Uno -// #define ADC_PRESCALER 6 // F_CPU/64 250 kHz on an Uno -// #define ADC_PRESCALER 5 // F_CPU/32 500 kHz on an Uno -// #define ADC_PRESCALER 4 // F_CPU/16 1000 kHz on an Uno -// #define ADC_PRESCALER 3 // F_CPU/8 2000 kHz on an Uno (8-bit mode only) -//------------------------------------------------------------------------------ -// Reference voltage. See the processor data-sheet for reference details. -// uint8_t const ADC_REF = 0; // External Reference AREF pin. -uint8_t const ADC_REF = (1 << REFS0); // Vcc Reference. -// uint8_t const ADC_REF = (1 << REFS1); // Internal 1.1 (only 644 1284P Mega) -// uint8_t const ADC_REF = (1 << REFS1) | (1 << REFS0); // Internal 1.1 or 2.56 -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; - -// log file base name. Must be six characters or less. -#define FILE_BASE_NAME "analog" - -// Set RECORD_EIGHT_BITS non-zero to record only the high 8-bits of the ADC. -#define RECORD_EIGHT_BITS 0 -//------------------------------------------------------------------------------ -// Pin definitions. -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for SD write -// overrun errors and logging continues. -const int8_t ERROR_LED_PIN = 3; - -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT additional -// buffers. QUEUE_DIM must be a power of two larger than -//(BUFFER_BLOCK_COUNT + 1). -// -#if RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 1; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 4; // Must be a power of two! -// -#elif RAMEND < 0X20FF -// Use total of five 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 8; // Must be a power of two! -// -#elif RAMEND < 0X40FF -// Use total of 13 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 16; // Must be a power of two! -// -#else // RAMEND -// Use total of 29 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 28; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 32; // Must be a power of two! -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME "tmp_log.bin" - -// Size of file base name. Must not be larger than six. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; - -// Number of analog pins to log. -const uint8_t PIN_COUNT = sizeof(PIN_LIST)/sizeof(PIN_LIST[0]); - -// Minimum ADC clock cycles per sample interval -const uint16_t MIN_ADC_CYCLES = 15; - -// Extra cpu cycles to setup ADC with more than one pin per sample. -const uint16_t ISR_SETUP_ADC = PIN_COUNT > 1 ? 100 : 0; - -// Maximum cycles for timer0 system interrupt, millis, micros. -const uint16_t ISR_TIMER0 = 160; -//============================================================================== -SdFat sd; - -SdBaseFile binFile; - -char binName[13] = FILE_BASE_NAME "00.bin"; - -#if RECORD_EIGHT_BITS -const size_t SAMPLES_PER_BLOCK = DATA_DIM8/PIN_COUNT; -typedef block8_t block_t; -#else // RECORD_EIGHT_BITS -const size_t SAMPLES_PER_BLOCK = DATA_DIM16/PIN_COUNT; -typedef block16_t block_t; -#endif // RECORD_EIGHT_BITS - -block_t* emptyQueue[QUEUE_DIM]; -uint8_t emptyHead; -uint8_t emptyTail; - -block_t* fullQueue[QUEUE_DIM]; -volatile uint8_t fullHead; // volatile insures non-interrupt code sees changes. -uint8_t fullTail; - -// queueNext assumes QUEUE_DIM is a power of two -inline uint8_t queueNext(uint8_t ht) { - return (ht + 1) & (QUEUE_DIM -1); -} -//============================================================================== -// Interrupt Service Routines - -// Pointer to current buffer. -block_t* isrBuf; - -// Need new buffer if true. -bool isrBufNeeded = true; - -// overrun count -uint16_t isrOver = 0; - -// ADC configuration for each pin. -uint8_t adcmux[PIN_COUNT]; -uint8_t adcsra[PIN_COUNT]; -uint8_t adcsrb[PIN_COUNT]; -uint8_t adcindex = 1; - -// Insure no timer events are missed. -volatile bool timerError = false; -volatile bool timerFlag = false; -//------------------------------------------------------------------------------ -// ADC done interrupt. -ISR(ADC_vect) { - // Read ADC data. -#if RECORD_EIGHT_BITS - uint8_t d = ADCH; -#else // RECORD_EIGHT_BITS - // This will access ADCL first. - uint16_t d = ADC; -#endif // RECORD_EIGHT_BITS - - if (isrBufNeeded && emptyHead == emptyTail) { - // no buffers - count overrun - if (isrOver < 0XFFFF) { - isrOver++; - } - - // Avoid missed timer error. - timerFlag = false; - return; - } - // Start ADC - if (PIN_COUNT > 1) { - ADMUX = adcmux[adcindex]; - ADCSRB = adcsrb[adcindex]; - ADCSRA = adcsra[adcindex]; - if (adcindex == 0) { - timerFlag = false; - } - adcindex = adcindex < (PIN_COUNT - 1) ? adcindex + 1 : 0; - } else { - timerFlag = false; - } - // Check for buffer needed. - if (isrBufNeeded) { - // Remove buffer from empty queue. - isrBuf = emptyQueue[emptyTail]; - emptyTail = queueNext(emptyTail); - isrBuf->count = 0; - isrBuf->overrun = isrOver; - isrBufNeeded = false; - } - // Store ADC data. - isrBuf->data[isrBuf->count++] = d; - - // Check for buffer full. - if (isrBuf->count >= PIN_COUNT*SAMPLES_PER_BLOCK) { - // Put buffer isrIn full queue. - uint8_t tmp = fullHead; // Avoid extra fetch of volatile fullHead. - fullQueue[tmp] = (block_t*)isrBuf; - fullHead = queueNext(tmp); - - // Set buffer needed and clear overruns. - isrBufNeeded = true; - isrOver = 0; - } -} -//------------------------------------------------------------------------------ -// timer1 interrupt to clear OCF1B -ISR(TIMER1_COMPB_vect) { - // Make sure ADC ISR responded to timer event. - if (timerFlag) { - timerError = true; - } - timerFlag = true; -} -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//============================================================================== -#if ADPS0 != 0 || ADPS1 != 1 || ADPS2 != 2 -#error unexpected ADC prescaler bits -#endif -//------------------------------------------------------------------------------ -// initialize ADC and timer1 -void adcInit(metadata_t* meta) { - uint8_t adps; // prescaler bits for ADCSRA - uint32_t ticks = F_CPU*SAMPLE_INTERVAL + 0.5; // Sample interval cpu cycles. - - if (ADC_REF & ~((1 << REFS0) | (1 << REFS1))) { - error("Invalid ADC reference"); - } -#ifdef ADC_PRESCALER - if (ADC_PRESCALER > 7 || ADC_PRESCALER < 2) { - error("Invalid ADC prescaler"); - } - adps = ADC_PRESCALER; -#else // ADC_PRESCALER - // Allow extra cpu cycles to change ADC settings if more than one pin. - int32_t adcCycles = (ticks - ISR_TIMER0)/PIN_COUNT - ISR_SETUP_ADC; - - for (adps = 7; adps > 0; adps--) { - if (adcCycles >= (MIN_ADC_CYCLES << adps)) { - break; - } - } -#endif // ADC_PRESCALER - meta->adcFrequency = F_CPU >> adps; - if (meta->adcFrequency > (RECORD_EIGHT_BITS ? 2000000 : 1000000)) { - error("Sample Rate Too High"); - } -#if ROUND_SAMPLE_INTERVAL - // Round so interval is multiple of ADC clock. - ticks += 1 << (adps - 1); - ticks >>= adps; - ticks <<= adps; -#endif // ROUND_SAMPLE_INTERVAL - - if (PIN_COUNT > sizeof(meta->pinNumber)/sizeof(meta->pinNumber[0])) { - error("Too many pins"); - } - meta->pinCount = PIN_COUNT; - meta->recordEightBits = RECORD_EIGHT_BITS; - - for (int i = 0; i < PIN_COUNT; i++) { - uint8_t pin = PIN_LIST[i]; - if (pin >= NUM_ANALOG_INPUTS) { - error("Invalid Analog pin number"); - } - meta->pinNumber[i] = pin; - - // Set ADC reference and low three bits of analog pin number. - adcmux[i] = (pin & 7) | ADC_REF; - if (RECORD_EIGHT_BITS) { - adcmux[i] |= 1 << ADLAR; - } - - // If this is the first pin, trigger on timer/counter 1 compare match B. - adcsrb[i] = i == 0 ? (1 << ADTS2) | (1 << ADTS0) : 0; -#ifdef MUX5 - if (pin > 7) { - adcsrb[i] |= (1 << MUX5); - } -#endif // MUX5 - adcsra[i] = (1 << ADEN) | (1 << ADIE) | adps; - adcsra[i] |= i == 0 ? 1 << ADATE : 1 << ADSC; - } - - // Setup timer1 - TCCR1A = 0; - uint8_t tshift; - if (ticks < 0X10000) { - // no prescale, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10); - tshift = 0; - } else if (ticks < 0X10000*8) { - // prescale 8, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11); - tshift = 3; - } else if (ticks < 0X10000*64) { - // prescale 64, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10); - tshift = 6; - } else if (ticks < 0X10000*256) { - // prescale 256, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12); - tshift = 8; - } else if (ticks < 0X10000*1024) { - // prescale 1024, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12) | (1 << CS10); - tshift = 10; - } else { - error("Sample Rate Too Slow"); - } - // divide by prescaler - ticks >>= tshift; - // set TOP for timer reset - ICR1 = ticks - 1; - // compare for ADC start - OCR1B = 0; - - // multiply by prescaler - ticks <<= tshift; - - // Sample interval in CPU clock ticks. - meta->sampleInterval = ticks; - meta->cpuFrequency = F_CPU; - float sampleRate = (float)meta->cpuFrequency/meta->sampleInterval; - Serial.print(F("Sample pins:")); - for (uint8_t i = 0; i < meta->pinCount; i++) { - Serial.print(' '); - Serial.print(meta->pinNumber[i], DEC); - } - Serial.println(); - Serial.print(F("ADC bits: ")); - Serial.println(meta->recordEightBits ? 8 : 10); - Serial.print(F("ADC clock kHz: ")); - Serial.println(meta->adcFrequency/1000); - Serial.print(F("Sample Rate: ")); - Serial.println(sampleRate); - Serial.print(F("Sample interval usec: ")); - Serial.println(1000000.0/sampleRate, 4); -} -//------------------------------------------------------------------------------ -// enable ADC and timer1 interrupts -void adcStart() { - // initialize ISR - isrBufNeeded = true; - isrOver = 0; - adcindex = 1; - - // Clear any pending interrupt. - ADCSRA |= 1 << ADIF; - - // Setup for first pin. - ADMUX = adcmux[0]; - ADCSRB = adcsrb[0]; - ADCSRA = adcsra[0]; - - // Enable timer1 interrupts. - timerError = false; - timerFlag = false; - TCNT1 = 0; - TIFR1 = 1 << OCF1B; - TIMSK1 = 1 << OCIE1B; -} -//------------------------------------------------------------------------------ -void adcStop() { - TIMSK1 = 0; - ADCSRA = 0; -} -//------------------------------------------------------------------------------ -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t buf; - metadata_t* pm; - uint32_t t0 = millis(); - char csvName[13]; - StdioStream csvStream; - - if (!binFile.isOpen()) { - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - if (binFile.read(&buf , 512) != 512) { - error("Read metadata failed"); - } - // Create a new csv file. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvStream.fopen(csvName, "w")) { - error("open csvStream failed"); - } - Serial.println(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - pm = (metadata_t*)&buf; - csvStream.print(F("Interval,")); - float intervalMicros = 1.0e6*pm->sampleInterval/(float)pm->cpuFrequency; - csvStream.print(intervalMicros, 4); - csvStream.println(F(",usec")); - for (uint8_t i = 0; i < pm->pinCount; i++) { - if (i) { - csvStream.putc(','); - } - csvStream.print(F("pin")); - csvStream.print(pm->pinNumber[i]); - } - csvStream.println(); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&buf, 512) == 512) { - if (buf.count == 0) { - break; - } - if (buf.overrun) { - csvStream.print(F("OVERRUN,")); - csvStream.println(buf.overrun); - } - for (uint16_t j = 0; j < buf.count; j += PIN_COUNT) { - for (uint16_t i = 0; i < PIN_COUNT; i++) { - if (i) { - csvStream.putc(','); - } - csvStream.print(buf.data[i + j]); - } - csvStream.println(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvStream.fclose(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t buf; - uint32_t bgnBlock, endBlock; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(F("No current binary file")); - return; - } - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Checking overrun errors - type any character to stop")); - if (binFile.read(&buf , 512) != 512) { - error("Read metadata failed"); - } - bn++; - while (binFile.read(&buf, 512) == 512) { - if (buf.count == 0) { - break; - } - if (buf.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(bgnBlock + bn); - Serial.print(','); - Serial.println(buf.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t buf; - if (!binFile.isOpen()) { - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - if (binFile.read(&buf , 512) != 512) { - error("Read metadata failed"); - } - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - while (!Serial.available() && binFile.read(&buf , 512) == 512) { - if (buf.count == 0) { - break; - } - if (buf.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(buf.overrun); - } - for (uint16_t i = 0; i < buf.count; i++) { - Serial.print(buf.data[i], DEC); - if ((i+1)%PIN_COUNT) { - Serial.print(','); - } else { - Serial.println(); - } - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -// max number of blocks to erase per erase call -uint32_t const ERASE_SIZE = 262144L; -void logData() { - uint32_t bgnBlock, endBlock; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT]; - - Serial.println(); - - // Initialize ADC and timer1. - adcInit((metadata_t*) &block[0]); - - // Find unused file name. - if (BASE_NAME_SIZE > 6) { - error("FILE_BASE_NAME too long"); - } - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file")); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("Creating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Use SdFat's internal buffer. - uint8_t* cache = (uint8_t*)sd.vol()->cacheClear(); - if (cache == 0) { - error("cacheClear failed"); - } - - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } - // Start a multiple block write. - if (!sd.card()->writeStart(bgnBlock, FILE_BLOCK_COUNT)) { - error("writeBegin failed"); - } - // Write metadata. - if (!sd.card()->writeData((uint8_t*)&block[0])) { - error("Write metadata failed"); - } - // Initialize queues. - emptyHead = emptyTail = 0; - fullHead = fullTail = 0; - - // Use SdFat buffer for one block. - emptyQueue[emptyHead] = (block_t*)cache; - emptyHead = queueNext(emptyHead); - - // Put rest of buffers in the empty queue. - for (uint8_t i = 0; i < BUFFER_BLOCK_COUNT; i++) { - emptyQueue[emptyHead] = &block[i]; - emptyHead = queueNext(emptyHead); - } - // Give SD time to prepare for big write. - delay(1000); - Serial.println(F("Logging - type any character to stop")); - // Wait for Serial Idle. - Serial.flush(); - delay(10); - uint32_t bn = 1; - uint32_t t0 = millis(); - uint32_t t1 = t0; - uint32_t overruns = 0; - uint32_t count = 0; - uint32_t maxLatency = 0; - - // Start logging interrupts. - adcStart(); - while (1) { - if (fullHead != fullTail) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - t1 = millis(); - if (usec > maxLatency) { - maxLatency = usec; - } - count += pBlock->count; - - // Add overruns and possibly light LED. - if (pBlock->overrun) { - overruns += pBlock->overrun; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } - } - // Move block to empty queue. - emptyQueue[emptyHead] = pBlock; - emptyHead = queueNext(emptyHead); - fullTail = queueNext(fullTail); - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop ISR calls. - adcStop(); - break; - } - } - if (timerError) { - error("Missed timer event - rate too high"); - } - if (Serial.available()) { - // Stop ISR calls. - adcStop(); - if (isrBuf != 0 && isrBuf->count >= PIN_COUNT) { - // Truncate to last complete sample. - isrBuf->count = PIN_COUNT*(isrBuf->count/PIN_COUNT); - // Put buffer in full queue. - fullQueue[fullHead] = isrBuf; - fullHead = queueNext(fullHead); - isrBuf = 0; - } - if (fullHead == fullTail) { - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Record time sec: ")); - Serial.println(0.001*(t1 - t0), 3); - Serial.print(F("Sample count: ")); - Serial.println(count/PIN_COUNT); - Serial.print(F("Samples/sec: ")); - Serial.println((1000.0/PIN_COUNT)*count/(t1-t0)); - Serial.print(F("Overruns: ")); - Serial.println(overruns); - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Read the first sample pin to init the ADC. - analogRead(PIN_LIST[0]); - - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(); - fatalBlink(); - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("r - record ADC data")); - - while(!Serial.available()) { - SysCall::yield(); - } - char c = tolower(Serial.read()); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'r') { - logData(); - } else { - Serial.println(F("Invalid entry")); - } -} -#else // __AVR__ -#error This program is only for AVR. -#endif // __AVR__ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/DirectoryFunctions/DirectoryFunctions.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/DirectoryFunctions/DirectoryFunctions.ino deleted file mode 100644 index ea3661f1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/DirectoryFunctions/DirectoryFunctions.ino +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Example use of chdir(), ls(), mkdir(), and rmdir(). - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD card chip select pin. -const uint8_t chipSelect = SS; -//------------------------------------------------------------------------------ - -// File system object. -SdFat sd; - -// Directory file. -SdFile root; - -// Use for file creation in folders. -SdFile file; - -// Create a Serial output stream. -ArduinoOutStream cout(Serial); - -// Buffer for Serial input. -char cinBuf[40]; - -// Create a serial input stream. -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//============================================================================== -// Error messages stored in flash. -#define error(msg) sd.errorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - - cout << F("Type any character to start\n"); - // Wait for input line and discard. - cin.readline(); - cout << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (sd.exists("Folder1") - || sd.exists("Folder1/file1.txt") - || sd.exists("Folder1/File2.txt")) { - error("Please remove existing Folder1, file1.txt, and File2.txt"); - } - - int rootFileCount = 0; - if (!root.open("/")) { - error("open root failed"); - } - while (file.openNext(&root, O_RDONLY)) { - if (!file.isHidden()) { - rootFileCount++; - } - file.close(); - if (rootFileCount > 10) { - error("Too many files in root. Please use an empty SD."); - } - } - if (rootFileCount) { - cout << F("\nPlease use an empty SD for best results.\n\n"); - delay(1000); - } - // Create a new folder. - if (!sd.mkdir("Folder1")) { - error("Create Folder1 failed"); - } - cout << F("Created Folder1\n"); - - // Create a file in Folder1 using a path. - if (!file.open("Folder1/file1.txt", O_WRONLY | O_CREAT)) { - error("create Folder1/file1.txt failed"); - } - file.close(); - cout << F("Created Folder1/file1.txt\n"); - - // Change volume working directory to Folder1. - if (!sd.chdir("Folder1")) { - error("chdir failed for Folder1.\n"); - } - cout << F("chdir to Folder1\n"); - - // Create File2.txt in current directory. - if (!file.open("File2.txt", O_WRONLY | O_CREAT)) { - error("create File2.txt failed"); - } - file.close(); - cout << F("Created File2.txt in current directory\n"); - - cout << F("\nList of files on the SD.\n"); - sd.ls("/", LS_R); - - // Remove files from current directory. - if (!sd.remove("file1.txt") || !sd.remove("File2.txt")) { - error("remove failed"); - } - cout << F("\nfile1.txt and File2.txt removed.\n"); - - // Change current directory to root. - if (!sd.chdir()) { - error("chdir to root failed.\n"); - } - - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - - // Remove Folder1. - if (!sd.rmdir("Folder1")) { - error("rmdir for Folder1 failed\n"); - } - - cout << F("\nFolder1 removed.\n"); - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - cout << F("Done!\n"); -} -//------------------------------------------------------------------------------ -// Nothing happens in loop. -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/LongFileName.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/LongFileName.ino deleted file mode 100644 index 0d17a23b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/LongFileName.ino +++ /dev/null @@ -1,104 +0,0 @@ -// Example use of lfnOpenNext and open by index. -// You can use test files located in -// SdFat/examples/LongFileName/testFiles. -#include -#include "SdFat.h" -#include "FreeStack.h" - -using namespace sdfat; - -// SD card chip select pin. -const uint8_t SD_CS_PIN = SS; - -SdFat sd; -SdFile file; -SdFile dirFile; - -// Number of files found. -uint16_t n = 0; - -// Max of ten files since files are selected with a single digit. -const uint16_t nMax = 10; - -// Position of file's directory entry. -uint16_t dirIndex[nMax]; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - while (!Serial) {} - delay(1000); - - // Print the location of some test files. - Serial.println(F("\r\n" - "You can use test files located in\r\n" - "SdFat/examples/LongFileName/testFiles")); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(); - - // List files in root directory. - if (!dirFile.open("/", O_RDONLY)) { - sd.errorHalt("open root failed"); - } - while (n < nMax && file.openNext(&dirFile, O_RDONLY)) { - - // Skip directories and hidden files. - if (!file.isSubDir() && !file.isHidden()) { - - // Save dirIndex of file in directory. - dirIndex[n] = file.dirIndex(); - - // Print the file number and name. - Serial.print(n++); - Serial.write(' '); - file.printName(&Serial); - Serial.println(); - } - file.close(); - } -} -//------------------------------------------------------------------------------ -void loop() { - int c; - - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.print(F("\r\nEnter File Number: ")); - - while (!Serial.available()) { - SysCall::yield(); - } - c = Serial.read(); - uint8_t i = c - '0'; - if (!isdigit(c) || i >= n) { - Serial.println(F("Invald number")); - return; - } - Serial.println(i); - if (!file.open(&dirFile, dirIndex[i], O_RDONLY)) { - sd.errorHalt(F("open")); - } - Serial.println(); - - char last = 0; - - // Copy up to 500 characters to Serial. - for (int k = 0; k < 500 && (c = file.read()) > 0; k++) { - Serial.write(last = (char)c); - } - // Add new line if missing from last line. - if (last != '\n') { - Serial.println(); - } - file.close(); - Serial.flush(); - delay(100); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/A long name can be 255 characters.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/A long name can be 255 characters.txt deleted file mode 100644 index 62c7a7b4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/A long name can be 255 characters.txt +++ /dev/null @@ -1,4 +0,0 @@ -This is "A long name can be 255 characters.txt" -This file has a typical Long File Name. - -The maximum length of a Long File Name is 255 characters. diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/LFN,NAME.TXT b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/LFN,NAME.TXT deleted file mode 100644 index 3fc38d6f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/LFN,NAME.TXT +++ /dev/null @@ -1 +0,0 @@ -LFN,NAME.TXT is not 8.3 since it has a comma. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/MIXCASE.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/MIXCASE.txt deleted file mode 100644 index ce661428..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/MIXCASE.txt +++ /dev/null @@ -1,5 +0,0 @@ -MIXCASE.txt does not have a Long File Name. - -Starting with NT, file names of this form, -have the basename and extension character case -encoded in two bits of the 8.3 directory entry. diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/Not_8_3.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/Not_8_3.txt deleted file mode 100644 index 701a34f7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/Not_8_3.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not_8_3.txt has a Long File Name -since the basename is mixed case. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/OK%83.TXT b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/OK%83.TXT deleted file mode 100644 index 6935e783..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/OK%83.TXT +++ /dev/null @@ -1 +0,0 @@ -OK%83.TXT is a valid 8.3 name. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/STD_8_3.TXT b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/STD_8_3.TXT deleted file mode 100644 index e0d2234b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/STD_8_3.TXT +++ /dev/null @@ -1 +0,0 @@ -STD_8_3.TXT - a vanilla 8.3 name. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/With Blank.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/With Blank.txt deleted file mode 100644 index ef37e070..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/With Blank.txt +++ /dev/null @@ -1,2 +0,0 @@ -With Blank.txt -Just another example of a Long File Name. diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/With.Two dots.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/With.Two dots.txt deleted file mode 100644 index 1739391c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/With.Two dots.txt +++ /dev/null @@ -1,2 +0,0 @@ -"With Two.dots.txt" -Lots of reasons this is a Long File Name. diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/lower.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/lower.txt deleted file mode 100644 index 43a6bd0b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/lower.txt +++ /dev/null @@ -1,5 +0,0 @@ -lower.txt does not have a Long File Name. - -Starting with NT, file names of this form, -have the basename and extension character case -encoded in two bits of the 8.3 directory entry. diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/mixed.TXT b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/mixed.TXT deleted file mode 100644 index 03d9bd0a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LongFileName/testFiles/mixed.TXT +++ /dev/null @@ -1,5 +0,0 @@ -mixed.TXT does not have a Long File Name. - -Starting with NT, file names of this form, -have the basename and extension character case -encoded in two bits of the 8.3 directory entry. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/LowLatencyLogger.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/LowLatencyLogger.ino deleted file mode 100644 index 752e75ae..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/LowLatencyLogger.ino +++ /dev/null @@ -1,658 +0,0 @@ -/** - * This program logs data to a binary file. Functions are included - * to convert the binary file to a csv text file. - * - * Samples are logged at regular intervals. The maximum logging rate - * depends on the quality of your SD card and the time required to - * read sensor data. This example has been tested at 500 Hz with - * good SD card on an Uno. 4000 HZ is possible on a Due. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 12 512 byte buffers will be used. - * - * Data is written to the file using a SD multiple block write command. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "UserTypes.h" - -#ifdef __AVR_ATmega328P__ -#include "MinimumSerial.h" -sdfat::MinimumSerial MinSerial; -#define Serial MinSerial -#endif // __AVR_ATmega328P__ - -using namespace sdfat; - -//============================================================================== -// Start of configuration constants. -//============================================================================== -// Abort run on an overrun. Data before the overrun will be saved. -#define ABORT_ON_OVERRUN 1 -//------------------------------------------------------------------------------ -//Interval between data records in microseconds. -const uint32_t LOG_INTERVAL_USEC = 2000; -//------------------------------------------------------------------------------ -// Set USE_SHARED_SPI non-zero for use of an SPI sensor. -// May not work for some cards. -#ifndef USE_SHARED_SPI -#define USE_SHARED_SPI 0 -#endif // USE_SHARED_SPI -//------------------------------------------------------------------------------ -// Pin definitions. -// -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for -// overrun errors and logging continues unless ABORT_ON_OVERRUN -// is non-zero. -#ifdef ERROR_LED_PIN -#undef ERROR_LED_PIN -#endif // ERROR_LED_PIN -const int8_t ERROR_LED_PIN = -1; -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; -// -// log file base name if not defined in UserTypes.h -#ifndef FILE_BASE_NAME -#define FILE_BASE_NAME "data" -#endif // FILE_BASE_NAME -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT-1 additional -// buffers. -// -#ifndef RAMEND -// Assume ARM. Use total of ten 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 10; -// -#elif RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 2; -// -#elif RAMEND < 0X20FF -// Use total of four 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// -#else // RAMEND -// Use total of 12 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME FILE_BASE_NAME "##.bin" - -// Size of file base name. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; -const uint8_t FILE_NAME_DIM = BASE_NAME_SIZE + 7; -char binName[FILE_NAME_DIM] = FILE_BASE_NAME "00.bin"; - -SdFat sd; - -SdBaseFile binFile; - -// Number of data records in a block. -const uint16_t DATA_DIM = (512 - 4)/sizeof(data_t); - -//Compute fill so block size is 512 bytes. FILL_DIM may be zero. -const uint16_t FILL_DIM = 512 - 4 - DATA_DIM*sizeof(data_t); - -struct block_t { - uint16_t count; - uint16_t overrun; - data_t data[DATA_DIM]; - uint8_t fill[FILL_DIM]; -}; -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(&Serial, F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - SysCall::yield(); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t block; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Checking overrun errors - type any character to stop")); - while (binFile.read(&block, 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(binFile.firstBlock() + bn); - Serial.print(','); - Serial.println(block.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//----------------------------------------------------------------------------- -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t block; - uint32_t t0 = millis(); - uint32_t syncCluster = 0; - SdFile csvFile; - char csvName[FILE_NAME_DIM]; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Create a new csvFile. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { - error("open csvFile failed"); - } - binFile.rewind(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - printHeader(&csvFile); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&block, 512) == 512) { - uint16_t i; - if (block.count == 0 || block.count > DATA_DIM) { - break; - } - if (block.overrun) { - csvFile.print(F("OVERRUN,")); - csvFile.println(block.overrun); - } - for (i = 0; i < block.count; i++) { - printData(&csvFile, &block.data[i]); - } - if (csvFile.curCluster() != syncCluster) { - csvFile.sync(); - syncCluster = csvFile.curCluster(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvFile.close(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//----------------------------------------------------------------------------- -void createBinFile() { - // max number of blocks to erase per erase call - const uint32_t ERASE_SIZE = 262144L; - uint32_t bgnBlock, endBlock; - - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file " TMP_FILE_NAME)); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("\nCreating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t block; - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - printHeader(&Serial); - while (!Serial.available() && binFile.read(&block , 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(block.overrun); - } - for (uint16_t i = 0; i < block.count; i++) { - printData(&Serial, &block.data[i]); - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -void logData() { - createBinFile(); - recordBinFile(); - renameBinFile(); -} -//------------------------------------------------------------------------------ -void openBinFile() { - char name[FILE_NAME_DIM]; - strcpy(name, binName); - Serial.println(F("\nEnter two digit version")); - Serial.write(name, BASE_NAME_SIZE); - for (int i = 0; i < 2; i++) { - while (!Serial.available()) { - SysCall::yield(); - } - char c = Serial.read(); - Serial.write(c); - if (c < '0' || c > '9') { - Serial.println(F("\nInvalid digit")); - return; - } - name[BASE_NAME_SIZE + i] = c; - } - Serial.println(&name[BASE_NAME_SIZE+2]); - if (!sd.exists(name)) { - Serial.println(F("File does not exist")); - return; - } - binFile.close(); - strcpy(binName, name); - if (!binFile.open(binName, O_RDONLY)) { - Serial.println(F("open failed")); - return; - } - Serial.println(F("File opened")); -} -//------------------------------------------------------------------------------ -void recordBinFile() { - const uint8_t QUEUE_DIM = BUFFER_BLOCK_COUNT + 1; - // Index of last queue location. - const uint8_t QUEUE_LAST = QUEUE_DIM - 1; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT - 1]; - - block_t* curBlock = 0; - - block_t* emptyStack[BUFFER_BLOCK_COUNT]; - uint8_t emptyTop; - uint8_t minTop; - - block_t* fullQueue[QUEUE_DIM]; - uint8_t fullHead = 0; - uint8_t fullTail = 0; - - // Use SdFat's internal buffer. - emptyStack[0] = (block_t*)sd.vol()->cacheClear(); - if (emptyStack[0] == 0) { - error("cacheClear failed"); - } - // Put rest of buffers on the empty stack. - for (int i = 1; i < BUFFER_BLOCK_COUNT; i++) { - emptyStack[i] = &block[i - 1]; - } - emptyTop = BUFFER_BLOCK_COUNT; - minTop = BUFFER_BLOCK_COUNT; - - // Start a multiple block write. - if (!sd.card()->writeStart(binFile.firstBlock())) { - error("writeStart failed"); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Logging - type any character to stop")); - bool closeFile = false; - uint32_t bn = 0; - uint32_t maxLatency = 0; - uint32_t overrun = 0; - uint32_t overrunTotal = 0; - uint32_t logTime = micros(); - while(1) { - // Time for next data record. - logTime += LOG_INTERVAL_USEC; - if (Serial.available()) { - closeFile = true; - } - if (closeFile) { - if (curBlock != 0) { - // Put buffer in full queue. - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } else { - if (curBlock == 0 && emptyTop != 0) { - curBlock = emptyStack[--emptyTop]; - if (emptyTop < minTop) { - minTop = emptyTop; - } - curBlock->count = 0; - curBlock->overrun = overrun; - overrun = 0; - } - if ((int32_t)(logTime - micros()) < 0) { - error("Rate too fast"); - } - int32_t delta; - do { - delta = micros() - logTime; - } while (delta < 0); - if (curBlock == 0) { - overrun++; - overrunTotal++; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } -#if ABORT_ON_OVERRUN - Serial.println(F("Overrun abort")); - break; - #endif // ABORT_ON_OVERRUN - } else { -#if USE_SHARED_SPI - sd.card()->spiStop(); -#endif // USE_SHARED_SPI - acquireData(&curBlock->data[curBlock->count++]); -#if USE_SHARED_SPI - sd.card()->spiStart(); -#endif // USE_SHARED_SPI - if (curBlock->count == DATA_DIM) { - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } - } - if (fullHead == fullTail) { - // Exit loop if done. - if (closeFile) { - break; - } - } else if (!sd.card()->isBusy()) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - fullTail = fullTail < QUEUE_LAST ? fullTail + 1 : 0; - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - if (usec > maxLatency) { - maxLatency = usec; - } - // Move block to empty queue. - emptyStack[emptyTop++] = pBlock; - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - Serial.print(F("Min Free buffers: ")); - Serial.println(minTop); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Overruns: ")); - Serial.println(overrunTotal); - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } -} -//------------------------------------------------------------------------------ -void recoverTmpFile() { - uint16_t count; - if (!binFile.open(TMP_FILE_NAME, O_RDWR)) { - return; - } - if (binFile.read(&count, 2) != 2 || count != DATA_DIM) { - error("Please delete existing " TMP_FILE_NAME); - } - Serial.println(F("\nRecovering data in tmp file " TMP_FILE_NAME)); - uint32_t bgnBlock = 0; - uint32_t endBlock = binFile.fileSize()/512 - 1; - // find last used block. - while (bgnBlock < endBlock) { - uint32_t midBlock = (bgnBlock + endBlock + 1)/2; - binFile.seekSet(512*midBlock); - if (binFile.read(&count, 2) != 2) error("read"); - if (count == 0 || count > DATA_DIM) { - endBlock = midBlock - 1; - } else { - bgnBlock = midBlock; - } - } - // truncate after last used block. - if (!binFile.truncate(512*(bgnBlock + 1))) { - error("Truncate " TMP_FILE_NAME " failed"); - } - renameBinFile(); -} -//----------------------------------------------------------------------------- -void renameBinFile() { - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("File size: ")); - Serial.print(binFile.fileSize()/512); - Serial.println(F(" blocks")); -} -//------------------------------------------------------------------------------ -void testSensor() { - const uint32_t interval = 200000; - int32_t diff; - data_t data; - Serial.println(F("\nTesting - type any character to stop\n")); - // Wait for Serial Idle. - delay(1000); - printHeader(&Serial); - uint32_t m = micros(); - while (!Serial.available()) { - m += interval; - do { - diff = m - micros(); - } while (diff > 0); - acquireData(&data); - printData(&Serial, &data); - } -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("\nFreeStack: ")); - Serial.println(FreeStack()); - Serial.print(F("Records/block: ")); - Serial.println(DATA_DIM); - if (sizeof(block_t) != 512) { - error("Invalid block size"); - } - // Allow userSetup access to SPI bus. - pinMode(SD_CS_PIN, OUTPUT); - digitalWrite(SD_CS_PIN, HIGH); - - // Setup sensors. - userSetup(); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(&Serial); - fatalBlink(); - } - // recover existing tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); - while (!Serial.available()) { - SysCall::yield(); - } - if (Serial.read() == 'Y') { - recoverTmpFile(); - } else { - error("'Y' not typed, please manually delete " TMP_FILE_NAME); - } - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("b - open existing bin file")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("l - list files")); - Serial.println(F("r - record data")); - Serial.println(F("t - test without logging")); - while(!Serial.available()) { - SysCall::yield(); - } -#if WDT_YIELD_TIME_MICROS - Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); -#endif - - char c = tolower(Serial.read()); - - // Discard extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - if (c == 'b') { - openBinFile(); - } else if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'l') { - Serial.println(F("\nls:")); - sd.ls(&Serial, LS_SIZE); - } else if (c == 'r') { - logData(); - } else if (c == 't') { - testSensor(); - } else { - Serial.println(F("Invalid entry")); - } -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/UserFunctions.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/UserFunctions.cpp deleted file mode 100644 index 8534146c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/UserFunctions.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "UserTypes.h" -// User data functions. Modify these functions for your data items. - -using namespace sdfat; - -// Start time for data -static uint32_t startMicros; - -// Acquire a data record. -void acquireData(data_t* data) { - data->time = micros(); - for (int i = 0; i < ADC_DIM; i++) { - data->adc[i] = analogRead(i); - } -} - -// Print a data record. -void printData(Print* pr, data_t* data) { - if (startMicros == 0) { - startMicros = data->time; - } - pr->print(data->time - startMicros); - for (int i = 0; i < ADC_DIM; i++) { - pr->write(','); - pr->print(data->adc[i]); - } - pr->println(); -} - -// Print data header. -void printHeader(Print* pr) { - startMicros = 0; - pr->print(F("micros")); - for (int i = 0; i < ADC_DIM; i++) { - pr->print(F(",adc")); - pr->print(i); - } - pr->println(); -} - -// Sensor setup -void userSetup() { -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/UserTypes.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/UserTypes.h deleted file mode 100644 index 7ccae8fa..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLogger/UserTypes.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef UserTypes_h -#define UserTypes_h -#include "Arduino.h" -// User data types. Modify for your data items. -#define FILE_BASE_NAME "adc4pin" -const uint8_t ADC_DIM = 4; -struct data_t { - uint32_t time; - uint16_t adc[ADC_DIM]; -}; -void acquireData(data_t* data); -void printData(Print* pr, data_t* data); -void printHeader(Print* pr); -void userSetup(); -#endif // UserTypes_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/LowLatencyLogger.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/LowLatencyLogger.ino deleted file mode 100644 index 752e75ae..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/LowLatencyLogger.ino +++ /dev/null @@ -1,658 +0,0 @@ -/** - * This program logs data to a binary file. Functions are included - * to convert the binary file to a csv text file. - * - * Samples are logged at regular intervals. The maximum logging rate - * depends on the quality of your SD card and the time required to - * read sensor data. This example has been tested at 500 Hz with - * good SD card on an Uno. 4000 HZ is possible on a Due. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 12 512 byte buffers will be used. - * - * Data is written to the file using a SD multiple block write command. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "UserTypes.h" - -#ifdef __AVR_ATmega328P__ -#include "MinimumSerial.h" -sdfat::MinimumSerial MinSerial; -#define Serial MinSerial -#endif // __AVR_ATmega328P__ - -using namespace sdfat; - -//============================================================================== -// Start of configuration constants. -//============================================================================== -// Abort run on an overrun. Data before the overrun will be saved. -#define ABORT_ON_OVERRUN 1 -//------------------------------------------------------------------------------ -//Interval between data records in microseconds. -const uint32_t LOG_INTERVAL_USEC = 2000; -//------------------------------------------------------------------------------ -// Set USE_SHARED_SPI non-zero for use of an SPI sensor. -// May not work for some cards. -#ifndef USE_SHARED_SPI -#define USE_SHARED_SPI 0 -#endif // USE_SHARED_SPI -//------------------------------------------------------------------------------ -// Pin definitions. -// -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for -// overrun errors and logging continues unless ABORT_ON_OVERRUN -// is non-zero. -#ifdef ERROR_LED_PIN -#undef ERROR_LED_PIN -#endif // ERROR_LED_PIN -const int8_t ERROR_LED_PIN = -1; -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; -// -// log file base name if not defined in UserTypes.h -#ifndef FILE_BASE_NAME -#define FILE_BASE_NAME "data" -#endif // FILE_BASE_NAME -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT-1 additional -// buffers. -// -#ifndef RAMEND -// Assume ARM. Use total of ten 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 10; -// -#elif RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 2; -// -#elif RAMEND < 0X20FF -// Use total of four 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// -#else // RAMEND -// Use total of 12 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME FILE_BASE_NAME "##.bin" - -// Size of file base name. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; -const uint8_t FILE_NAME_DIM = BASE_NAME_SIZE + 7; -char binName[FILE_NAME_DIM] = FILE_BASE_NAME "00.bin"; - -SdFat sd; - -SdBaseFile binFile; - -// Number of data records in a block. -const uint16_t DATA_DIM = (512 - 4)/sizeof(data_t); - -//Compute fill so block size is 512 bytes. FILL_DIM may be zero. -const uint16_t FILL_DIM = 512 - 4 - DATA_DIM*sizeof(data_t); - -struct block_t { - uint16_t count; - uint16_t overrun; - data_t data[DATA_DIM]; - uint8_t fill[FILL_DIM]; -}; -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(&Serial, F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - SysCall::yield(); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t block; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Checking overrun errors - type any character to stop")); - while (binFile.read(&block, 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(binFile.firstBlock() + bn); - Serial.print(','); - Serial.println(block.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//----------------------------------------------------------------------------- -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t block; - uint32_t t0 = millis(); - uint32_t syncCluster = 0; - SdFile csvFile; - char csvName[FILE_NAME_DIM]; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Create a new csvFile. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { - error("open csvFile failed"); - } - binFile.rewind(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - printHeader(&csvFile); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&block, 512) == 512) { - uint16_t i; - if (block.count == 0 || block.count > DATA_DIM) { - break; - } - if (block.overrun) { - csvFile.print(F("OVERRUN,")); - csvFile.println(block.overrun); - } - for (i = 0; i < block.count; i++) { - printData(&csvFile, &block.data[i]); - } - if (csvFile.curCluster() != syncCluster) { - csvFile.sync(); - syncCluster = csvFile.curCluster(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvFile.close(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//----------------------------------------------------------------------------- -void createBinFile() { - // max number of blocks to erase per erase call - const uint32_t ERASE_SIZE = 262144L; - uint32_t bgnBlock, endBlock; - - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file " TMP_FILE_NAME)); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("\nCreating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t block; - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - printHeader(&Serial); - while (!Serial.available() && binFile.read(&block , 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(block.overrun); - } - for (uint16_t i = 0; i < block.count; i++) { - printData(&Serial, &block.data[i]); - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -void logData() { - createBinFile(); - recordBinFile(); - renameBinFile(); -} -//------------------------------------------------------------------------------ -void openBinFile() { - char name[FILE_NAME_DIM]; - strcpy(name, binName); - Serial.println(F("\nEnter two digit version")); - Serial.write(name, BASE_NAME_SIZE); - for (int i = 0; i < 2; i++) { - while (!Serial.available()) { - SysCall::yield(); - } - char c = Serial.read(); - Serial.write(c); - if (c < '0' || c > '9') { - Serial.println(F("\nInvalid digit")); - return; - } - name[BASE_NAME_SIZE + i] = c; - } - Serial.println(&name[BASE_NAME_SIZE+2]); - if (!sd.exists(name)) { - Serial.println(F("File does not exist")); - return; - } - binFile.close(); - strcpy(binName, name); - if (!binFile.open(binName, O_RDONLY)) { - Serial.println(F("open failed")); - return; - } - Serial.println(F("File opened")); -} -//------------------------------------------------------------------------------ -void recordBinFile() { - const uint8_t QUEUE_DIM = BUFFER_BLOCK_COUNT + 1; - // Index of last queue location. - const uint8_t QUEUE_LAST = QUEUE_DIM - 1; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT - 1]; - - block_t* curBlock = 0; - - block_t* emptyStack[BUFFER_BLOCK_COUNT]; - uint8_t emptyTop; - uint8_t minTop; - - block_t* fullQueue[QUEUE_DIM]; - uint8_t fullHead = 0; - uint8_t fullTail = 0; - - // Use SdFat's internal buffer. - emptyStack[0] = (block_t*)sd.vol()->cacheClear(); - if (emptyStack[0] == 0) { - error("cacheClear failed"); - } - // Put rest of buffers on the empty stack. - for (int i = 1; i < BUFFER_BLOCK_COUNT; i++) { - emptyStack[i] = &block[i - 1]; - } - emptyTop = BUFFER_BLOCK_COUNT; - minTop = BUFFER_BLOCK_COUNT; - - // Start a multiple block write. - if (!sd.card()->writeStart(binFile.firstBlock())) { - error("writeStart failed"); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Logging - type any character to stop")); - bool closeFile = false; - uint32_t bn = 0; - uint32_t maxLatency = 0; - uint32_t overrun = 0; - uint32_t overrunTotal = 0; - uint32_t logTime = micros(); - while(1) { - // Time for next data record. - logTime += LOG_INTERVAL_USEC; - if (Serial.available()) { - closeFile = true; - } - if (closeFile) { - if (curBlock != 0) { - // Put buffer in full queue. - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } else { - if (curBlock == 0 && emptyTop != 0) { - curBlock = emptyStack[--emptyTop]; - if (emptyTop < minTop) { - minTop = emptyTop; - } - curBlock->count = 0; - curBlock->overrun = overrun; - overrun = 0; - } - if ((int32_t)(logTime - micros()) < 0) { - error("Rate too fast"); - } - int32_t delta; - do { - delta = micros() - logTime; - } while (delta < 0); - if (curBlock == 0) { - overrun++; - overrunTotal++; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } -#if ABORT_ON_OVERRUN - Serial.println(F("Overrun abort")); - break; - #endif // ABORT_ON_OVERRUN - } else { -#if USE_SHARED_SPI - sd.card()->spiStop(); -#endif // USE_SHARED_SPI - acquireData(&curBlock->data[curBlock->count++]); -#if USE_SHARED_SPI - sd.card()->spiStart(); -#endif // USE_SHARED_SPI - if (curBlock->count == DATA_DIM) { - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } - } - if (fullHead == fullTail) { - // Exit loop if done. - if (closeFile) { - break; - } - } else if (!sd.card()->isBusy()) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - fullTail = fullTail < QUEUE_LAST ? fullTail + 1 : 0; - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - if (usec > maxLatency) { - maxLatency = usec; - } - // Move block to empty queue. - emptyStack[emptyTop++] = pBlock; - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - Serial.print(F("Min Free buffers: ")); - Serial.println(minTop); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Overruns: ")); - Serial.println(overrunTotal); - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } -} -//------------------------------------------------------------------------------ -void recoverTmpFile() { - uint16_t count; - if (!binFile.open(TMP_FILE_NAME, O_RDWR)) { - return; - } - if (binFile.read(&count, 2) != 2 || count != DATA_DIM) { - error("Please delete existing " TMP_FILE_NAME); - } - Serial.println(F("\nRecovering data in tmp file " TMP_FILE_NAME)); - uint32_t bgnBlock = 0; - uint32_t endBlock = binFile.fileSize()/512 - 1; - // find last used block. - while (bgnBlock < endBlock) { - uint32_t midBlock = (bgnBlock + endBlock + 1)/2; - binFile.seekSet(512*midBlock); - if (binFile.read(&count, 2) != 2) error("read"); - if (count == 0 || count > DATA_DIM) { - endBlock = midBlock - 1; - } else { - bgnBlock = midBlock; - } - } - // truncate after last used block. - if (!binFile.truncate(512*(bgnBlock + 1))) { - error("Truncate " TMP_FILE_NAME " failed"); - } - renameBinFile(); -} -//----------------------------------------------------------------------------- -void renameBinFile() { - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("File size: ")); - Serial.print(binFile.fileSize()/512); - Serial.println(F(" blocks")); -} -//------------------------------------------------------------------------------ -void testSensor() { - const uint32_t interval = 200000; - int32_t diff; - data_t data; - Serial.println(F("\nTesting - type any character to stop\n")); - // Wait for Serial Idle. - delay(1000); - printHeader(&Serial); - uint32_t m = micros(); - while (!Serial.available()) { - m += interval; - do { - diff = m - micros(); - } while (diff > 0); - acquireData(&data); - printData(&Serial, &data); - } -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("\nFreeStack: ")); - Serial.println(FreeStack()); - Serial.print(F("Records/block: ")); - Serial.println(DATA_DIM); - if (sizeof(block_t) != 512) { - error("Invalid block size"); - } - // Allow userSetup access to SPI bus. - pinMode(SD_CS_PIN, OUTPUT); - digitalWrite(SD_CS_PIN, HIGH); - - // Setup sensors. - userSetup(); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(&Serial); - fatalBlink(); - } - // recover existing tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); - while (!Serial.available()) { - SysCall::yield(); - } - if (Serial.read() == 'Y') { - recoverTmpFile(); - } else { - error("'Y' not typed, please manually delete " TMP_FILE_NAME); - } - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("b - open existing bin file")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("l - list files")); - Serial.println(F("r - record data")); - Serial.println(F("t - test without logging")); - while(!Serial.available()) { - SysCall::yield(); - } -#if WDT_YIELD_TIME_MICROS - Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); -#endif - - char c = tolower(Serial.read()); - - // Discard extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - if (c == 'b') { - openBinFile(); - } else if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'l') { - Serial.println(F("\nls:")); - sd.ls(&Serial, LS_SIZE); - } else if (c == 'r') { - logData(); - } else if (c == 't') { - testSensor(); - } else { - Serial.println(F("Invalid entry")); - } -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino deleted file mode 100644 index 91c8fcc5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino +++ /dev/null @@ -1 +0,0 @@ -// Empty file with name LowLatencyLoggerADXL345.ino to make IDE happy. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/UserFunctions.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/UserFunctions.cpp deleted file mode 100644 index fb7b043d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/UserFunctions.cpp +++ /dev/null @@ -1,72 +0,0 @@ -#include "UserTypes.h" -// User data functions. Modify these functions for your data items. - -using namespace sdfat; - -// Start time for data -static uint32_t startMicros; - -const uint8_t ADXL345_CS = 9; - -const uint8_t POWER_CTL = 0x2D; //Power Control Register -const uint8_t DATA_FORMAT = 0x31; -const uint8_t DATAX0 = 0x32; //X-Axis Data 0 -const uint8_t DATAX1 = 0x33; //X-Axis Data 1 -const uint8_t DATAY0 = 0x34; //Y-Axis Data 0 -const uint8_t DATAY1 = 0x35; //Y-Axis Data 1 -const uint8_t DATAZ0 = 0x36; //Z-Axis Data 0 -const uint8_t DATAZ1 = 0x37; //Z-Axis Data 1 - -void writeADXL345Register(const uint8_t registerAddress, const uint8_t value) { - // Max SPI clock frequency is 5 MHz with CPOL = 1 and CPHA = 1. - SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE3)); - digitalWrite(ADXL345_CS, LOW); - SPI.transfer(registerAddress); - SPI.transfer(value); - digitalWrite(ADXL345_CS, HIGH); - SPI.endTransaction(); -} - -void userSetup() { - SPI.begin(); - pinMode(ADXL345_CS, OUTPUT); - digitalWrite(ADXL345_CS, HIGH); - //Put the ADXL345 into +/- 4G range by writing the value 0x01 to the DATA_FORMAT register. - writeADXL345Register(DATA_FORMAT, 0x01); - //Put the ADXL345 into Measurement Mode by writing 0x08 to the POWER_CTL register. - writeADXL345Register(POWER_CTL, 0x08); //Measurement mode -} - -// Acquire a data record. -void acquireData(data_t* data) { - // Max SPI clock frequency is 5 MHz with CPOL = 1 and CPHA = 1. - SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE3)); - data->time = micros(); - digitalWrite(ADXL345_CS, LOW); - // Read multiple bytes so or 0XC0 with address. - SPI.transfer(DATAX0 | 0XC0); - data->accel[0] = SPI.transfer(0) | (SPI.transfer(0) << 8); - data->accel[1] = SPI.transfer(0) | (SPI.transfer(0) << 8); - data->accel[2] = SPI.transfer(0) | (SPI.transfer(0) << 8); - digitalWrite(ADXL345_CS, HIGH); - SPI.endTransaction(); -} - -// Print a data record. -void printData(Print* pr, data_t* data) { - if (startMicros == 0) { - startMicros = data->time; - } - pr->print(data->time - startMicros); - for (int i = 0; i < ACCEL_DIM; i++) { - pr->write(','); - pr->print(data->accel[i]); - } - pr->println(); -} - -// Print data header. -void printHeader(Print* pr) { - startMicros = 0; - pr->println(F("micros,ax,ay,az")); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/UserTypes.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/UserTypes.h deleted file mode 100644 index 56bc8738..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/UserTypes.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef UserTypes_h -#define UserTypes_h -#include "Arduino.h" -#include "SPI.h" -#define USE_SHARED_SPI 1 -#define FILE_BASE_NAME "ADXL4G" -// User data types. Modify for your data items. -const uint8_t ACCEL_DIM = 3; -struct data_t { - uint32_t time; - int16_t accel[ACCEL_DIM]; -}; -void acquireData(data_t* data); -void printData(Print* pr, data_t* data); -void printHeader(Print* pr); -void userSetup(); -#endif // UserTypes_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/readme.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/readme.txt deleted file mode 100644 index a68ba787..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerADXL345/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Test of shared SPI for LowLatencyLogger. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/LowLatencyLogger.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/LowLatencyLogger.ino deleted file mode 100644 index 752e75ae..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/LowLatencyLogger.ino +++ /dev/null @@ -1,658 +0,0 @@ -/** - * This program logs data to a binary file. Functions are included - * to convert the binary file to a csv text file. - * - * Samples are logged at regular intervals. The maximum logging rate - * depends on the quality of your SD card and the time required to - * read sensor data. This example has been tested at 500 Hz with - * good SD card on an Uno. 4000 HZ is possible on a Due. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 12 512 byte buffers will be used. - * - * Data is written to the file using a SD multiple block write command. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "UserTypes.h" - -#ifdef __AVR_ATmega328P__ -#include "MinimumSerial.h" -sdfat::MinimumSerial MinSerial; -#define Serial MinSerial -#endif // __AVR_ATmega328P__ - -using namespace sdfat; - -//============================================================================== -// Start of configuration constants. -//============================================================================== -// Abort run on an overrun. Data before the overrun will be saved. -#define ABORT_ON_OVERRUN 1 -//------------------------------------------------------------------------------ -//Interval between data records in microseconds. -const uint32_t LOG_INTERVAL_USEC = 2000; -//------------------------------------------------------------------------------ -// Set USE_SHARED_SPI non-zero for use of an SPI sensor. -// May not work for some cards. -#ifndef USE_SHARED_SPI -#define USE_SHARED_SPI 0 -#endif // USE_SHARED_SPI -//------------------------------------------------------------------------------ -// Pin definitions. -// -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for -// overrun errors and logging continues unless ABORT_ON_OVERRUN -// is non-zero. -#ifdef ERROR_LED_PIN -#undef ERROR_LED_PIN -#endif // ERROR_LED_PIN -const int8_t ERROR_LED_PIN = -1; -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; -// -// log file base name if not defined in UserTypes.h -#ifndef FILE_BASE_NAME -#define FILE_BASE_NAME "data" -#endif // FILE_BASE_NAME -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT-1 additional -// buffers. -// -#ifndef RAMEND -// Assume ARM. Use total of ten 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 10; -// -#elif RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 2; -// -#elif RAMEND < 0X20FF -// Use total of four 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// -#else // RAMEND -// Use total of 12 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME FILE_BASE_NAME "##.bin" - -// Size of file base name. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; -const uint8_t FILE_NAME_DIM = BASE_NAME_SIZE + 7; -char binName[FILE_NAME_DIM] = FILE_BASE_NAME "00.bin"; - -SdFat sd; - -SdBaseFile binFile; - -// Number of data records in a block. -const uint16_t DATA_DIM = (512 - 4)/sizeof(data_t); - -//Compute fill so block size is 512 bytes. FILL_DIM may be zero. -const uint16_t FILL_DIM = 512 - 4 - DATA_DIM*sizeof(data_t); - -struct block_t { - uint16_t count; - uint16_t overrun; - data_t data[DATA_DIM]; - uint8_t fill[FILL_DIM]; -}; -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(&Serial, F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - SysCall::yield(); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t block; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Checking overrun errors - type any character to stop")); - while (binFile.read(&block, 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(binFile.firstBlock() + bn); - Serial.print(','); - Serial.println(block.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//----------------------------------------------------------------------------- -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t block; - uint32_t t0 = millis(); - uint32_t syncCluster = 0; - SdFile csvFile; - char csvName[FILE_NAME_DIM]; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Create a new csvFile. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { - error("open csvFile failed"); - } - binFile.rewind(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - printHeader(&csvFile); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&block, 512) == 512) { - uint16_t i; - if (block.count == 0 || block.count > DATA_DIM) { - break; - } - if (block.overrun) { - csvFile.print(F("OVERRUN,")); - csvFile.println(block.overrun); - } - for (i = 0; i < block.count; i++) { - printData(&csvFile, &block.data[i]); - } - if (csvFile.curCluster() != syncCluster) { - csvFile.sync(); - syncCluster = csvFile.curCluster(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvFile.close(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//----------------------------------------------------------------------------- -void createBinFile() { - // max number of blocks to erase per erase call - const uint32_t ERASE_SIZE = 262144L; - uint32_t bgnBlock, endBlock; - - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file " TMP_FILE_NAME)); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("\nCreating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t block; - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - printHeader(&Serial); - while (!Serial.available() && binFile.read(&block , 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(block.overrun); - } - for (uint16_t i = 0; i < block.count; i++) { - printData(&Serial, &block.data[i]); - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -void logData() { - createBinFile(); - recordBinFile(); - renameBinFile(); -} -//------------------------------------------------------------------------------ -void openBinFile() { - char name[FILE_NAME_DIM]; - strcpy(name, binName); - Serial.println(F("\nEnter two digit version")); - Serial.write(name, BASE_NAME_SIZE); - for (int i = 0; i < 2; i++) { - while (!Serial.available()) { - SysCall::yield(); - } - char c = Serial.read(); - Serial.write(c); - if (c < '0' || c > '9') { - Serial.println(F("\nInvalid digit")); - return; - } - name[BASE_NAME_SIZE + i] = c; - } - Serial.println(&name[BASE_NAME_SIZE+2]); - if (!sd.exists(name)) { - Serial.println(F("File does not exist")); - return; - } - binFile.close(); - strcpy(binName, name); - if (!binFile.open(binName, O_RDONLY)) { - Serial.println(F("open failed")); - return; - } - Serial.println(F("File opened")); -} -//------------------------------------------------------------------------------ -void recordBinFile() { - const uint8_t QUEUE_DIM = BUFFER_BLOCK_COUNT + 1; - // Index of last queue location. - const uint8_t QUEUE_LAST = QUEUE_DIM - 1; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT - 1]; - - block_t* curBlock = 0; - - block_t* emptyStack[BUFFER_BLOCK_COUNT]; - uint8_t emptyTop; - uint8_t minTop; - - block_t* fullQueue[QUEUE_DIM]; - uint8_t fullHead = 0; - uint8_t fullTail = 0; - - // Use SdFat's internal buffer. - emptyStack[0] = (block_t*)sd.vol()->cacheClear(); - if (emptyStack[0] == 0) { - error("cacheClear failed"); - } - // Put rest of buffers on the empty stack. - for (int i = 1; i < BUFFER_BLOCK_COUNT; i++) { - emptyStack[i] = &block[i - 1]; - } - emptyTop = BUFFER_BLOCK_COUNT; - minTop = BUFFER_BLOCK_COUNT; - - // Start a multiple block write. - if (!sd.card()->writeStart(binFile.firstBlock())) { - error("writeStart failed"); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Logging - type any character to stop")); - bool closeFile = false; - uint32_t bn = 0; - uint32_t maxLatency = 0; - uint32_t overrun = 0; - uint32_t overrunTotal = 0; - uint32_t logTime = micros(); - while(1) { - // Time for next data record. - logTime += LOG_INTERVAL_USEC; - if (Serial.available()) { - closeFile = true; - } - if (closeFile) { - if (curBlock != 0) { - // Put buffer in full queue. - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } else { - if (curBlock == 0 && emptyTop != 0) { - curBlock = emptyStack[--emptyTop]; - if (emptyTop < minTop) { - minTop = emptyTop; - } - curBlock->count = 0; - curBlock->overrun = overrun; - overrun = 0; - } - if ((int32_t)(logTime - micros()) < 0) { - error("Rate too fast"); - } - int32_t delta; - do { - delta = micros() - logTime; - } while (delta < 0); - if (curBlock == 0) { - overrun++; - overrunTotal++; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } -#if ABORT_ON_OVERRUN - Serial.println(F("Overrun abort")); - break; - #endif // ABORT_ON_OVERRUN - } else { -#if USE_SHARED_SPI - sd.card()->spiStop(); -#endif // USE_SHARED_SPI - acquireData(&curBlock->data[curBlock->count++]); -#if USE_SHARED_SPI - sd.card()->spiStart(); -#endif // USE_SHARED_SPI - if (curBlock->count == DATA_DIM) { - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } - } - if (fullHead == fullTail) { - // Exit loop if done. - if (closeFile) { - break; - } - } else if (!sd.card()->isBusy()) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - fullTail = fullTail < QUEUE_LAST ? fullTail + 1 : 0; - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - if (usec > maxLatency) { - maxLatency = usec; - } - // Move block to empty queue. - emptyStack[emptyTop++] = pBlock; - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - Serial.print(F("Min Free buffers: ")); - Serial.println(minTop); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Overruns: ")); - Serial.println(overrunTotal); - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } -} -//------------------------------------------------------------------------------ -void recoverTmpFile() { - uint16_t count; - if (!binFile.open(TMP_FILE_NAME, O_RDWR)) { - return; - } - if (binFile.read(&count, 2) != 2 || count != DATA_DIM) { - error("Please delete existing " TMP_FILE_NAME); - } - Serial.println(F("\nRecovering data in tmp file " TMP_FILE_NAME)); - uint32_t bgnBlock = 0; - uint32_t endBlock = binFile.fileSize()/512 - 1; - // find last used block. - while (bgnBlock < endBlock) { - uint32_t midBlock = (bgnBlock + endBlock + 1)/2; - binFile.seekSet(512*midBlock); - if (binFile.read(&count, 2) != 2) error("read"); - if (count == 0 || count > DATA_DIM) { - endBlock = midBlock - 1; - } else { - bgnBlock = midBlock; - } - } - // truncate after last used block. - if (!binFile.truncate(512*(bgnBlock + 1))) { - error("Truncate " TMP_FILE_NAME " failed"); - } - renameBinFile(); -} -//----------------------------------------------------------------------------- -void renameBinFile() { - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("File size: ")); - Serial.print(binFile.fileSize()/512); - Serial.println(F(" blocks")); -} -//------------------------------------------------------------------------------ -void testSensor() { - const uint32_t interval = 200000; - int32_t diff; - data_t data; - Serial.println(F("\nTesting - type any character to stop\n")); - // Wait for Serial Idle. - delay(1000); - printHeader(&Serial); - uint32_t m = micros(); - while (!Serial.available()) { - m += interval; - do { - diff = m - micros(); - } while (diff > 0); - acquireData(&data); - printData(&Serial, &data); - } -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("\nFreeStack: ")); - Serial.println(FreeStack()); - Serial.print(F("Records/block: ")); - Serial.println(DATA_DIM); - if (sizeof(block_t) != 512) { - error("Invalid block size"); - } - // Allow userSetup access to SPI bus. - pinMode(SD_CS_PIN, OUTPUT); - digitalWrite(SD_CS_PIN, HIGH); - - // Setup sensors. - userSetup(); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(&Serial); - fatalBlink(); - } - // recover existing tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); - while (!Serial.available()) { - SysCall::yield(); - } - if (Serial.read() == 'Y') { - recoverTmpFile(); - } else { - error("'Y' not typed, please manually delete " TMP_FILE_NAME); - } - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("b - open existing bin file")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("l - list files")); - Serial.println(F("r - record data")); - Serial.println(F("t - test without logging")); - while(!Serial.available()) { - SysCall::yield(); - } -#if WDT_YIELD_TIME_MICROS - Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); -#endif - - char c = tolower(Serial.read()); - - // Discard extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - if (c == 'b') { - openBinFile(); - } else if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'l') { - Serial.println(F("\nls:")); - sd.ls(&Serial, LS_SIZE); - } else if (c == 'r') { - logData(); - } else if (c == 't') { - testSensor(); - } else { - Serial.println(F("Invalid entry")); - } -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino deleted file mode 100644 index 53bfe066..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino +++ /dev/null @@ -1,2 +0,0 @@ -// Empty file with name LowLatencyLoggerMPU6050.ino to make IDE happy. - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/UserFunctions.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/UserFunctions.cpp deleted file mode 100644 index 363bd10a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/UserFunctions.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// User data functions. Modify these functions for your data items. -#include "UserTypes.h" -#include "Wire.h" -#include "I2Cdev.h" -#include "MPU6050.h" - -using namespace sdfat; - -//------------------------------------------------------------------------------ -MPU6050 mpu; -static uint32_t startMicros; -// Acquire a data record. -void acquireData(data_t* data) { - data->time = micros(); - mpu.getMotion6(&data->ax, &data->ay, &data->az, - &data->gx, &data->gy, &data->gz); -} - -// setup AVR I2C -void userSetup() { -#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE - Wire.begin(); - Wire.setClock(400000); -#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE - Fastwire::setup(400, true); -#endif - mpu.initialize(); -} - -// Print a data record. -void printData(Print* pr, data_t* data) { - if (startMicros == 0) { - startMicros = data->time; - } - pr->print(data->time- startMicros); - pr->write(','); - pr->print(data->ax); - pr->write(','); - pr->print(data->ay); - pr->write(','); - pr->print(data->az); - pr->write(','); - pr->print(data->gx); - pr->write(','); - pr->print(data->gy); - pr->write(','); - pr->println(data->gz); -} - -// Print data header. -void printHeader(Print* pr) { - startMicros = 0; - pr->println(F("micros,ax,ay,az,gx,gy,gz")); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/UserTypes.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/UserTypes.h deleted file mode 100644 index 73c2a423..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/LowLatencyLoggerMPU6050/UserTypes.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef UserTypes_h -#define UserTypes_h -#include "Arduino.h" -#define FILE_BASE_NAME "mpuraw" -struct data_t { - unsigned long time; - int16_t ax; - int16_t ay; - int16_t az; - int16_t gx; - int16_t gy; - int16_t gz; -}; -void acquireData(data_t* data); -void printData(Print* pr, data_t* data); -void printHeader(Print* pr); -void userSetup(); -#endif // UserTypes_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/OpenNext/OpenNext.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/OpenNext/OpenNext.ino deleted file mode 100644 index acd25531..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/OpenNext/OpenNext.ino +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Print size, modify date/time, and name for all files in root. - */ -#include -#include "SdFat.h" - -using namespace sdfat; - -// SD default chip select pin. -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -SdFile root; -SdFile file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (!root.open("/")) { - sd.errorHalt("open root failed"); - } - // Open next file in root. - // Warning, openNext starts at the current directory position - // so a rewind of the directory may be required. - while (file.openNext(&root, O_RDONLY)) { - file.printFileSize(&Serial); - Serial.write(' '); - file.printModifyDateTime(&Serial); - Serial.write(' '); - file.printName(&Serial); - if (file.isDir()) { - // Indicate a directory. - Serial.write('/'); - } - Serial.println(); - file.close(); - } - if (root.getError()) { - Serial.println("openNext failed"); - } else { - Serial.println("Done!"); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/PrintBenchmark/PrintBenchmark.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/PrintBenchmark/PrintBenchmark.ino deleted file mode 100644 index 3a117236..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/PrintBenchmark/PrintBenchmark.ino +++ /dev/null @@ -1,154 +0,0 @@ -/* - * This program is a simple Print benchmark. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// number of lines to print -const uint16_t N_PRINT = 20000; - -// file system -SdFat sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - delay(400); // catch Due reset problem - - cout << F("FreeStack: ") << FreeStack() << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - cout << F("Type is FAT") << int(sd.vol()->fatType()) << endl; - - cout << F("Starting print test. Please wait.\n\n"); - - // do write test - for (int test = 0; test < 6; test++) { - char fileName[13] = "bench0.txt"; - fileName[5] = '0' + test; - // open or create file - truncate existing file. - if (!file.open(fileName, O_RDWR | O_CREAT | O_TRUNC)) { - error("open failed"); - } - maxLatency = 0; - minLatency = 999999; - totalLatency = 0; - switch(test) { - case 0: - cout << F("Test of println(uint16_t)\n"); - break; - - case 1: - cout << F("Test of printField(uint16_t, char)\n"); - break; - - case 2: - cout << F("Test of println(uint32_t)\n"); - break; - - case 3: - cout << F("Test of printField(uint32_t, char)\n"); - break; - case 4: - cout << F("Test of println(float)\n"); - break; - - case 5: - cout << F("Test of printField(float, char)\n"); - break; - } - - uint32_t t = millis(); - for (uint16_t i = 0; i < N_PRINT; i++) { - uint32_t m = micros(); - - switch(test) { - case 0: - file.println(i); - break; - - case 1: - file.printField(i, '\n'); - break; - - case 2: - file.println(12345678UL + i); - break; - - case 3: - file.printField(12345678UL + i, '\n'); - break; - - case 4: - file.println((float)0.01*i); - break; - - case 5: - file.printField((float)0.01*i, '\n'); - break; - } - if (file.getWriteError()) { - error("write failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - } - file.close(); - t = millis() - t; - double s = file.fileSize(); - cout << F("Time ") << 0.001*t << F(" sec\n"); - cout << F("File size ") << 0.001*s << F(" KB\n"); - cout << F("Write ") << s/t << F(" KB/sec\n"); - cout << F("Maximum latency: ") << maxLatency; - cout << F(" usec, Minimum Latency: ") << minLatency; - cout << F(" usec, Avg Latency: "); - cout << totalLatency/N_PRINT << F(" usec\n\n"); - } - cout << F("Done!\n\n"); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/QuickStart/QuickStart.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/QuickStart/QuickStart.ino deleted file mode 100644 index ae486e6d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/QuickStart/QuickStart.ino +++ /dev/null @@ -1,164 +0,0 @@ -// Quick hardware test for SPI card access. -// -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// -// Set DISABLE_CHIP_SELECT to disable a second SPI device. -// For example, with the Ethernet shield, set DISABLE_CHIP_SELECT -// to 10 to disable the Ethernet controller. -const int8_t DISABLE_CHIP_SELECT = -1; -// -// Test with reduced SPI speed for breadboards. SD_SCK_MHZ(4) will select -// the highest speed supported by the board that is not over 4 MHz. -// Change SPI_SPEED to SD_SCK_MHZ(50) for best performance. -#define SPI_SPEED SD_SCK_MHZ(4) -//------------------------------------------------------------------------------ -// File system object. -SdFat sd; - -// Serial streams -ArduinoOutStream cout(Serial); - -// input buffer for line -char cinBuf[40]; -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); - -// SD card chip select -int chipSelect; - -void cardOrSpeed() { - cout << F("Try another SD card or reduce the SPI bus speed.\n"); - cout << F("Edit SPI_SPEED in this program to change it.\n"); -} - -void reformatMsg() { - cout << F("Try reformatting the card. For best results use\n"); - cout << F("the SdFormatter program in SdFat/examples or download\n"); - cout << F("and use SDFormatter from www.sdcard.org/downloads.\n"); -} - -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("\nSPI pins:\n"); - cout << F("MISO: ") << int(MISO) << endl; - cout << F("MOSI: ") << int(MOSI) << endl; - cout << F("SCK: ") << int(SCK) << endl; - cout << F("SS: ") << int(SS) << endl; - - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" - "a second SPI device. For example, with the Ethernet\n" - "shield, DISABLE_CHIP_SELECT should be set to 10\n" - "to disable the Ethernet controller.\n"); - } - cout << F( - "\nSD chip select is the key hardware option.\n" - "Common values are:\n" - "Arduino Ethernet shield, pin 4\n" - "Sparkfun SD shield, pin 8\n" - "Adafruit SD shields and modules, pin 10\n"); -} - -bool firstTry = true; -void loop() { - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (!firstTry) { - cout << F("\nRestarting\n"); - } - firstTry = false; - - cout << F("\nEnter the chip select pin number: "); - while (!Serial.available()) { - SysCall::yield(); - } - cin.readline(); - if (cin >> chipSelect) { - cout << chipSelect << endl; - } else { - cout << F("\nInvalid pin number\n"); - return; - } - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - if (!sd.begin(chipSelect, SPI_SPEED)) { - if (sd.card()->errorCode()) { - cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is chipSelect set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - "Is there a wiring/soldering problem?\n"); - cout << F("\nerrorCode: ") << hex << showbase; - cout << int(sd.card()->errorCode()); - cout << F(", errorData: ") << int(sd.card()->errorData()); - cout << dec << noshowbase << endl; - return; - } - if (sd.vol()->fatType() == 0) { - cout << F("Can't find a valid FAT16/FAT32 partition.\n"); - reformatMsg(); - return; - } - cout << F("begin failed, can't determine error type\n"); - return; - } - cout << F("\nCard successfully initialized.\n"); - cout << endl; - - uint32_t size = sd.card()->cardSize(); - if (size == 0) { - cout << F("Can't determine the card size.\n"); - cardOrSpeed(); - return; - } - uint32_t sizeMB = 0.000512 * size + 0.5; - cout << F("Card size: ") << sizeMB; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - cout << endl; - cout << F("Volume is FAT") << int(sd.vol()->fatType()); - cout << F(", Cluster size (bytes): ") << 512L * sd.vol()->blocksPerCluster(); - cout << endl << endl; - - cout << F("Files found (date time size name):\n"); - sd.ls(LS_R | LS_DATE | LS_SIZE); - - if ((sizeMB > 1100 && sd.vol()->blocksPerCluster() < 64) - || (sizeMB < 2200 && sd.vol()->fatType() == 32)) { - cout << F("\nThis card should be reformatted for best performance.\n"); - cout << F("Use a cluster size of 32 KB for cards larger than 1 GB.\n"); - cout << F("Only cards larger than 2 GB should be formatted FAT32.\n"); - reformatMsg(); - return; - } - // Read any extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F("\nSuccess! Type any character to restart.\n"); - while (!Serial.available()) { - SysCall::yield(); - } -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/RawWrite/RawWrite.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/RawWrite/RawWrite.ino deleted file mode 100644 index d84be3bf..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/RawWrite/RawWrite.ino +++ /dev/null @@ -1,182 +0,0 @@ -/* - * This program illustrates raw write functions in SdFat that - * can be used for high speed data logging. - * - * This program simulates logging from a source that produces - * data at a constant rate of RATE_KB_PER_SEC. - * - * Note: Apps should create a very large file then truncates it - * to the length that is used for a logging. It only takes - * a few seconds to erase a 500 MB file since the card only - * marks the blocks as erased; no data transfer is required. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -const uint32_t RATE_KB_PER_SEC = 100; - -const uint32_t TEST_TIME_SEC = 100; - -// Time between printing progress dots -const uint32_t DOT_TIME_MS = 5000UL; - -// number of blocks in the contiguous file -const uint32_t BLOCK_COUNT = (1000*RATE_KB_PER_SEC*TEST_TIME_SEC + 511)/512; - -// file system -SdFat sd; - -// test file -SdFile file; - -// file extent -uint32_t bgnBlock, endBlock; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - cout << F("FreeStack: ") << FreeStack() << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // delete possible existing file - sd.remove("RawWrite.txt"); - - // create a contiguous file - if (!file.createContiguous("RawWrite.txt", 512UL*BLOCK_COUNT)) { - error("createContiguous failed"); - } - // get the location of the file's blocks - if (!file.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - //*********************NOTE************************************** - // NO SdFile calls are allowed while cache is used for raw writes - //*************************************************************** - - // clear the cache and use it as a 512 byte buffer - uint8_t* pCache = (uint8_t*)sd.vol()->cacheClear(); - - // fill cache with eight lines of 64 bytes each - memset(pCache, ' ', 512); - for (uint16_t i = 0; i < 512; i += 64) { - // put line number at end of line then CR/LF - pCache[i + 61] = '0' + (i/64); - pCache[i + 62] = '\r'; - pCache[i + 63] = '\n'; - } - - cout << F("Start raw write of ") << file.fileSize()/1000UL << F(" KB\n"); - cout << F("Target rate: ") << RATE_KB_PER_SEC << F(" KB/sec\n"); - cout << F("Target time: ") << TEST_TIME_SEC << F(" seconds\n"); - - // tell card to setup for multiple block write with pre-erase - if (!sd.card()->writeStart(bgnBlock, BLOCK_COUNT)) { - error("writeStart failed"); - } - // init stats - - delay(1000); - uint32_t dotCount = 0; - uint32_t maxQueuePrint = 0; - uint32_t maxWriteTime = 0; - uint32_t minWriteTime = 9999999; - uint32_t totalWriteTime = 0; - uint32_t maxQueueSize = 0; - uint32_t nWrite = 0; - uint32_t b = 0; - - // write data - uint32_t startTime = millis(); - while (nWrite < BLOCK_COUNT) { - uint32_t nProduced = RATE_KB_PER_SEC*(millis() - startTime)/512UL; - uint32_t queueSize = nProduced - nWrite; - if (queueSize == 0) continue; - if (queueSize > maxQueueSize) { - maxQueueSize = queueSize; - } - if ((millis() - startTime - dotCount*DOT_TIME_MS) > DOT_TIME_MS) { - if (maxQueueSize != maxQueuePrint) { - cout << F("\nQ: ") << maxQueueSize << endl; - maxQueuePrint = maxQueueSize; - } else { - cout << "."; - if (++dotCount%10 == 0) { - cout << endl; - } - } - } - // put block number at start of first line in block - uint32_t n = b++; - for (int8_t d = 5; d >= 0; d--) { - pCache[d] = n || d == 5 ? n % 10 + '0' : ' '; - n /= 10; - } - // write a 512 byte block - uint32_t tw = micros(); - if (!sd.card()->writeData(pCache)) { - error("writeData failed"); - } - tw = micros() - tw; - totalWriteTime += tw; - // check for max write time - if (tw > maxWriteTime) { - maxWriteTime = tw; - } - if (tw < minWriteTime) { - minWriteTime = tw; - } - nWrite++; - } - uint32_t endTime = millis(); - uint32_t avgWriteTime = totalWriteTime/BLOCK_COUNT; - // end multiple block write mode - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - - cout << F("\nDone\n"); - cout << F("maxQueueSize: ") << maxQueueSize << endl; - cout << F("Elapsed time: ") << setprecision(3)<< 1.e-3*(endTime - startTime); - cout << F(" seconds\n"); - cout << F("Min block write time: ") << minWriteTime << F(" micros\n"); - cout << F("Max block write time: ") << maxWriteTime << F(" micros\n"); - cout << F("Avg block write time: ") << avgWriteTime << F(" micros\n"); - // close file for next pass of loop - file.close(); - Serial.println(); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsv/ReadCsv.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsv/ReadCsv.ino deleted file mode 100644 index 90c9d7fb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsv/ReadCsv.ino +++ /dev/null @@ -1,215 +0,0 @@ - -// Functions to read a CSV text file one field at a time. -// -#include -#include - -// next line for SD.h -//#include - -// next two lines for SdFat -#include - -using namespace sdfat; - -SdFat SD; - -#define CS_PIN SS - -// example can use comma or semicolon -#define CSV_DELIM ',' - -File file; - -/* - * Read a file one field at a time. - * - * file - File to read. - * - * str - Character array for the field. - * - * size - Size of str array. - * - * delim - csv delimiter. - * - * return - negative value for failure. - * delimiter, '\n' or zero(EOF) for success. - */ -int csvReadText(File* file, char* str, size_t size, char delim) { - char ch; - int rtn; - size_t n = 0; - while (true) { - // check for EOF - if (!file->available()) { - rtn = 0; - break; - } - if (file->read(&ch, 1) != 1) { - // read error - rtn = -1; - break; - } - // Delete CR. - if (ch == '\r') { - continue; - } - if (ch == delim || ch == '\n') { - rtn = ch; - break; - } - if ((n + 1) >= size) { - // string too long - rtn = -2; - n--; - break; - } - str[n++] = ch; - } - str[n] = '\0'; - return rtn; -} -//------------------------------------------------------------------------------ -int csvReadInt32(File* file, int32_t* num, char delim) { - char buf[20]; - char* ptr; - int rtn = csvReadText(file, buf, sizeof(buf), delim); - if (rtn < 0) return rtn; - *num = strtol(buf, &ptr, 10); - if (buf == ptr) return -3; - while(isspace(*ptr)) ptr++; - return *ptr == 0 ? rtn : -4; -} -//------------------------------------------------------------------------------ -int csvReadInt16(File* file, int16_t* num, char delim) { - int32_t tmp; - int rtn = csvReadInt32(file, &tmp, delim); - if (rtn < 0) return rtn; - if (tmp < INT_MIN || tmp > INT_MAX) return -5; - *num = tmp; - return rtn; -} -//------------------------------------------------------------------------------ -int csvReadUint32(File* file, uint32_t* num, char delim) { - char buf[20]; - char* ptr; - int rtn = csvReadText(file, buf, sizeof(buf), delim); - if (rtn < 0) return rtn; - *num = strtoul(buf, &ptr, 10); - if (buf == ptr) return -3; - while(isspace(*ptr)) ptr++; - return *ptr == 0 ? rtn : -4; -} -//------------------------------------------------------------------------------ -int csvReadUint16(File* file, uint16_t* num, char delim) { - uint32_t tmp; - int rtn = csvReadUint32(file, &tmp, delim); - if (rtn < 0) return rtn; - if (tmp > UINT_MAX) return -5; - *num = tmp; - return rtn; -} -//------------------------------------------------------------------------------ -int csvReadDouble(File* file, double* num, char delim) { - char buf[20]; - char* ptr; - int rtn = csvReadText(file, buf, sizeof(buf), delim); - if (rtn < 0) return rtn; - *num = strtod(buf, &ptr); - if (buf == ptr) return -3; - while(isspace(*ptr)) ptr++; - return *ptr == 0 ? rtn : -4; -} -//------------------------------------------------------------------------------ -int csvReadFloat(File* file, float* num, char delim) { - double tmp; - int rtn = csvReadDouble(file, &tmp, delim); - if (rtn < 0)return rtn; - // could test for too large. - *num = tmp; - return rtn; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - yield(); - } - // Initialize the SD. - if (!SD.begin(CS_PIN)) { - Serial.println("begin failed"); - return; - } - // Remove existing file. - SD.remove("READTEST.TXT"); - - // Create the file. - file = SD.open("READTEST.TXT", FILE_WRITE); - if (!file) { - Serial.println("open failed"); - return; - } - // Write test data. - file.print(F( -#if CSV_DELIM == ',' - "36,23.20,20.70,57.60,79.50,01:08:14,23.06.16\r\n" - "37,23.21,20.71,57.61,79.51,02:08:14,23.07.16\r\n" -#elif CSV_DELIM == ';' - "36;23.20;20.70;57.60;79.50;01:08:14;23.06.16\r\n" - "37;23.21;20.71;57.61;79.51;02:08:14;23.07.16\r\n" -#else -#error "Bad CSV_DELIM" -#endif -)); - - // Rewind the file for read. - file.seek(0); - - // Read the file and print fields. - int16_t tcalc; - float t1, t2, h1, h2; - // Must be dim 9 to allow for zero byte. - char timeS[9], dateS[9]; - while (file.available()) { - if (csvReadInt16(&file, &tcalc, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &t1, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &t2, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &h1, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &h2, CSV_DELIM) != CSV_DELIM - || csvReadText(&file, timeS, sizeof(timeS), CSV_DELIM) != CSV_DELIM - || csvReadText(&file, dateS, sizeof(dateS), CSV_DELIM) != '\n') { - Serial.println("read error"); - int ch; - int nr = 0; - // print part of file after error. - while ((ch = file.read()) > 0 && nr++ < 100) { - Serial.write(ch); - } - break; - } - Serial.print(tcalc); - Serial.print(CSV_DELIM); - Serial.print(t1); - Serial.print(CSV_DELIM); - Serial.print(t2); - Serial.print(CSV_DELIM); - Serial.print(h1); - Serial.print(CSV_DELIM); - Serial.print(h2); - Serial.print(CSV_DELIM); - Serial.print(timeS); - Serial.print(CSV_DELIM); - Serial.println(dateS); - } - file.close(); -} -//------------------------------------------------------------------------------ -void loop() { -} - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsvArray/ReadCsvArray.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsvArray/ReadCsvArray.ino deleted file mode 100644 index 683d061c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsvArray/ReadCsvArray.ino +++ /dev/null @@ -1,141 +0,0 @@ -// Read a two dimensional array from a CSV file. -// -#include -#include -#define CS_PIN SS - -// 5 X 4 array -#define ROW_DIM 5 -#define COL_DIM 4 - -using namespace sdfat; - -SdFat SD; -File file; - -/* - * Read a file one field at a time. - * - * file - File to read. - * - * str - Character array for the field. - * - * size - Size of str array. - * - * delim - String containing field delimiters. - * - * return - length of field including terminating delimiter. - * - * Note, the last character of str will not be a delimiter if - * a read error occurs, the field is too long, or the file - * does not end with a delimiter. Consider this an error - * if not at end-of-file. - * - */ -size_t readField(File* file, char* str, size_t size, const char* delim) { - char ch; - size_t n = 0; - while ((n + 1) < size && file->read(&ch, 1) == 1) { - // Delete CR. - if (ch == '\r') { - continue; - } - str[n++] = ch; - if (strchr(delim, ch)) { - break; - } - } - str[n] = '\0'; - return n; -} -//------------------------------------------------------------------------------ -#define errorHalt(msg) {Serial.println(F(msg)); SysCall::halt();} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize the SD. - if (!SD.begin(CS_PIN)) { - errorHalt("begin failed"); - } - // Create or open the file. - file = SD.open("READNUM.TXT", FILE_WRITE); - if (!file) { - errorHalt("open failed"); - } - // Rewind file so test data is not appended. - file.rewind(); - - // Write test data. - file.print(F( - "11,12,13,14\r\n" - "21,22,23,24\r\n" - "31,32,33,34\r\n" - "41,42,43,44\r\n" - "51,52,53,54" // Allow missing endl at eof. - )); - - // Rewind the file for read. - file.rewind(); - - // Array for data. - int array[ROW_DIM][COL_DIM]; - int i = 0; // First array index. - int j = 0; // Second array index - size_t n; // Length of returned field with delimiter. - char str[20]; // Must hold longest field with delimiter and zero byte. - char *ptr; // Test for valid field. - - // Read the file and store the data. - - for (i = 0; i < ROW_DIM; i++) { - for (j = 0; j < COL_DIM; j++) { - n = readField(&file, str, sizeof(str), ",\n"); - if (n == 0) { - errorHalt("Too few lines"); - } - array[i][j] = strtol(str, &ptr, 10); - if (ptr == str) { - errorHalt("bad number"); - } - while (*ptr == ' ') { - ptr++; - } - if (*ptr != ',' && *ptr != '\n' && *ptr != '\0') { - errorHalt("extra characters in field"); - } - if (j < (COL_DIM-1) && str[n-1] != ',') { - errorHalt("line with too few fields"); - } - } - // Allow missing endl at eof. - if (str[n-1] != '\n' && file.available()) { - errorHalt("missing endl"); - } - } - - // Print the array. - for (i = 0; i < ROW_DIM; i++) { - for (j = 0; j < COL_DIM; j++) { - if (j) { - Serial.print(' '); - } - Serial.print(array[i][j]); - } - Serial.println(); - } - Serial.println("Done"); - file.close(); -} -//------------------------------------------------------------------------------ -void loop() { -} - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsvStream/ReadCsvStream.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsvStream/ReadCsvStream.ino deleted file mode 100644 index 1aa4e29b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadCsvStream/ReadCsvStream.ino +++ /dev/null @@ -1,123 +0,0 @@ -/* - * This example reads a simple CSV, comma-separated values, file. - * Each line of the file has a label and three values, a long and two floats. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// create Serial stream -ArduinoOutStream cout(Serial); - -char fileName[] = "testfile.csv"; -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -// read and print CSV test file -void readFile() { - long lg = 0; - float f1, f2; - char text[10]; - char c1, c2, c3; // space for commas. - - // open input file - ifstream sdin(fileName); - - // check for open error - if (!sdin.is_open()) { - error("open"); - } - - // read until input fails - while (1) { - // Get text field. - sdin.get(text, sizeof(text), ','); - - // Assume EOF if fail. - if (sdin.fail()) { - break; - } - - // Get commas and numbers. - sdin >> c1 >> lg >> c2 >> f1 >> c3 >> f2; - - // Skip CR/LF. - sdin.skipWhite(); - - if (sdin.fail()) { - error("bad input"); - } - - // error in line if not commas - if (c1 != ',' || c2 != ',' || c3 != ',') { - error("comma"); - } - - // print in six character wide columns - cout << text << setw(6) << lg << setw(6) << f1 << setw(6) << f2 << endl; - } - // Error in an input line if file is not at EOF. - if (!sdin.eof()) { - error("readFile"); - } -} -//------------------------------------------------------------------------------ -// write test file -void writeFile() { - - // create or open and truncate output file - ofstream sdout(fileName); - - // write file from string stored in flash - sdout << F( - "Line 1,1,2.3,4.5\n" - "Line 2,6,7.8,9.0\n" - "Line 3,9,8.7,6.5\n" - "Line 4,-4,-3.2,-1\n") << flush; - - // check for any errors - if (!sdout) { - error("writeFile"); - } - - sdout.close(); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // create test file - writeFile(); - - cout << endl; - - // read and print test - readFile(); - - cout << "\nDone!" << endl; -} -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadWrite/ReadWrite.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadWrite/ReadWrite.ino deleted file mode 100644 index 0d650303..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/ReadWrite/ReadWrite.ino +++ /dev/null @@ -1,84 +0,0 @@ -/* - SD card read/write - - This example shows how to read and write data to and from an SD card file - The circuit: - * SD card attached to SPI bus as follows: - ** MOSI - pin 11 - ** MISO - pin 12 - ** CLK - pin 13 - - created Nov 2010 - by David A. Mellis - modified 9 Apr 2012 - by Tom Igoe - - This example code is in the public domain. - - */ - -#include -//#include -#include "SdFat.h" - -using namespace sdfat; - -SdFat SD; - -#define SD_CS_PIN SS -File myFile; - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - Serial.print("Initializing SD card..."); - - if (!SD.begin(SD_CS_PIN)) { - Serial.println("initialization failed!"); - return; - } - Serial.println("initialization done."); - - // open the file. note that only one file can be open at a time, - // so you have to close this one before opening another. - myFile = SD.open("test.txt", FILE_WRITE); - - // if the file opened okay, write to it: - if (myFile) { - Serial.print("Writing to test.txt..."); - myFile.println("testing 1, 2, 3."); - // close the file: - myFile.close(); - Serial.println("done."); - } else { - // if the file didn't open, print an error: - Serial.println("error opening test.txt"); - } - - // re-open the file for reading: - myFile = SD.open("test.txt"); - if (myFile) { - Serial.println("test.txt:"); - - // read from the file until there's nothing else in it: - while (myFile.available()) { - Serial.write(myFile.read()); - } - // close the file: - myFile.close(); - } else { - // if the file didn't open, print an error: - Serial.println("error opening test.txt"); - } -} - -void loop() { - // nothing happens after setup -} - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/STM32Test/STM32Test.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/STM32Test/STM32Test.ino deleted file mode 100644 index 9de42e21..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/STM32Test/STM32Test.ino +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Example use of two SPI ports on an STM32 board. - * Note SPI speed is limited to 18 MHz. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" - -using namespace sdfat; - -// set ENABLE_EXTENDED_TRANSFER_CLASS non-zero to use faster EX classes - -// Use first SPI port -SdFat sd1; -// SdFatEX sd1; -const uint8_t SD1_CS = PA4; // chip select for sd1 - -// Use second SPI port -SPIClass SPI_2(2); -SdFat sd2(&SPI_2); -// SdFatEX sd2(&SPI_2); - -const uint8_t SD2_CS = PB12; // chip select for sd2 - -const uint8_t BUF_DIM = 100; -uint8_t buf[BUF_DIM]; - -const uint32_t FILE_SIZE = 1000000; -const uint16_t NWRITE = FILE_SIZE/BUF_DIM; -//------------------------------------------------------------------------------ -// print error msg, any SD error codes, and halt. -// store messages in flash -#define errorExit(msg) errorHalt(F(msg)) -#define initError(msg) initErrorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - } - - // fill buffer with known data - for (size_t i = 0; i < sizeof(buf); i++) { - buf[i] = i; - } - - Serial.println(F("type any character to start")); - while (!Serial.available()) { - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // initialize the first card - if (!sd1.begin(SD1_CS, SD_SCK_MHZ(18))) { - sd1.initError("sd1:"); - } - // create Dir1 on sd1 if it does not exist - if (!sd1.exists("/Dir1")) { - if (!sd1.mkdir("/Dir1")) { - sd1.errorExit("sd1.mkdir"); - } - } - // initialize the second card - if (!sd2.begin(SD2_CS, SD_SCK_MHZ(18))) { - sd2.initError("sd2:"); - } -// create Dir2 on sd2 if it does not exist - if (!sd2.exists("/Dir2")) { - if (!sd2.mkdir("/Dir2")) { - sd2.errorExit("sd2.mkdir"); - } - } - // list root directory on both cards - Serial.println(F("------sd1 root-------")); - sd1.ls(); - Serial.println(F("------sd2 root-------")); - sd2.ls(); - - // make /Dir1 the default directory for sd1 - if (!sd1.chdir("/Dir1")) { - sd1.errorExit("sd1.chdir"); - } - // remove test.bin from /Dir1 directory of sd1 - if (sd1.exists("test.bin")) { - if (!sd1.remove("test.bin")) { - sd2.errorExit("remove test.bin"); - } - } - // make /Dir2 the default directory for sd2 - if (!sd2.chdir("/Dir2")) { - sd2.errorExit("sd2.chdir"); - } - // remove rename.bin from /Dir2 directory of sd2 - if (sd2.exists("rename.bin")) { - if (!sd2.remove("rename.bin")) { - sd2.errorExit("remove rename.bin"); - } - } - // list current directory on both cards - Serial.println(F("------sd1 Dir1-------")); - sd1.ls(); - Serial.println(F("------sd2 Dir2-------")); - sd2.ls(); - Serial.println(F("---------------------")); - - // set the current working directory for open() to sd1 - sd1.chvol(); - - // create or open /Dir1/test.bin and truncate it to zero length - SdFile file1; - if (!file1.open("test.bin", O_RDWR | O_CREAT | O_TRUNC)) { - sd1.errorExit("file1"); - } - Serial.println(F("Writing test.bin to sd1")); - - // write data to /Dir1/test.bin on sd1 - for (uint16_t i = 0; i < NWRITE; i++) { - if (file1.write(buf, sizeof(buf)) != sizeof(buf)) { - sd1.errorExit("sd1.write"); - } - } - // set the current working directory for open() to sd2 - sd2.chvol(); - - // create or open /Dir2/copy.bin and truncate it to zero length - SdFile file2; - if (!file2.open("copy.bin", O_WRONLY | O_CREAT | O_TRUNC)) { - sd2.errorExit("file2"); - } - Serial.println(F("Copying test.bin to copy.bin")); - - // copy file1 to file2 - file1.rewind(); - uint32_t t = millis(); - - while (1) { - int n = file1.read(buf, sizeof(buf)); - if (n < 0) { - sd1.errorExit("read1"); - } - if (n == 0) { - break; - } - if ((int)file2.write(buf, n) != n) { - sd2.errorExit("write2"); - } - } - t = millis() - t; - Serial.print(F("File size: ")); - Serial.println(file2.fileSize()); - Serial.print(F("Copy time: ")); - Serial.print(t); - Serial.println(F(" millis")); - // close test.bin - file1.close(); - file2.close(); - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Renaming copy.bin")); - // rename the copy - if (!sd2.rename("copy.bin", "rename.bin")) { - sd2.errorExit("sd2.rename"); - } - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SdFormatter/SdFormatter.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SdFormatter/SdFormatter.ino deleted file mode 100644 index 3c9118a1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SdFormatter/SdFormatter.ino +++ /dev/null @@ -1,554 +0,0 @@ -/* - * This program will format an SD or SDHC card. - * Warning all data will be deleted! - * - * For SD/SDHC cards larger than 64 MB this - * program attempts to match the format - * generated by SDFormatter available here: - * - * http://www.sdcard.org/consumers/formatter/ - * - * For smaller cards this program uses FAT16 - * and SDFormatter uses FAT12. - */ - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -// -// Change the value of chipSelect if your hardware does -// not use the default value, SS. Common values are: -// Arduino Ethernet shield: pin 4 -// Sparkfun SD shield: pin 8 -// Adafruit SD shields and modules: pin 10 -const uint8_t chipSelect = SS; - -// Initialize at highest supported speed not over 50 MHz. -// Reduce max speed if errors occur. -#define SPI_SPEED SD_SCK_MHZ(50) - -// Print extra info for debug if DEBUG_PRINT is nonzero -#define DEBUG_PRINT 0 -#include -#include "SdFat.h" -#include "sdios.h" -#if DEBUG_PRINT -#include "FreeStack.h" -#endif // DEBUG_PRINT - -using namespace sdfat; - -// Serial output stream -ArduinoOutStream cout(Serial); - -#if USE_SDIO -// Use faster SdioCardEX -SdioCardEX card; -// SdioCard card; -#else // USE_SDIO -Sd2Card card; -#endif // USE_SDIO - -uint32_t cardSizeBlocks; -uint32_t cardCapacityMB; - -// cache for SD block -cache_t cache; - -// MBR information -uint8_t partType; -uint32_t relSector; -uint32_t partSize; - -// Fake disk geometry -uint8_t numberOfHeads; -uint8_t sectorsPerTrack; - -// FAT parameters -uint16_t reservedSectors; -uint8_t sectorsPerCluster; -uint32_t fatStart; -uint32_t fatSize; -uint32_t dataStart; - -// constants for file system structure -uint16_t const BU16 = 128; -uint16_t const BU32 = 8192; - -// strings needed in file system structures -char noName[] = "NO NAME "; -char fat16str[] = "FAT16 "; -char fat32str[] = "FAT32 "; -//------------------------------------------------------------------------------ -#define sdError(msg) {cout << F("error: ") << F(msg) << endl; sdErrorHalt();} -//------------------------------------------------------------------------------ -void sdErrorHalt() { - if (card.errorCode()) { - cout << F("SD error: ") << hex << int(card.errorCode()); - cout << ',' << int(card.errorData()) << dec << endl; - } - SysCall::halt(); -} -//------------------------------------------------------------------------------ -#if DEBUG_PRINT -void debugPrint() { - cout << F("FreeStack: ") << FreeStack() << endl; - cout << F("partStart: ") << relSector << endl; - cout << F("partSize: ") << partSize << endl; - cout << F("reserved: ") << reservedSectors << endl; - cout << F("fatStart: ") << fatStart << endl; - cout << F("fatSize: ") << fatSize << endl; - cout << F("dataStart: ") << dataStart << endl; - cout << F("clusterCount: "); - cout << ((relSector + partSize - dataStart)/sectorsPerCluster) << endl; - cout << endl; - cout << F("Heads: ") << int(numberOfHeads) << endl; - cout << F("Sectors: ") << int(sectorsPerTrack) << endl; - cout << F("Cylinders: "); - cout << cardSizeBlocks/(numberOfHeads*sectorsPerTrack) << endl; -} -#endif // DEBUG_PRINT -//------------------------------------------------------------------------------ -// write cached block to the card -uint8_t writeCache(uint32_t lbn) { - return card.writeBlock(lbn, cache.data); -} -//------------------------------------------------------------------------------ -// initialize appropriate sizes for SD capacity -void initSizes() { - if (cardCapacityMB <= 6) { - sdError("Card is too small."); - } else if (cardCapacityMB <= 16) { - sectorsPerCluster = 2; - } else if (cardCapacityMB <= 32) { - sectorsPerCluster = 4; - } else if (cardCapacityMB <= 64) { - sectorsPerCluster = 8; - } else if (cardCapacityMB <= 128) { - sectorsPerCluster = 16; - } else if (cardCapacityMB <= 1024) { - sectorsPerCluster = 32; - } else if (cardCapacityMB <= 32768) { - sectorsPerCluster = 64; - } else { - // SDXC cards - sectorsPerCluster = 128; - } - - cout << F("Blocks/Cluster: ") << int(sectorsPerCluster) << endl; - // set fake disk geometry - sectorsPerTrack = cardCapacityMB <= 256 ? 32 : 63; - - if (cardCapacityMB <= 16) { - numberOfHeads = 2; - } else if (cardCapacityMB <= 32) { - numberOfHeads = 4; - } else if (cardCapacityMB <= 128) { - numberOfHeads = 8; - } else if (cardCapacityMB <= 504) { - numberOfHeads = 16; - } else if (cardCapacityMB <= 1008) { - numberOfHeads = 32; - } else if (cardCapacityMB <= 2016) { - numberOfHeads = 64; - } else if (cardCapacityMB <= 4032) { - numberOfHeads = 128; - } else { - numberOfHeads = 255; - } -} -//------------------------------------------------------------------------------ -// zero cache and optionally set the sector signature -void clearCache(uint8_t addSig) { - memset(&cache, 0, sizeof(cache)); - if (addSig) { - cache.mbr.mbrSig0 = BOOTSIG0; - cache.mbr.mbrSig1 = BOOTSIG1; - } -} -//------------------------------------------------------------------------------ -// zero FAT and root dir area on SD -void clearFatDir(uint32_t bgn, uint32_t count) { - clearCache(false); -#if USE_SDIO - for (uint32_t i = 0; i < count; i++) { - if (!card.writeBlock(bgn + i, cache.data)) { - sdError("Clear FAT/DIR writeBlock failed"); - } - if ((i & 0XFF) == 0) { - cout << '.'; - } - } -#else // USE_SDIO - if (!card.writeStart(bgn, count)) { - sdError("Clear FAT/DIR writeStart failed"); - } - for (uint32_t i = 0; i < count; i++) { - if ((i & 0XFF) == 0) { - cout << '.'; - } - if (!card.writeData(cache.data)) { - sdError("Clear FAT/DIR writeData failed"); - } - } - if (!card.writeStop()) { - sdError("Clear FAT/DIR writeStop failed"); - } -#endif // USE_SDIO - cout << endl; -} -//------------------------------------------------------------------------------ -// return cylinder number for a logical block number -uint16_t lbnToCylinder(uint32_t lbn) { - return lbn / (numberOfHeads * sectorsPerTrack); -} -//------------------------------------------------------------------------------ -// return head number for a logical block number -uint8_t lbnToHead(uint32_t lbn) { - return (lbn % (numberOfHeads * sectorsPerTrack)) / sectorsPerTrack; -} -//------------------------------------------------------------------------------ -// return sector number for a logical block number -uint8_t lbnToSector(uint32_t lbn) { - return (lbn % sectorsPerTrack) + 1; -} -//------------------------------------------------------------------------------ -// format and write the Master Boot Record -void writeMbr() { - clearCache(true); - part_t* p = cache.mbr.part; - p->boot = 0; - uint16_t c = lbnToCylinder(relSector); - if (c > 1023) { - sdError("MBR CHS"); - } - p->beginCylinderHigh = c >> 8; - p->beginCylinderLow = c & 0XFF; - p->beginHead = lbnToHead(relSector); - p->beginSector = lbnToSector(relSector); - p->type = partType; - uint32_t endLbn = relSector + partSize - 1; - c = lbnToCylinder(endLbn); - if (c <= 1023) { - p->endCylinderHigh = c >> 8; - p->endCylinderLow = c & 0XFF; - p->endHead = lbnToHead(endLbn); - p->endSector = lbnToSector(endLbn); - } else { - // Too big flag, c = 1023, h = 254, s = 63 - p->endCylinderHigh = 3; - p->endCylinderLow = 255; - p->endHead = 254; - p->endSector = 63; - } - p->firstSector = relSector; - p->totalSectors = partSize; - if (!writeCache(0)) { - sdError("write MBR"); - } -} -//------------------------------------------------------------------------------ -// generate serial number from card size and micros since boot -uint32_t volSerialNumber() { - return (cardSizeBlocks << 8) + micros(); -} -//------------------------------------------------------------------------------ -// format the SD as FAT16 -void makeFat16() { - uint32_t nc; - for (dataStart = 2 * BU16;; dataStart += BU16) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 255)/256; - uint32_t r = BU16 + 1 + 2 * fatSize + 32; - if (dataStart < r) { - continue; - } - relSector = dataStart - r + BU16; - break; - } - // check valid cluster count for FAT16 volume - if (nc < 4085 || nc >= 65525) { - sdError("Bad cluster count"); - } - reservedSectors = 1; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + 2 * fatSize + reservedSectors + 32; - if (partSize < 32680) { - partType = 0X01; - } else if (partSize < 65536) { - partType = 0X04; - } else { - partType = 0X06; - } - // write MBR - writeMbr(); - clearCache(true); - fat_boot_t* pb = &cache.fbs; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->rootDirEntryCount = 512; - pb->mediaType = 0XF8; - pb->sectorsPerFat16 = fatSize; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat16str, sizeof(pb->fileSystemType)); - // write partition boot sector - if (!writeCache(relSector)) { - sdError("FAT16 write PBS failed"); - } - // clear FAT and root directory - clearFatDir(fatStart, dataStart - fatStart); - clearCache(false); - cache.fat16[0] = 0XFFF8; - cache.fat16[1] = 0XFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT16 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// format the SD as FAT32 -void makeFat32() { - uint32_t nc; - relSector = BU32; - for (dataStart = 2 * BU32;; dataStart += BU32) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 127)/128; - uint32_t r = relSector + 9 + 2 * fatSize; - if (dataStart >= r) { - break; - } - } - // error if too few clusters in FAT32 volume - if (nc < 65525) { - sdError("Bad cluster count"); - } - reservedSectors = dataStart - relSector - 2 * fatSize; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + dataStart - relSector; - // type depends on address of end sector - // max CHS has lbn = 16450560 = 1024*255*63 - if ((relSector + partSize) <= 16450560) { - // FAT32 - partType = 0X0B; - } else { - // FAT32 with INT 13 - partType = 0X0C; - } - writeMbr(); - clearCache(true); - - fat32_boot_t* pb = &cache.fbs32; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->mediaType = 0XF8; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->sectorsPerFat32 = fatSize; - pb->fat32RootCluster = 2; - pb->fat32FSInfo = 1; - pb->fat32BackBootBlock = 6; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat32str, sizeof(pb->fileSystemType)); - // write partition boot sector and backup - if (!writeCache(relSector) - || !writeCache(relSector + 6)) { - sdError("FAT32 write PBS failed"); - } - clearCache(true); - // write extra boot area and backup - if (!writeCache(relSector + 2) - || !writeCache(relSector + 8)) { - sdError("FAT32 PBS ext failed"); - } - fat32_fsinfo_t* pf = &cache.fsinfo; - pf->leadSignature = FSINFO_LEAD_SIG; - pf->structSignature = FSINFO_STRUCT_SIG; - pf->freeCount = 0XFFFFFFFF; - pf->nextFree = 0XFFFFFFFF; - // write FSINFO sector and backup - if (!writeCache(relSector + 1) - || !writeCache(relSector + 7)) { - sdError("FAT32 FSINFO failed"); - } - clearFatDir(fatStart, 2 * fatSize + sectorsPerCluster); - clearCache(false); - cache.fat32[0] = 0x0FFFFFF8; - cache.fat32[1] = 0x0FFFFFFF; - cache.fat32[2] = 0x0FFFFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT32 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// flash erase all data -uint32_t const ERASE_SIZE = 262144L; -void eraseCard() { - cout << endl << F("Erasing\n"); - uint32_t firstBlock = 0; - uint32_t lastBlock; - uint16_t n = 0; - - do { - lastBlock = firstBlock + ERASE_SIZE - 1; - if (lastBlock >= cardSizeBlocks) { - lastBlock = cardSizeBlocks - 1; - } - if (!card.erase(firstBlock, lastBlock)) { - sdError("erase failed"); - } - cout << '.'; - if ((n++)%32 == 31) { - cout << endl; - } - firstBlock += ERASE_SIZE; - } while (firstBlock < cardSizeBlocks); - cout << endl; - - if (!card.readBlock(0, cache.data)) { - sdError("readBlock"); - } - cout << hex << showbase << setfill('0') << internal; - cout << F("All data set to ") << setw(4) << int(cache.data[0]) << endl; - cout << dec << noshowbase << setfill(' ') << right; - cout << F("Erase done\n"); -} -//------------------------------------------------------------------------------ -void formatCard() { - cout << endl; - cout << F("Formatting\n"); - initSizes(); - if (card.type() != SD_CARD_TYPE_SDHC) { - cout << F("FAT16\n"); - makeFat16(); - } else { - cout << F("FAT32\n"); - makeFat32(); - } -#if DEBUG_PRINT - debugPrint(); -#endif // DEBUG_PRINT - cout << F("Format done\n"); -} -//------------------------------------------------------------------------------ -void setup() { - char c; - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Discard any extra characters. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F( - "\n" - "This program can erase and/or format SD/SDHC cards.\n" - "\n" - "Erase uses the card's fast flash erase command.\n" - "Flash erase sets all data to 0X00 for most cards\n" - "and 0XFF for a few vendor's cards.\n" - "\n" - "Cards larger than 2 GB will be formatted FAT32 and\n" - "smaller cards will be formatted FAT16.\n" - "\n" - "Warning, all data on the card will be erased.\n" - "Enter 'Y' to continue: "); - while (!Serial.available()) { - SysCall::yield(); - } - - c = Serial.read(); - cout << c << endl; - if (c != 'Y') { - cout << F("Quiting, you did not enter 'Y'.\n"); - return; - } - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - cout << F( - "\n" - "Options are:\n" - "E - erase the card and skip formatting.\n" - "F - erase and then format the card. (recommended)\n" - "Q - quick format the card without erase.\n" - "\n" - "Enter option: "); - - while (!Serial.available()) { - SysCall::yield(); - } - c = Serial.read(); - cout << c << endl; - if (!strchr("EFQ", c)) { - cout << F("Quiting, invalid option entered.") << endl; - return; - } -#if USE_SDIO - if (!card.begin()) { - sdError("card.begin failed"); - } -#else // USE_SDIO - if (!card.begin(chipSelect, SPI_SPEED)) { - cout << F( - "\nSD initialization failure!\n" - "Is the SD card inserted correctly?\n" - "Is chip select correct at the top of this program?\n"); - sdError("card.begin failed"); - } -#endif - cardSizeBlocks = card.cardSize(); - if (cardSizeBlocks == 0) { - sdError("cardSize"); - } - cardCapacityMB = (cardSizeBlocks + 2047)/2048; - - cout << F("Card Size: ") << setprecision(0) << 1.048576*cardCapacityMB; - cout << F(" MB, (MB = 1,000,000 bytes)") << endl; - - if (c == 'E' || c == 'F') { - eraseCard(); - } - if (c == 'F' || c == 'Q') { - formatCard(); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SdInfo/SdInfo.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SdInfo/SdInfo.ino deleted file mode 100644 index 04f2d12a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SdInfo/SdInfo.ino +++ /dev/null @@ -1,250 +0,0 @@ -/* - * This program attempts to initialize an SD card and analyze its structure. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -/* - * SD chip select pin. Common values are: - * - * Arduino Ethernet shield, pin 4. - * SparkFun SD shield, pin 8. - * Adafruit SD shields and modules, pin 10. - * Default SD chip select is the SPI SS pin. - */ -const uint8_t SD_CHIP_SELECT = SS; -/* - * Set DISABLE_CHIP_SELECT to disable a second SPI device. - * For example, with the Ethernet shield, set DISABLE_CHIP_SELECT - * to 10 to disable the Ethernet controller. - */ -const int8_t DISABLE_CHIP_SELECT = -1; - -#if USE_SDIO -// Use faster SdioCardEX -SdFatSdioEX sd; -// SdFatSdio sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// serial output steam -ArduinoOutStream cout(Serial); - -// global for card size -uint32_t cardSize; - -// global for card erase size -uint32_t eraseSize; -//------------------------------------------------------------------------------ -// store error strings in flash -#define sdErrorMsg(msg) sd.errorPrint(F(msg)); -//------------------------------------------------------------------------------ -uint8_t cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - sdErrorMsg("readCID failed"); - return false; - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; - return true; -} -//------------------------------------------------------------------------------ -uint8_t csdDmp() { - csd_t csd; - uint8_t eraseSingleBlock; - if (!sd.card()->readCSD(&csd)) { - sdErrorMsg("readCSD failed"); - return false; - } - if (csd.v1.csd_ver == 0) { - eraseSingleBlock = csd.v1.erase_blk_en; - eraseSize = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; - } else if (csd.v2.csd_ver == 1) { - eraseSingleBlock = csd.v2.erase_blk_en; - eraseSize = (csd.v2.sector_size_high << 1) | csd.v2.sector_size_low; - } else { - cout << F("csd version error\n"); - return false; - } - eraseSize++; - cout << F("cardSize: ") << 0.000512*cardSize; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - - cout << F("flashEraseSize: ") << int(eraseSize) << F(" blocks\n"); - cout << F("eraseSingleBlock: "); - if (eraseSingleBlock) { - cout << F("true\n"); - } else { - cout << F("false\n"); - } - return true; -} -//------------------------------------------------------------------------------ -// print partition table -uint8_t partDmp() { - mbr_t mbr; - if (!sd.card()->readBlock(0, (uint8_t*)&mbr)) { - sdErrorMsg("read MBR failed"); - return false; - } - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - if ((pt->boot & 0X7F) != 0 || pt->firstSector > cardSize) { - cout << F("\nNo MBR. Assuming Super Floppy format.\n"); - return true; - } - } - cout << F("\nSD Partition Table\n"); - cout << F("part,boot,type,start,length\n"); - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - cout << int(ip) << ',' << hex << int(pt->boot) << ',' << int(pt->type); - cout << dec << ',' << pt->firstSector <<',' << pt->totalSectors << endl; - } - return true; -} -//------------------------------------------------------------------------------ -void volDmp() { - cout << F("\nVolume is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("blocksPerCluster: ") << int(sd.vol()->blocksPerCluster()) << endl; - cout << F("clusterCount: ") << sd.vol()->clusterCount() << endl; - cout << F("freeClusters: "); - uint32_t volFree = sd.vol()->freeClusterCount(); - cout << volFree << endl; - float fs = 0.000512*volFree*sd.vol()->blocksPerCluster(); - cout << F("freeSpace: ") << fs << F(" MB (MB = 1,000,000 bytes)\n"); - cout << F("fatStartBlock: ") << sd.vol()->fatStartBlock() << endl; - cout << F("fatCount: ") << int(sd.vol()->fatCount()) << endl; - cout << F("blocksPerFat: ") << sd.vol()->blocksPerFat() << endl; - cout << F("rootDirStart: ") << sd.vol()->rootDirStart() << endl; - cout << F("dataStartBlock: ") << sd.vol()->dataStartBlock() << endl; - if (sd.vol()->dataStartBlock() % eraseSize) { - cout << F("Data area is not aligned on flash erase boundaries!\n"); - cout << F("Download and use formatter from www.sdcard.org!\n"); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; - - // F stores strings in flash to save RAM - cout << F("SdFat version: ") << SD_FAT_VERSION << endl; -#if !USE_SDIO - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - cout << F("\nAssuming the SD chip select pin is: ") <= 0); - - // F stores strings in flash to save RAM - cout << F("\ntype any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - uint32_t t = millis(); -#if USE_SDIO - if (!sd.cardBegin()) { - sdErrorMsg("\ncardBegin failed"); - return; - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.cardBegin(SD_CHIP_SELECT, SD_SCK_MHZ(50))) { - sdErrorMsg("cardBegin failed"); - return; - } - #endif // USE_SDIO - t = millis() - t; - - cardSize = sd.card()->cardSize(); - if (cardSize == 0) { - sdErrorMsg("cardSize failed"); - return; - } - cout << F("\ninit time: ") << t << " ms" << endl; - cout << F("\nCard type: "); - switch (sd.card()->type()) { - case SD_CARD_TYPE_SD1: - cout << F("SD1\n"); - break; - - case SD_CARD_TYPE_SD2: - cout << F("SD2\n"); - break; - - case SD_CARD_TYPE_SDHC: - if (cardSize < 70000000) { - cout << F("SDHC\n"); - } else { - cout << F("SDXC\n"); - } - break; - - default: - cout << F("Unknown\n"); - } - if (!cidDmp()) { - return; - } - if (!csdDmp()) { - return; - } - uint32_t ocr; - if (!sd.card()->readOCR(&ocr)) { - sdErrorMsg("\nreadOCR failed"); - return; - } - cout << F("OCR: ") << hex << ocr << dec << endl; - if (!partDmp()) { - return; - } - if (!sd.fsBegin()) { - sdErrorMsg("\nFile System initialization failed.\n"); - return; - } - volDmp(); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SoftwareSpi/SoftwareSpi.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SoftwareSpi/SoftwareSpi.ino deleted file mode 100644 index 98d0486e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/SoftwareSpi/SoftwareSpi.ino +++ /dev/null @@ -1,61 +0,0 @@ -// An example of the SdFatSoftSpi template class. -// This example is for an Adafruit Data Logging Shield on a Mega. -// Software SPI is required on Mega since this shield connects to pins 10-13. -// This example will also run on an Uno and other boards using software SPI. -// -#include -#include "SdFat.h" - -using namespace sdfat; - -#if ENABLE_SOFTWARE_SPI_CLASS // Must be set in SdFat/SdFatConfig.h -// -// Pin numbers in templates must be constants. -const uint8_t SOFT_MISO_PIN = 12; -const uint8_t SOFT_MOSI_PIN = 11; -const uint8_t SOFT_SCK_PIN = 13; -// -// Chip select may be constant or RAM variable. -const uint8_t SD_CHIP_SELECT_PIN = 10; - -// SdFat software SPI template -SdFatSoftSpi sd; - -// Test file. -SdFile file; - -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - - if (!sd.begin(SD_CHIP_SELECT_PIN)) { - sd.initErrorHalt(); - } - - if (!file.open("SoftSPI.txt", O_RDWR | O_CREAT)) { - sd.errorHalt(F("open failed")); - } - file.println(F("This line was printed using software SPI.")); - - file.rewind(); - - while (file.available()) { - Serial.write(file.read()); - } - - file.close(); - - Serial.println(F("Done.")); -} -//------------------------------------------------------------------------------ -void loop() {} -#else // ENABLE_SOFTWARE_SPI_CLASS -#error ENABLE_SOFTWARE_SPI_CLASS must be set non-zero in SdFat/SdFatConfig.h -#endif //ENABLE_SOFTWARE_SPI_CLASS diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/StdioBench/StdioBench.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/StdioBench/StdioBench.ino deleted file mode 100644 index 59423648..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/StdioBench/StdioBench.ino +++ /dev/null @@ -1,216 +0,0 @@ -// Benchmark comparing SdFile and StdioStream. -#include -#include "SdFat.h" - -using namespace sdfat; - -// Define PRINT_FIELD nonzero to use printField. -#define PRINT_FIELD 0 - -// Number of lines to list on Serial. -#define STDIO_LIST_COUNT 0 -#define VERIFY_CONTENT 0 - -const uint8_t SD_CS_PIN = SS; -SdFat sd; - -SdFile printFile; -StdioStream stdioFile; - -float f[100]; -char buf[20]; -const char* label[] = -{ "uint8_t 0 to 255, 100 times ", "uint16_t 0 to 20000", - "uint32_t 0 to 20000", "uint32_t 1000000000 to 1000010000", - "float nnn.ffff, 10000 times" -}; -//------------------------------------------------------------------------------ -void setup() { - uint32_t printSize; - uint32_t stdioSize = 0; - uint32_t printTime; - uint32_t stdioTime = 0; - - Serial.begin(9600); - while (!Serial) { - SysCall::yield(); - } - - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - Serial.println(F("Starting test")); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.errorHalt(); - } - - for (uint8_t i = 0; i < 100; i++) { - f[i] = 123.0 + 0.1234*i; - } - - for (uint8_t dataType = 0; dataType < 5; dataType++) { - for (uint8_t fileType = 0; fileType < 2; fileType++) { - if (!fileType) { - if (!printFile.open("print.txt", O_RDWR | O_CREAT | O_TRUNC)) { - Serial.println(F("open fail")); - return; - } - printTime = millis(); - switch (dataType) { - case 0: - for (uint16_t i =0; i < 100; i++) { - for (uint8_t j = 0; j < 255; j++) { - printFile.println(j); - } - } - break; - case 1: - for (uint16_t i = 0; i < 20000; i++) { - printFile.println(i); - } - break; - - case 2: - for (uint32_t i = 0; i < 20000; i++) { - printFile.println(i); - } - break; - - case 3: - for (uint16_t i = 0; i < 10000; i++) { - printFile.println(i + 1000000000UL); - } - break; - - case 4: - for (int j = 0; j < 100; j++) { - for (uint8_t i = 0; i < 100; i++) { - printFile.println(f[i], 4); - } - } - break; - default: - break; - } - printFile.sync(); - printTime = millis() - printTime; - printFile.rewind(); - printSize = printFile.fileSize(); - - } else { - if (!stdioFile.fopen("stream.txt", "w+")) { - Serial.println(F("fopen fail")); - return; - } - stdioTime = millis(); - - switch (dataType) { - case 0: - for (uint16_t i =0; i < 100; i++) { - for (uint8_t j = 0; j < 255; j++) { -#if PRINT_FIELD - stdioFile.printField(j, '\n'); -#else // PRINT_FIELD - stdioFile.println(j); -#endif // PRINT_FIELD - } - } - break; - case 1: - for (uint16_t i = 0; i < 20000; i++) { -#if PRINT_FIELD - stdioFile.printField(i, '\n'); -#else // PRINT_FIELD - stdioFile.println(i); -#endif // PRINT_FIELD - } - break; - - case 2: - for (uint32_t i = 0; i < 20000; i++) { -#if PRINT_FIELD - stdioFile.printField(i, '\n'); -#else // PRINT_FIELD - stdioFile.println(i); -#endif // PRINT_FIELD - } - break; - - case 3: - for (uint16_t i = 0; i < 10000; i++) { - uint32_t n = i + 1000000000UL; -#if PRINT_FIELD - stdioFile.printField(n, '\n'); -#else // PRINT_FIELD - stdioFile.println(n); -#endif // PRINT_FIELD - } - break; - - case 4: - for (int j = 0; j < 100; j++) { - for (uint8_t i = 0; i < 100; i++) { -#if PRINT_FIELD - stdioFile.printField(f[i], '\n', 4); -#else // PRINT_FIELD - stdioFile.println(f[i], 4); -#endif // PRINT_FIELD - } - } - break; - default: - break; - } - stdioFile.fflush(); - stdioTime = millis() - stdioTime; - stdioSize = stdioFile.ftell(); - if (STDIO_LIST_COUNT) { - size_t len; - stdioFile.rewind(); - for (int i = 0; i < STDIO_LIST_COUNT; i++) { - stdioFile.fgets(buf, sizeof(buf), &len); - Serial.print(len); - Serial.print(','); - Serial.print(buf); - } - } - - } - - } - Serial.println(label[dataType]); - if (VERIFY_CONTENT && printSize == stdioSize) { - printFile.rewind(); - stdioFile.rewind(); - for (uint32_t i = 0; i < stdioSize; i++) { - if (printFile.read() != stdioFile.getc()) { - Serial.print(F("Files differ at pos: ")); - Serial.println(i); - return; - } - } - } - - Serial.print(F("fileSize: ")); - if (printSize != stdioSize) { - Serial.print(printSize); - Serial.print(F(" != ")); - } - Serial.println(stdioSize); - Serial.print(F("print millis: ")); - Serial.println(printTime); - Serial.print(F("stdio millis: ")); - Serial.println(stdioTime); - Serial.print(F("ratio: ")); - Serial.println((float)printTime/(float)stdioTime); - Serial.println(); - printFile.close(); - stdioFile.fclose(); - } - Serial.println(F("Done")); -} -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino deleted file mode 100644 index 01ad2b55..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/TeensySdioDemo/TeensySdioDemo.ino +++ /dev/null @@ -1,171 +0,0 @@ -// Simple performance test for Teensy 3.5/3.6 SDHC. -// Demonstrates yield() efficiency. - -// Warning SdFatSdio and SdFatSdioEX normally should -// not both be used in a program. -// Each has its own cache and member variables. - -#include "SdFat.h" - -using namespace sdfat; - -// 32 KiB buffer. -const size_t BUF_DIM = 32768; - -// 8 MiB file. -const uint32_t FILE_SIZE = 256UL*BUF_DIM; - -SdFatSdio sd; - -SdFatSdioEX sdEx; - -File file; - -uint8_t buf[BUF_DIM]; - -// buffer as uint32_t -uint32_t* buf32 = (uint32_t*)buf; - -// Total usec in read/write calls. -uint32_t totalMicros = 0; -// Time in yield() function. -uint32_t yieldMicros = 0; -// Number of yield calls. -uint32_t yieldCalls = 0; -// Max busy time for single yield call. -uint32_t yieldMaxUsec = 0; -// Control access to the two versions of SdFat. -bool useEx = false; -//----------------------------------------------------------------------------- -bool sdBusy() { - return useEx ? sdEx.card()->isBusy() : sd.card()->isBusy(); -} -//----------------------------------------------------------------------------- -void errorHalt(const char* msg) { - if (useEx) { - sdEx.errorHalt(msg); - } else { - sd.errorHalt(msg); - } -} -//------------------------------------------------------------------------------ -uint32_t kHzSdClk() { - return useEx ? sdEx.card()->kHzSdClk() : sd.card()->kHzSdClk(); -} -//------------------------------------------------------------------------------ -// Replace "weak" system yield() function. -void yield() { - // Only count cardBusy time. - if (!sdBusy()) { - return; - } - uint32_t m = micros(); - yieldCalls++; - while (sdBusy()) { - // Do something here. - } - m = micros() - m; - if (m > yieldMaxUsec) { - yieldMaxUsec = m; - } - yieldMicros += m; -} -//----------------------------------------------------------------------------- -void runTest() { - // Zero Stats - totalMicros = 0; - yieldMicros = 0; - yieldCalls = 0; - yieldMaxUsec = 0; - if (!file.open("TeensyDemo.bin", O_RDWR | O_CREAT)) { - errorHalt("open failed"); - } - Serial.println("\nsize,write,read"); - Serial.println("bytes,KB/sec,KB/sec"); - for (size_t nb = 512; nb <= BUF_DIM; nb *= 2) { - file.truncate(0); - uint32_t nRdWr = FILE_SIZE/nb; - Serial.print(nb); - Serial.print(','); - uint32_t t = micros(); - for (uint32_t n = 0; n < nRdWr; n++) { - // Set start and end of buffer. - buf32[0] = n; - buf32[nb/4 - 1] = n; - if (nb != file.write(buf, nb)) { - errorHalt("write failed"); - } - } - t = micros() - t; - totalMicros += t; - Serial.print(1000.0*FILE_SIZE/t); - Serial.print(','); - file.rewind(); - t = micros(); - - for (uint32_t n = 0; n < nRdWr; n++) { - if ((int)nb != file.read(buf, nb)) { - errorHalt("read failed"); - } - // crude check of data. - if (buf32[0] != n || buf32[nb/4 - 1] != n) { - errorHalt("data check"); - } - } - t = micros() - t; - totalMicros += t; - Serial.println(1000.0*FILE_SIZE/t); - } - file.close(); - Serial.print("\ntotalMicros "); - Serial.println(totalMicros); - Serial.print("yieldMicros "); - Serial.println(yieldMicros); - Serial.print("yieldCalls "); - Serial.println(yieldCalls); - Serial.print("yieldMaxUsec "); - Serial.println(yieldMaxUsec); - Serial.print("kHzSdClk "); - Serial.println(kHzSdClk()); - Serial.println("Done"); -} -//----------------------------------------------------------------------------- -void setup() { - Serial.begin(9600); - while (!Serial) { - } - Serial.println("SdFatSdioEX uses extended multi-block transfers without DMA."); - Serial.println("SdFatSdio uses a traditional DMA SDIO implementation."); - Serial.println("Note the difference is speed and busy yield time.\n"); -} -//----------------------------------------------------------------------------- -void loop() { - do { - delay(10); - } while (Serial.available() && Serial.read()); - - Serial.println("Type '1' for SdFatSdioEX or '2' for SdFatSdio"); - while (!Serial.available()) { - } - char c = Serial.read(); - if (c != '1' && c != '2') { - Serial.println("Invalid input"); - return; - } - if (c =='1') { - useEx = true; - if (!sdEx.begin()) { - sd.initErrorHalt("SdFatSdioEX begin() failed"); - } - // make sdEx the current volume. - sdEx.chvol(); - } else { - useEx = false; - if (!sd.begin()) { - sd.initErrorHalt("SdFatSdio begin() failed"); - } - // make sd the current volume. - sd.chvol(); - } - runTest(); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/Timestamp/Timestamp.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/Timestamp/Timestamp.ino deleted file mode 100644 index 288010ff..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/Timestamp/Timestamp.ino +++ /dev/null @@ -1,178 +0,0 @@ -/* - * This program tests the dateTimeCallback() function - * and the timestamp() function. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -SdFat sd; - -SdFile file; - -// Default SD chip select is SS pin -const uint8_t chipSelect = SS; - -// create Serial stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -/* - * date/time values for debug - * normally supplied by a real-time clock or GPS - */ -// date 1-Oct-14 -uint16_t year = 2014; -uint8_t month = 10; -uint8_t day = 1; - -// time 20:30:40 -uint8_t hour = 20; -uint8_t minute = 30; -uint8_t second = 40; -//------------------------------------------------------------------------------ -/* - * User provided date time callback function. - * See SdFile::dateTimeCallback() for usage. - */ -void dateTime(uint16_t* date, uint16_t* time) { - // User gets date and time from GPS or real-time - // clock in real callback function - - // return date using FAT_DATE macro to format fields - *date = FAT_DATE(year, month, day); - - // return time using FAT_TIME macro to format fields - *time = FAT_TIME(hour, minute, second); -} -//------------------------------------------------------------------------------ -/* - * Function to print all timestamps. - */ -void printTimestamps(SdFile& f) { - dir_t d; - if (!f.dirEntry(&d)) { - error("f.dirEntry failed"); - } - - cout << F("Creation: "); - f.printFatDate(d.creationDate); - cout << ' '; - f.printFatTime(d.creationTime); - cout << endl; - - cout << F("Modify: "); - f.printFatDate(d.lastWriteDate); - cout <<' '; - f.printFatTime(d.lastWriteTime); - cout << endl; - - cout << F("Access: "); - f.printFatDate(d.lastAccessDate); - cout << endl; -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // remove files if they exist - sd.remove("callback.txt"); - sd.remove("default.txt"); - sd.remove("stamp.txt"); - - // create a new file with default timestamps - if (!file.open("default.txt", O_WRONLY | O_CREAT)) { - error("open default.txt failed"); - } - cout << F("\nOpen with default times\n"); - printTimestamps(file); - - // close file - file.close(); - /* - * Test the date time callback function. - * - * dateTimeCallback() sets the function - * that is called when a file is created - * or when a file's directory entry is - * modified by sync(). - * - * The callback can be disabled by the call - * SdFile::dateTimeCallbackCancel() - */ - // set date time callback function - SdFile::dateTimeCallback(dateTime); - - // create a new file with callback timestamps - if (!file.open("callback.txt", O_WRONLY | O_CREAT)) { - error("open callback.txt failed"); - } - cout << ("\nOpen with callback times\n"); - printTimestamps(file); - - // change call back date - day += 1; - - // must add two to see change since FAT second field is 5-bits - second += 2; - - // modify file by writing a byte - file.write('t'); - - // force dir update - file.sync(); - - cout << F("\nTimes after write\n"); - printTimestamps(file); - - // close file - file.close(); - /* - * Test timestamp() function - * - * Cancel callback so sync will not - * change access/modify timestamp - */ - SdFile::dateTimeCallbackCancel(); - - // create a new file with default timestamps - if (!file.open("stamp.txt", O_WRONLY | O_CREAT)) { - error("open stamp.txt failed"); - } - // set creation date time - if (!file.timestamp(T_CREATE, 2014, 11, 10, 1, 2, 3)) { - error("set create time failed"); - } - // set write/modification date time - if (!file.timestamp(T_WRITE, 2014, 11, 11, 4, 5, 6)) { - error("set write time failed"); - } - // set access date - if (!file.timestamp(T_ACCESS, 2014, 11, 12, 7, 8, 9)) { - error("set access time failed"); - } - cout << F("\nTimes after timestamp() calls\n"); - printTimestamps(file); - - file.close(); - cout << F("\nDone\n"); -} - -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/TwoCards/TwoCards.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/TwoCards/TwoCards.ino deleted file mode 100644 index 6b68c8b3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/TwoCards/TwoCards.ino +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Warning This example requires extra RAM and may crash on Uno. - * Example use of two SD cards. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" - -using namespace sdfat; - -SdFat sd1; -const uint8_t SD1_CS = 10; // chip select for sd1 - -SdFat sd2; -const uint8_t SD2_CS = 4; // chip select for sd2 - -const uint8_t BUF_DIM = 100; -uint8_t buf[BUF_DIM]; - -const uint32_t FILE_SIZE = 1000000; -const uint16_t NWRITE = FILE_SIZE/BUF_DIM; -//------------------------------------------------------------------------------ -// print error msg, any SD error codes, and halt. -// store messages in flash -#define errorExit(msg) errorHalt(F(msg)) -#define initError(msg) initErrorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("FreeStack: ")); - - Serial.println(FreeStack()); - - // fill buffer with known data - for (size_t i = 0; i < sizeof(buf); i++) { - buf[i] = i; - } - - Serial.println(F("type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - - // disable sd2 while initializing sd1 - pinMode(SD2_CS, OUTPUT); - digitalWrite(SD2_CS, HIGH); - - // initialize the first card - if (!sd1.begin(SD1_CS)) { - sd1.initError("sd1:"); - } - // create Dir1 on sd1 if it does not exist - if (!sd1.exists("/Dir1")) { - if (!sd1.mkdir("/Dir1")) { - sd1.errorExit("sd1.mkdir"); - } - } - // initialize the second card - if (!sd2.begin(SD2_CS)) { - sd2.initError("sd2:"); - } -// create Dir2 on sd2 if it does not exist - if (!sd2.exists("/Dir2")) { - if (!sd2.mkdir("/Dir2")) { - sd2.errorExit("sd2.mkdir"); - } - } - // list root directory on both cards - Serial.println(F("------sd1 root-------")); - sd1.ls(); - Serial.println(F("------sd2 root-------")); - sd2.ls(); - - // make /Dir1 the default directory for sd1 - if (!sd1.chdir("/Dir1")) { - sd1.errorExit("sd1.chdir"); - } - - // make /Dir2 the default directory for sd2 - if (!sd2.chdir("/Dir2")) { - sd2.errorExit("sd2.chdir"); - } - - // list current directory on both cards - Serial.println(F("------sd1 Dir1-------")); - sd1.ls(); - Serial.println(F("------sd2 Dir2-------")); - sd2.ls(); - Serial.println(F("---------------------")); - - // remove rename.bin from /Dir2 directory of sd2 - if (sd2.exists("rename.bin")) { - if (!sd2.remove("rename.bin")) { - sd2.errorExit("remove rename.bin"); - } - } - // set the current working directory for open() to sd1 - sd1.chvol(); - - // create or open /Dir1/test.bin and truncate it to zero length - SdFile file1; - if (!file1.open("test.bin", O_RDWR | O_CREAT | O_TRUNC)) { - sd1.errorExit("file1"); - } - Serial.println(F("Writing test.bin to sd1")); - - // write data to /Dir1/test.bin on sd1 - for (uint16_t i = 0; i < NWRITE; i++) { - if (file1.write(buf, sizeof(buf)) != sizeof(buf)) { - sd1.errorExit("sd1.write"); - } - } - // set the current working directory for open() to sd2 - sd2.chvol(); - - // create or open /Dir2/copy.bin and truncate it to zero length - SdFile file2; - if (!file2.open("copy.bin", O_WRONLY | O_CREAT | O_TRUNC)) { - sd2.errorExit("file2"); - } - Serial.println(F("Copying test.bin to copy.bin")); - - // copy file1 to file2 - file1.rewind(); - uint32_t t = millis(); - - while (1) { - int n = file1.read(buf, sizeof(buf)); - if (n < 0) { - sd1.errorExit("read1"); - } - if (n == 0) { - break; - } - if ((int)file2.write(buf, n) != n) { - sd2.errorExit("write2"); - } - } - t = millis() - t; - Serial.print(F("File size: ")); - Serial.println(file2.fileSize()); - Serial.print(F("Copy time: ")); - Serial.print(t); - Serial.println(F(" millis")); - // close test.bin - file1.close(); - file2.close(); - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Renaming copy.bin")); - // rename the copy - if (!sd2.rename("copy.bin", "rename.bin")) { - sd2.errorExit("sd2.rename"); - } - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/VolumeFreeSpace/VolumeFreeSpace.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/VolumeFreeSpace/VolumeFreeSpace.ino deleted file mode 100644 index f5f67dd9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/VolumeFreeSpace/VolumeFreeSpace.ino +++ /dev/null @@ -1,85 +0,0 @@ -/* - * This program demonstrates the freeClusterCount() call. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -/* - * SD chip select pin. Common values are: - * - * Arduino Ethernet shield, pin 4. - * SparkFun SD shield, pin 8. - * Adafruit Datalogging shield, pin 10. - * Default SD chip select is the SPI SS pin. - */ -const uint8_t chipSelect = SS; - -#define TEST_FILE "Cluster.test" -// file system -SdFat sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void printFreeSpace() { - cout << F("freeClusterCount() call time: "); - uint32_t m = micros(); - uint32_t volFree = sd.vol()->freeClusterCount(); - cout << micros() - m << F(" micros\n"); - cout << F("freeClusters: ") << volFree << setprecision(3) << endl; - float fs = 0.000512*volFree*sd.vol()->blocksPerCluster(); - cout << F("freeSpace: ") << fs << F(" MB (MB = 1,000,000 bytes)\n\n"); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - if (!MAINTAIN_FREE_CLUSTER_COUNT) { - cout << F("Please edit SdFatConfig.h and set\n"); - cout << F("MAINTAIN_FREE_CLUSTER_COUNT nonzero for\n"); - cout << F("maximum freeClusterCount() performance.\n\n"); - } - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - // Insure no TEST_FILE. - sd.remove(TEST_FILE); - - cout << F("\nFirst call to freeClusterCount scans the FAT.\n\n"); - printFreeSpace(); - - cout << F("Create and write to ") << TEST_FILE << endl; - if (!file.open(TEST_FILE, O_WRONLY | O_CREAT)) { - sd.errorHalt(F("Create failed")); - } - file.print(F("Cause a cluster to be allocated")); - file.close(); - - cout << F("\nSecond freeClusterCount call is faster if\n"); - cout << F("MAINTAIN_FREE_CLUSTER_COUNT is nonzero.\n\n"); - - printFreeSpace(); - - cout << F("Remove ") << TEST_FILE << endl << endl; - sd.remove(TEST_FILE); - printFreeSpace(); - cout << F("Done") << endl; -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/bench/bench.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/bench/bench.ino deleted file mode 100644 index b252c01f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/bench/bench.ino +++ /dev/null @@ -1,224 +0,0 @@ -/* - * This program is a simple binary write/read benchmark. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -using namespace sdfat; - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 - -// SD chip select pin -const uint8_t chipSelect = SS; - -// Size of read/write. -const size_t BUF_SIZE = 512; - -// File size in MB where MB = 1,000,000 bytes. -const uint32_t FILE_SIZE_MB = 5; - -// Write pass count. -const uint8_t WRITE_COUNT = 2; - -// Read pass count. -const uint8_t READ_COUNT = 2; -//============================================================================== -// End of configuration constants. -//------------------------------------------------------------------------------ -// File size in bytes. -const uint32_t FILE_SIZE = 1000000UL*FILE_SIZE_MB; - -uint8_t buf[BUF_SIZE]; - -// file system -#if USE_SDIO -// Traditional DMA version. -// SdFatSdio sd; -// Faster version. -SdFatSdioEX sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// Set ENABLE_EXTENDED_TRANSFER_CLASS to use extended SD I/O. -// Requires dedicated use of the SPI bus. -// SdFatEX sd; - -// Set ENABLE_SOFTWARE_SPI_CLASS to use software SPI. -// Args are misoPin, mosiPin, sckPin. -// SdFatSoftSpi<6, 7, 5> sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// Store error strings in flash to save RAM. -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - error("readCID failed"); - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - cout << F("\nUse a freshly formatted SD for best performance.\n"); - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; -} -//------------------------------------------------------------------------------ -void loop() { - float s; - uint32_t t; - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Discard any input. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F( stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - cout << F("chipSelect: ") << int(chipSelect) << endl; - cout << F("FreeStack: ") << FreeStack() << endl; - -#if USE_SDIO - if (!sd.begin()) { - sd.initErrorHalt(); - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } -#endif // USE_SDIO - cout << F("Type is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("Card size: ") << sd.card()->cardSize()*512E-9; - cout << F(" GB (GB = 1E9 bytes)") << endl; - - cidDmp(); - - // open or create file - truncate existing file. - if (!file.open("bench.dat", O_RDWR | O_CREAT | O_TRUNC)) { - error("open failed"); - } - - // fill buf with known data - for (size_t i = 0; i < (BUF_SIZE-2); i++) { - buf[i] = 'A' + (i % 26); - } - buf[BUF_SIZE-2] = '\r'; - buf[BUF_SIZE-1] = '\n'; - - cout << F("File size ") << FILE_SIZE_MB << F(" MB\n"); - cout << F("Buffer size ") << BUF_SIZE << F(" bytes\n"); - cout << F("Starting write test, please wait.") << endl << endl; - - // do write test - uint32_t n = FILE_SIZE/sizeof(buf); - cout < m) { - minLatency = m; - } - totalLatency += m; - } - file.sync(); - t = millis() - t; - s = file.fileSize(); - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Starting read test, please wait.") << endl; - cout << endl < m) { - minLatency = m; - } - totalLatency += m; - if (buf[BUF_SIZE-1] != '\n') { - error("data check"); - } - } - s = file.fileSize(); - t = millis() - t; - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Done") << endl; - file.close(); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/dataLogger/dataLogger.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/dataLogger/dataLogger.ino deleted file mode 100644 index 57cbeb51..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/dataLogger/dataLogger.ino +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Simple data logger. - */ -#include -#include "SdFat.h" - -using namespace sdfat; - -// SD chip select pin. Be sure to disable any other SPI devices such as Enet. -const uint8_t chipSelect = SS; - -// Interval between data records in milliseconds. -// The interval must be greater than the maximum SD write latency plus the -// time to acquire and write data to the SD to avoid overrun errors. -// Run the bench example to check the quality of your SD card. -const uint32_t SAMPLE_INTERVAL_MS = 1000; - -// Log file base name. Must be six characters or less. -#define FILE_BASE_NAME "Data" -//------------------------------------------------------------------------------ -// File system object. -SdFat sd; - -// Log file. -SdFile file; - -// Time in micros for next data record. -uint32_t logTime; - -//============================================================================== -// User functions. Edit writeHeader() and logData() for your requirements. - -const uint8_t ANALOG_COUNT = 4; -//------------------------------------------------------------------------------ -// Write data header. -void writeHeader() { - file.print(F("micros")); - for (uint8_t i = 0; i < ANALOG_COUNT; i++) { - file.print(F(",adc")); - file.print(i, DEC); - } - file.println(); -} -//------------------------------------------------------------------------------ -// Log a data record. -void logData() { - uint16_t data[ANALOG_COUNT]; - - // Read all channels to avoid SD write latency between readings. - for (uint8_t i = 0; i < ANALOG_COUNT; i++) { - data[i] = analogRead(i); - } - // Write data to file. Start with log time in micros. - file.print(logTime); - - // Write ADC data to CSV record. - for (uint8_t i = 0; i < ANALOG_COUNT; i++) { - file.write(','); - file.print(data[i]); - } - file.println(); -} -//============================================================================== -// Error messages stored in flash. -#define error(msg) sd.errorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; - char fileName[13] = FILE_BASE_NAME "00.csv"; - - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // Find an unused file name. - if (BASE_NAME_SIZE > 6) { - error("FILE_BASE_NAME too long"); - } - while (sd.exists(fileName)) { - if (fileName[BASE_NAME_SIZE + 1] != '9') { - fileName[BASE_NAME_SIZE + 1]++; - } else if (fileName[BASE_NAME_SIZE] != '9') { - fileName[BASE_NAME_SIZE + 1] = '0'; - fileName[BASE_NAME_SIZE]++; - } else { - error("Can't create file name"); - } - } - if (!file.open(fileName, O_WRONLY | O_CREAT | O_EXCL)) { - error("file.open"); - } - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - Serial.print(F("Logging to: ")); - Serial.println(fileName); - Serial.println(F("Type any character to stop")); - - // Write data header. - writeHeader(); - - // Start on a multiple of the sample interval. - logTime = micros()/(1000UL*SAMPLE_INTERVAL_MS) + 1; - logTime *= 1000UL*SAMPLE_INTERVAL_MS; -} -//------------------------------------------------------------------------------ -void loop() { - // Time for next record. - logTime += 1000UL*SAMPLE_INTERVAL_MS; - - // Wait for log time. - int32_t diff; - do { - diff = micros() - logTime; - } while (diff < 0); - - // Check for data rate too high. - if (diff > 10) { - error("Missed data record"); - } - - logData(); - - // Force data to SD and update the directory entry to avoid data loss. - if (!file.sync() || file.getWriteError()) { - error("write error"); - } - - if (Serial.available()) { - // Close file and stop. - file.close(); - Serial.println(F("Done")); - SysCall::halt(); - } -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/fgets/fgets.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/fgets/fgets.ino deleted file mode 100644 index 7c643610..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/fgets/fgets.ino +++ /dev/null @@ -1,90 +0,0 @@ -// Demo of fgets function to read lines from a file. -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -SdFat sd; -// print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash memory -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void demoFgets() { - char line[25]; - int n; - // open test file - SdFile rdfile("fgets.txt", O_RDONLY); - - // check for open error - if (!rdfile.isOpen()) { - error("demoFgets"); - } - - cout << endl << F( - "Lines with '>' end with a '\\n' character\n" - "Lines with '#' do not end with a '\\n' character\n" - "\n"); - - // read lines from the file - while ((n = rdfile.fgets(line, sizeof(line))) > 0) { - if (line[n - 1] == '\n') { - cout << '>' << line; - } else { - cout << '#' << line << endl; - } - } -} -//------------------------------------------------------------------------------ -void makeTestFile() { - // create or open test file - SdFile wrfile("fgets.txt", O_WRONLY | O_CREAT | O_TRUNC); - - // check for open error - if (!wrfile.isOpen()) { - error("MakeTestFile"); - } - - // write test file - wrfile.print(F( - "Line with CRLF\r\n" - "Line with only LF\n" - "Long line that will require an extra read\n" - "\n" // empty line - "Line at EOF without NL" - )); - wrfile.close(); -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - delay(400); // catch Due reset problem - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - makeTestFile(); - - demoFgets(); - - cout << F("\nDone\n"); -} -void loop(void) {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/formatting/formatting.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/formatting/formatting.ino deleted file mode 100644 index 4ed46204..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/formatting/formatting.ino +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Print a table with various formatting options - * Format dates - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// create Serial stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// print a table to demonstrate format manipulators -void example(void) { - const int max = 10; - const int width = 4; - - for (int row = 1; row <= max; row++) { - for (int col = 1; col <= max; col++) { - cout << setw(width) << row * col << (col == max ? '\n' : ' '); - } - } - cout << endl; -} -//------------------------------------------------------------------------------ -// print a date as mm/dd/yyyy with zero fill in mm and dd -// shows how to set and restore the fill character -void showDate(int m, int d, int y) { - // convert two digit year - if (y < 100) { - y += 2000; - } - - // set new fill to '0' save old fill character - char old = cout.fill('0'); - - // print date - cout << setw(2) << m << '/' << setw(2) << d << '/' << y << endl; - - // restore old fill character - cout.fill(old); -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(2000); - - cout << endl << "default formatting" << endl; - example(); - - cout << showpos << "showpos" << endl; - example(); - - cout << hex << left << showbase << "hex left showbase" << endl; - example(); - - cout << internal << setfill('0') << uppercase; - cout << "uppercase hex internal showbase fill('0')" < -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// create a serial stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void makeTestFile() { - ofstream sdout("getline.txt"); - // use flash for text to save RAM - sdout << F( - "short line\n" - "\n" - "17 character line\n" - "too long for buffer\n" - "line with no nl"); - - sdout.close(); -} -//------------------------------------------------------------------------------ -void testGetline() { - const int line_buffer_size = 18; - char buffer[line_buffer_size]; - ifstream sdin("getline.txt"); - int line_number = 0; - - while (sdin.getline(buffer, line_buffer_size, '\n') || sdin.gcount()) { - int count = sdin.gcount(); - if (sdin.fail()) { - cout << "Partial long line"; - sdin.clear(sdin.rdstate() & ~ios_base::failbit); - } else if (sdin.eof()) { - cout << "Partial final line"; // sdin.fail() is false - } else { - count--; // Don’t include newline in count - cout << "Line " << ++line_number; - } - cout << " (" << count << " chars): " << buffer << endl; - } -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // make the test file - makeTestFile(); - - // run the example - testGetline(); - cout << "\nDone!\n"; -} -//------------------------------------------------------------------------------ -void loop(void) {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/rename/rename.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/rename/rename.ino deleted file mode 100644 index 94b18fdd..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/rename/rename.ino +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This program demonstrates use of SdFile::rename() - * and SdFat::rename(). - */ -#include -#include "SdFat.h" -#include "sdios.h" - -using namespace sdfat; - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system -SdFat sd; - -// Serial print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Insert an empty SD. Type any character to start.") << endl; - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // Remove file/dirs from previous run. - if (sd.exists("dir2/DIR3/NAME3.txt")) { - cout << F("Removing /dir2/DIR3/NAME3.txt") << endl; - if (!sd.remove("dir2/DIR3/NAME3.txt") || - !sd.rmdir("dir2/DIR3/") || - !sd.rmdir("dir2/")) { - error("remove/rmdir failed"); - } - } - // create a file and write one line to the file - SdFile file("Name1.txt", O_WRONLY | O_CREAT); - if (!file.isOpen()) { - error("Name1.txt"); - } - file.println("A test line for Name1.txt"); - - // rename the file name2.txt and add a line. - if (!file.rename("name2.txt")) { - error("name2.txt"); - } - file.println("A test line for name2.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make a new directory - "Dir1" - if (!sd.mkdir("Dir1")) { - error("Dir1"); - } - - // move file into Dir1, rename it NAME3.txt and add a line - if (!file.rename("Dir1/NAME3.txt")) { - error("NAME3.txt"); - } - file.println("A line for Dir1/NAME3.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make directory "dir2" - if (!sd.mkdir("dir2")) { - error("dir2"); - } - - // close file before rename(oldPath, newPath) - file.close(); - - // move Dir1 into dir2 and rename it DIR3 - if (!sd.rename("Dir1", "dir2/DIR3")) { - error("dir2/DIR3"); - } - - // open file for append in new location and add a line - if (!file.open("dir2/DIR3/NAME3.txt", O_WRONLY | O_APPEND)) { - error("dir2/DIR3/NAME3.txt"); - } - file.println("A line for dir2/DIR3/NAME3.txt"); - file.close(); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - cout << F("Done") << endl; -} -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/wipe/wipe.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/wipe/wipe.ino deleted file mode 100644 index a8a088fd..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/examples/wipe/wipe.ino +++ /dev/null @@ -1,45 +0,0 @@ -// Example to wipe all data from an already formatted SD. -#include -#include "SdFat.h" - -using namespace sdfat; - -const int chipSelect = SS; - -SdFat sd; - -void setup() { - int c; - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("Type 'Y' to wipe all data."); - while (!Serial.available()) { - SysCall::yield(); - } - c = Serial.read(); - if (c != 'Y') { - sd.errorHalt("Quitting, you did not type 'Y'."); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - // Use wipe() for no dot progress indicator. - if (!sd.wipe(&Serial)) { - sd.errorHalt("Wipe failed."); - } - // Must reinitialize after wipe. - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.errorHalt("Second init failed."); - } - Serial.println("Done"); -} - -void loop() { -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADC_ENOB.PNG b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADC_ENOB.PNG deleted file mode 100644 index 8f23768d..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADC_ENOB.PNG and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADCdocs/ATmegaADCAccuracy.pdf b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADCdocs/ATmegaADCAccuracy.pdf deleted file mode 100644 index 46ede856..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADCdocs/ATmegaADCAccuracy.pdf and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADCdocs/ExcelFFT.pdf b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADCdocs/ExcelFFT.pdf deleted file mode 100644 index 5e7c94b9..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/ADCdocs/ExcelFFT.pdf and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/AdcErrorStudy.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/AdcErrorStudy.txt deleted file mode 100644 index d24d1f68..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/AdcErrorStudy.txt +++ /dev/null @@ -1,98 +0,0 @@ -Static Tests of the Arduino Internal ADC. - -Several people have asked about the DC accuracy of the Arduino ADC when used in my data logging applications at slow sample rates. - -Here are my results of some "hobby level" measurements of the Arduino ADC. - -One question is how important is the ADC clock rate. I did measurents for an ADC clock rate of 125 kHz to 2MHz. - -Another question is how much does Noise Reduction Mode help. I did a series of measurements using this mode. - -Noise Reduction Mode only reduced the mean absolute error slightly. - -I do calibration to remove Offset Error and Gain Error. Calibration is very important for good accuracy. - -These tests depend on the Arduino voltage regulator providing a stable voltage during the tests. The Arduino ADC reference voltage is Vcc for these tests. This may not be realistic for practical applications - -Integral Non-linearity (INL) is the main remaining source of error. - -Here are my results for static (DC) tests of the internal ADC for three UNOs. - -The Arduinos are powered by a high quality nine volt power supply. - -These tests measure a DC level so do not include problems due to time jitter, S/H time, and other dynamic errors. -There are several studies of the dynamic behavior of the Arduino ADC that determine ENOB (Effective Number Of Bits). - -I used a shield with a 12-bit MCP4921 DAC to generate voltage levels. This ADC has an output buffer so it provides a very low impedance source. - -I measured the voltage of the DAC with a calibrated 18-bit MCP3422 ADC on the shield. - -I used DAC levels from 20 to 4075 to avoid zero offset errors at low voltages and DAC buffer problems at high voltages. - -Each series of measurements has 4056 data points. - -This is a voltage range of about 0.023 to 4.972 volts. - -I calibrated the Arduino ADC for each series of measurements with a linear fit of the form. - -v = a + b*adcValue - -Errors are the difference between the value measured with the 18-bit ADC and the calibrated value measured with the AVR ADC. - -I also show the results for no calibration, the NoCal column, using the datasheet formula. - -Vin = Vref*adcValue/1024 - - -The rows in the tables tables are. - -Min - minimum error in millivolts - -Max - maximum error in millivolts - -MAE - mean absolute error in millivolts - - -The columns in the tables are: - -Ideal - results for a perfect 10-bit ADC for comparison. - -NoCal - datasheet formula (5/1024)*adcValue with Noise Reduction Mode. - -NR128 - Noise Reduction mode with Prescaler of 128 (ADC clock of 125 kHz). - -PS128 - analogRead with Prescaler of 128 (ADC clock of 125 kHz). - -PS64 - analogRead with Prescaler of 64 (ADC clock of 250 kHz). - -PS32 - analogRead with Prescaler of 32 (ADC clock of 500 kHz). - -PS16 - analogRead with Prescaler of 16 (ADC clock of 1 MHz). - -PS8 - analogRead with Prescaler of 8 (ADC clock of 2 MHz). - - -Results for three UNO Arduinos - - First Arduino - Error Millivolts - - Ideal NoCal NR128 PS128 PS64 PS32 PS16 PS8 -Min -2.44 -2.43 -3.72 -4.01 -3.88 -4.53 -6.57 -27.18 -Max 2.44 11.69 3.74 4.24 4.15 5.17 8.69 23.21 -MAE 1.22 5.02 1.33 1.38 1.37 1.44 1.96 4.11 - - Second Arduino - Error Millivolts - - Ideal NoCal NR128 PS128 PS64 PS32 PS16 PS8 -Min -2.44 -9.24 -4.87 -4.86 -5.05 -5.34 -6.52 -24.04 -Max 2.44 11.62 3.95 4.64 4.69 5.71 8.41 21.29 -MAE 1.22 5.33 1.41 1.43 1.44 1.53 2.02 4.05 - - Third Arduino - Error Millivolts - - Ideal NoCal NR128 PS128 PS64 PS32 PS16 PS8 -Min -2.44 -7.88 -4.12 -4.40 -4.32 -4.41 -6.97 -26.93 -Max 2.44 12.53 3.80 4.04 4.18 5.27 8.84 24.59 -MAE 1.22 4.85 1.29 1.33 1.34 1.42 1.91 4.10 - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/DATA.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/DATA.png deleted file mode 100644 index a9b31aa1..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/DATA.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/FFT.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/FFT.png deleted file mode 100644 index dc481a66..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/FFT.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/RateTable.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/RateTable.txt deleted file mode 100644 index 554ba114..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/RateTable.txt +++ /dev/null @@ -1,21 +0,0 @@ -Maximum Sample Rate Table - - ADC clock kHz - 125 250 500 1000 -pins -1 7692 14286 25000 40000 -2 3810 6667 11111 16667 -3 2572 4790 8421 13559 -4 1942 3636 6452 10526 -5 1559 2930 5229 8602 -6 1303 2454 4396 7273 -7 1119 2111 3791 6299 -8 980 1852 3333 5556 -9 872 1649 2974 4969 -10 786 1487 2685 4494 -11 715 1354 2446 4103 -12 656 1242 2247 3774 -13 606 1148 2078 3493 -14 563 1067 1932 3252 -15 525 996 1806 3042 -16 493 935 1695 2857 diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/bintocsv/AnalogBinLogger.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/bintocsv/AnalogBinLogger.h deleted file mode 100644 index da4d448c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/bintocsv/AnalogBinLogger.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef AnalogBinLogger_h -#define AnalogBinLogger_h -//------------------------------------------------------------------------------ -// First block of file. -struct metadata_t { - unsigned long adcFrequency; // ADC clock frequency - unsigned long cpuFrequency; // CPU clock frequency - unsigned long sampleInterval; // Sample interval in CPU cycles. - unsigned long recordEightBits; // Size of ADC values, nonzero for 8-bits. - unsigned long pinCount; // Number of analog pins in a sample. - unsigned long pinNumber[123]; // List of pin numbers in a sample. -}; -//------------------------------------------------------------------------------ -// Data block for 8-bit ADC mode. -const size_t DATA_DIM8 = 508; -struct block8_t { - unsigned short count; // count of data bytes - unsigned short overrun; // count of overruns since last block - unsigned char data[DATA_DIM8]; -}; -//------------------------------------------------------------------------------ -// Data block for 10-bit ADC mode. -const size_t DATA_DIM16 = 254; -struct block16_t { - unsigned short count; // count of data bytes - unsigned short overrun; // count of overruns since last block - unsigned short data[DATA_DIM16]; -}; -//------------------------------------------------------------------------------ -// Data block for PC use -struct adcdata_t { - unsigned short count; // count of data bytes - unsigned short overrun; // count of overruns since last block - union { - unsigned char u8[DATA_DIM8]; - unsigned short u16[DATA_DIM16]; - } data; -}; -#endif // AnalogBinLogger_h \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/bintocsv/bintocsv.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/bintocsv/bintocsv.cpp deleted file mode 100644 index 922644b4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/bintocsv/bintocsv.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include -#include "AnalogBinLogger.h" -FILE *source; -FILE *destination; -int count = 0; - -int main(int argc, char** argv) { - metadata_t meta; - adcdata_t adc; - // Make sure no padding/size problems. - if (sizeof(meta) != 512 || sizeof(adc) != 512) { - printf("block size error\n"); - return 0; - } - if (argc != 3) { - printf("missing arguments:\n"); - printf("%s binFile csvFile\n", argv[0]); - return 0; - } - source = fopen(argv[1], "rb"); - if (!source) { - printf("open failed for %s\n", argv[1]); - return 0; - } - if (fread(&meta, sizeof(meta), 1, source) != 1) { - printf("read meta data failed\n"); - return 0; - } - if ( meta.pinCount == 0 - || meta.pinCount > (sizeof(meta.pinNumber)/sizeof(meta.pinNumber[0])) - || meta.adcFrequency < 50000 || meta.adcFrequency > 4000000) { - printf("Invalid meta data\n"); - return 0; - } - destination = fopen(argv[2], "w"); - if (!destination) { - printf("open failed for %s\n", argv[2]); - return 0; - } - int pinCount = meta.pinCount; - printf("pinCount: %d\n", pinCount); - printf("Sample pins:"); - for (unsigned i = 0; i < meta.pinCount; i++) { - printf(" %d", meta.pinNumber[i]); - } - printf("\n"); - printf("ADC clock rate: %g kHz\n", 0.001*meta.adcFrequency); - float sampleInterval = (float)meta.sampleInterval/(float)meta.cpuFrequency; - printf("Sample rate: %g per sec\n", 1.0/sampleInterval); - printf("Sample interval: %.4f usec\n", 1.0e6*sampleInterval); - - fprintf(destination, "Interval,%.4f,usec\n", 1.0e6*sampleInterval); - // Write header with pin numbers - for (int i = 0; i < ((int)meta.pinCount - 1); i++) { - fprintf(destination, "pin%d,", meta.pinNumber[i]); - } - fprintf(destination, "pin%d\n", meta.pinNumber[meta.pinCount - 1]); - unsigned maxCount = meta.recordEightBits ? DATA_DIM8 : DATA_DIM16; - while (!feof(source)) { - if (fread(&adc, sizeof(adc), 1, source) != 1) break; - if (adc.count > maxCount) { - printf("****Invalid data block****\n"); - return 0; - } - if (adc.overrun) { - fprintf(destination, "Overruns,%d\n", adc.overrun); - } - for (int i = 0; i < adc.count; i++) { - unsigned value = meta.recordEightBits ? adc.data.u8[i] : adc.data.u16[i]; - if ((i + 1)%pinCount) { - fprintf(destination, "%d,", value); - } else { - fprintf(destination, "%d\n", value); - } - } - count += adc.count; - } - printf("%d ADC values read\n", count); - fclose(source); - fclose(destination); - return 0; -} \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/readme.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/readme.txt deleted file mode 100644 index 3ae2ca21..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/AnalogBinLoggerExtras/readme.txt +++ /dev/null @@ -1,95 +0,0 @@ -AnalogBinLogger.ino logs analog data to a binary SD file at high rates. - -Samples are logged at regular intervals by using timer1. Timer/Counter1 -Compare Match B is used to trigger the ADC for the first pin in a sample. -The ADC is triggered for remaining sample pins in the ADC conversion complete -interrupt routine. - -Data is captured in the ADC interrupt routine and saved in 512 byte buffers. - -Buffered data is written to the SD in a function called from loop(). The -entire data set is written to a large contiguous file as a single multi-block -write. This reduces write latency problems. - -Many inexpensive SD cards work well at lower rates. I used a $6.00 -SanDisk 4 GB class 4 card for testing. - -SanDisk class 4 cards work well at fairly high rates. I used the 4 GB SanDisk -card to log a single pin at 40,000 samples per second. - -You may need to increase the time between samples if your card has higher -latency. Using a Mega Arduino can help since it has more buffering. - -The bintocsv folder contains a PC program for converting binary files to -CSV files. Build it from the included source files. bintocvs is a command line program. - -bintocsv binFile csvFile - -AnalogBinLogger requires a recent version of the SdFat library. The SdFat -folder contains a beta version I used for development. - -The latest stable version is here: -http://code.google.com/p/sdfatlib/downloads/list - -You also need to install the included BufferedWriter library. It provides -fast text formatting. - -Example data for a 2 kHz sine wave logged at 40,000 samples per second is -shown in DATA.PNG and FFT.PNG shows a FFT of the data. See ExcelFFT.pdf -in the ADCdocs folder for details on calculating a FFT. - -The accuracy of the ADC samples depends on the ADC clock rate. See the -ADC_ENOB.PNG file for a plot of accuracy vs ADC clock frequency. - -See files in the ADCdocs folder for more information on ADC accuracy. - -To modify this program you will need a good knowledge of the Arduino -ADC, timer1 and C++ programming. This is not for the newbie. - -I have an LED and resistor connected to pin 3 to signal fatal errors and -data overruns. Fatal errors are indicated by a blinking led. Overrun errors -are indicated by a solid lit led. The count of samples dropped is written -to the SD and data logging continues. - -You can disable the error led feature by setting the error pin number negative: - -To use AnalogBinLogger, install these items. - -Place the BufferWriter and SdFat folders in your sketchbook libraries folder. - -Place the AnalogIsrLogger folder in your sketchbook folder. - -You must edit the configuration constants at the beginning of the program -to set the sample pins, sample rate, and other configuration values. - -Initially the program is setup to log the first five analog pins at 5000 -samples per second. Change these values to suit your needs. - -See RateTable.txt for maximum allowed sample rates vs pin count and ADC clock -frequency. - -The program has four commands: - -c - convert file to CSV -d - dump data to Serial -e - overrun error details -r - record ADC data - -All commands can be terminated by entering a character from the serial monitor. - -The c command converts the current binary file to a text file. Entering a -character on the serial monitor terminates the command. - -The d command converts the binary file to text and displays it on the serial -monitor. Entering a character on the serial monitor terminates the command. - -The e command displays details about overruns in the current binary file. -Data overruns happen when data samples are lost due to long write latency -of the SD. - -The r command will record ADC data to a binary file. It will terminate -when a character is entered on the serial monitor or the the maximum file -block count has been reached. - -A number of program options can be set by changing constants at the beginning -of the program. \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/MainPage/SdFatmainpage.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/MainPage/SdFatmainpage.h deleted file mode 100644 index faf0a405..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/MainPage/SdFatmainpage.h +++ /dev/null @@ -1,403 +0,0 @@ -/** - * Copyright (c) 20011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** -\mainpage Arduino %SdFat Library -
Copyright © 2012-2018 by William Greiman -
- -\section Intro Introduction -The Arduino %SdFat Library is a minimal implementation of FAT16 and FAT32 -file systems on SD flash memory cards. Standard SD and high capacity SDHC -cards are supported. - -Experimental support for FAT12 can be enabled by setting FAT12_SUPPORT -nonzero in SdFatConfig.h. - -The %SdFat library supports Long %File Names or short 8.3 names. -Edit the SdFatConfig.h file to select short or long file names. - -The main classes in %SdFat are SdFat, SdFatEX, SdFatSoftSpi, SdFatSoftSpiEX, -SdBaseFile, SdFile, File, StdioStream, \ref fstream, \ref ifstream, -and \ref ofstream. - -The SdFat, SdFatEX, SdFatSoftSpi and SdFatSoftSpiEX classes maintain a -FAT volume, a current working directory, and simplify initialization -of other classes. The SdFat and SdFatEX classes uses a fast custom hardware SPI -implementation. The SdFatSoftSpi and SdFatSoftSpiEX classes uses software SPI. - -the SdFatEX and SdFatSoftSpiEX use extended multi-block I/O for enhanced -performance. These classes must have exclusive use of the SPI bus. - -The SdBaseFile class provides basic file access functions such as open(), -binary read(), binary write(), close(), remove(), and sync(). SdBaseFile -is the smallest file class. - -The SdFile class has all the SdBaseFile class functions plus the Arduino -Print class functions. - -The File class has all the SdBaseFile functions plus the functions in -the Arduino SD.h File class. This provides compatibility with the -Arduino SD.h library. - -The StdioStream class implements functions similar to Linux/Unix standard -buffered input/output. - -The \ref fstream class implements C++ iostreams for both reading and writing -text files. - -The \ref ifstream class implements C++ iostreams for reading text files. - -The \ref ofstream class implements C++ iostreams for writing text files. - -The classes \ref ifstream, \ref ofstream, \ref istream, and \ref ostream -follow the C++ \ref iostream standard when possible. - -There are many tutorials and much documentation about using C++ iostreams -on the web. - -http://www.cplusplus.com/ is a good C++ site for learning iostreams. - -The classes \ref ibufstream and \ref obufstream format and parse character - strings in memory buffers. - -the classes ArduinoInStream and ArduinoOutStream provide iostream functions -for Serial, LiquidCrystal, and other devices. - -A number of example are provided in the %SdFat/examples folder. These were -developed to test %SdFat and illustrate its use. - -\section Install Installation - -You must manually install SdFat by copying the SdFat folder from the download -package to the Arduino libraries folder in your sketch folder. - -See the Manual installation section of this guide. - -http://arduino.cc/en/Guide/Libraries - -\section SDconfig SdFat Configuration - -Several configuration options may be changed by editing the SdFatConfig.h -file in the %SdFat folder. - -Set USE_LONG_FILE_NAMES nonzero to enable Long %File Names. By default, -Long %File Names are enabled. For the leanest fastest library disable -Long %File Names. Long %File names require extra flash but no extra RAM. -Opening Long %File Names can be slower than opening Short %File Names. -Data read and write performance is not changed by the type of %File Name. - -If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX -will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, -the class SdFatSoftSpiEX will be defined. -These classes used extended multi-block SD I/O for better performance. -the SPI bus may not be shared with other devices in this mode. - -Set USE_STANDARD_SPI_LIBRARY and ENABLE_SOFTWARE_SPI_CLASS to -enable various SPI options. set USE_STANDARD_SPI_LIBRARY to use the standard -Arduino SPI library. set ENABLE_SOFTWARE_SPI_CLASS to enable the SdFatSoftSpi -class which uses software SPI. - -To enable SD card CRC checking set USE_SD_CRC nonzero. - -Set FAT12_SUPPORT nonzero to enable use of FAT12 volumes. -FAT12 has not been well tested and requires additional flash. - -\section SDPath Paths and Working Directories - -Relative paths in SdFat are resolved in a manner similar to Windows. - -Each instance of SdFat has a current directory. In SdFat this directory -is called the volume working directory, vwd. Initially this directory is -the root directory for the volume. - -The volume working directory is changed by calling SdFat::chdir(path). - -The call sd.chdir("/2014") will change the volume working directory -for sd to "/2014", assuming "/2014" exists. - -Relative paths for SdFat member functions are resolved by starting at -the volume working directory. - -For example, the call sd.mkdir("April") will create the directory -"/2014/April" assuming the volume working directory is "/2014". - -SdFat has a current working directory, cwd, that is used to resolve paths -for file.open() calls. - -For a single SD card the current working directory is always the volume -working directory for that card. - -For multiple SD cards the current working directory is set to the volume -working directory of a card by calling the SdFat::chvol() member function. -The chvol() call is like the Windows \: command. - -The call sd2.chvol() will set the current working directory to the volume -working directory for sd2. - -If the volume working directory for sd2 is "/music" the call - -file.open("BigBand.wav", O_READ); - -will then open "/music/BigBand.wav" on sd2. - -The following functions are used to change or get current directories. -See the html documentation for more information. -@code -bool SdFat::chdir(bool set_cwd = false); -bool SdFat::chdir(const char* path, bool set_cwd = false); -void SdFat::chvol(); -SdBaseFile* SdFat::vwd(); -static SdBaseFile* SdBaseFile::cwd(); -@endcode - -\section SDcard SD\SDHC Cards - -Arduinos access SD cards using the cards SPI protocol. PCs, Macs, and -most consumer devices use the 4-bit parallel SD protocol. A card that -functions well on A PC or Mac may not work well on the Arduino. - -Most cards have good SPI read performance but cards vary widely in SPI -write performance. Write performance is limited by how efficiently the -card manages internal erase/remapping operations. The Arduino cannot -optimize writes to reduce erase operations because of its limit RAM. - -SanDisk cards generally have good write performance. They seem to have -more internal RAM buffering than other cards and therefore can limit -the number of flash erase operations that the Arduino forces due to its -limited RAM. - -\section Hardware Hardware Configuration - -%SdFat was developed using an - Adafruit Industries -Data Logging Shield. - -The hardware interface to the SD card should not use a resistor based level -shifter. %SdFat sets the SPI bus frequency to 8 MHz which results in signal -rise times that are too slow for the edge detectors in many newer SD card -controllers when resistor voltage dividers are used. - -The 5 to 3.3 V level shifter for 5 V Arduinos should be IC based like the -74HC4050N based circuit shown in the file SdLevel.png. The Adafruit Wave Shield -uses a 74AHC125N. Gravitech sells SD and MicroSD Card Adapters based on the -74LCX245. - -If you are using a resistor based level shifter and are having problems try -setting the SPI bus frequency to 4 MHz. This can be done by using -card.init(SPI_HALF_SPEED) to initialize the SD card. - -A feature to use software SPI is available. Software SPI is slower -than hardware SPI but allows any digital pins to be used. See -SdFatConfig.h for software SPI definitions. - -\section comment Bugs and Comments - -If you wish to report bugs or have comments, send email to -fat16lib@sbcglobal.net. If possible, include a simple program that illustrates -the bug or problem. - -\section Trouble Troubleshooting - -The two example programs QuickStart, and SdInfo are useful for troubleshooting. - -A message like this from SdInfo with errorCode 0X1 indicates the SD card -is not seen by SdFat. This is often caused by a wiring error and reformatting -the card will not solve the problem. -
-cardBegin failed
-SD errorCode: 0X1
-SD errorData: 0XFF
-
-Here is a similar message from QuickStart: -
-SD initialization failed.
-Do not reformat the card!
-Is the card correctly inserted?
-Is chipSelect set to the correct value?
-Does another SPI device need to be disabled?
-Is there a wiring/soldering problem?
-
-errorCode: 0x1, errorData: 0xff
-
-Here is a message from QuickStart that indicates a formatting problem: -
-Card successfully initialized.
-Can't find a valid FAT16/FAT32 partition.
-Try reformatting the card.  For best results use
-the SdFormatter program in SdFat/examples or download
-and use SDFormatter from www.sdcard.org/downloads.
-
- -The best source of recent information and help is the Arduino forum. - -http://arduino.cc/forum/ - -Also search the Adafruit forum. - -http://forums.adafruit.com/ - -If you are using a Teensy try. - -http://forum.pjrc.com/forum.php - -\section SdFatClass SdFat Usage - -SdFat supports Long File Names. Long names in SdFat are limited to 7-bit -ASCII characters in the range 0X20 - 0XFE The following are reserved characters: -
    -
  • < (less than) -
  • > (greater than) -
  • : (colon) -
  • " (double quote) -
  • / (forward slash) -
  • \ (backslash) -
  • | (vertical bar or pipe) -
  • ? (question mark) -
  • * (asterisk) -
-%SdFat uses a slightly restricted form of short names. -Short names are limited to 8 characters followed by an optional period (.) -and extension of up to 3 characters. The characters may be any combination -of letters and digits. The following special characters are also allowed: - -$ % ' - _ @ ~ ` ! ( ) { } ^ # & - -Short names are always converted to upper case and their original case -value is lost. Files that have a base-name where all characters have the -same case and an extension where all characters have the same case will -display properly. Examples this type name are UPPER.low, lower.TXT, -UPPER.TXT, and lower.txt. - -An application which writes to a file using print(), println() or -write() must close the file or call sync() at the appropriate time to -force data and directory information to be written to the SD Card. - -Applications must use care calling sync() -since 2048 bytes of I/O is required to update file and -directory information. This includes writing the current data block, reading -the block that contains the directory entry for update, writing the directory -block back and reading back the current data block. - -It is possible to open a file with two or more instances of a file object. -A file may be corrupted if data is written to the file by more than one -instance of a file object. - -\section HowTo How to format SD Cards as FAT Volumes - -The best way to restore an SD card's format on a PC or Mac is to use -SDFormatter which can be downloaded from: - -http://www.sdcard.org/downloads - -A formatter program, SdFormatter.ino, is included in the -%SdFat/examples/SdFormatter directory. This program attempts to -emulate SD Association's SDFormatter. - -SDFormatter aligns flash erase boundaries with file -system structures which reduces write latency and file system overhead. - -The PC/Mac SDFormatter does not have an option for FAT type so it may format -very small cards as FAT12. Use the SdFat formatter to force FAT16 -formatting of small cards. - -Do not format the SD card with an OS utility, OS utilities do not format SD -cards in conformance with the SD standard. - -You should use a freshly formatted SD card for best performance. FAT -file systems become slower if many files have been created and deleted. -This is because the directory entry for a deleted file is marked as deleted, -but is not deleted. When a new file is created, these entries must be scanned -before creating the file. Also files can become -fragmented which causes reads and writes to be slower. - -\section ExampleFilder Examples - -A number of examples are provided in the SdFat/examples folder. -See the html documentation for a list. - -To access these examples from the Arduino development environment -go to: %File -> Examples -> %SdFat -> \ - -Compile, upload to your Arduino and click on Serial Monitor to run -the example. - -Here is a list: - -AnalogBinLogger - Fast AVR ADC logger - see the AnalogBinLoggerExtras folder. - -bench - A read/write benchmark. - -dataLogger - A simple modifiable data logger. - -DirectoryFunctions - Demo of chdir(), ls(), mkdir(), and rmdir(). - -fgets - Demo of the fgets read line/string function. - -formating - Print a table with various formatting options. - -getline - Example of getline from section 27.7.1.3 of the C++ standard. - -LongFileName - Example use of openNext, printName, and open by index. - -LowLatencyLogger - A data logger for higher data rates. ADC version. - -LowLatencyLoggerADXL345 - A data logger for higher data rates. ADXL345 SPI. - -LowLatencyLoggerMPU6050 - A data logger for higher data rates. MPU6050 I2C. - -OpenNext - Open all files in the root dir and print their filename. - -PrintBenchmark - A simple benchmark for printing to a text file. - -QuickStart - A program to quickly test your SD card and SD shield/module. - -RawWrite - A test of raw write functions for contiguous files. - -ReadCsv - Function to read a CSV text file one field at a time. - -ReadCsvStream - Read a comma-separated value file using iostream extractors. - -ReadCsvArray - Read a two dimensional array from a CSV file. - -ReadWrite - Compatibility test of Arduino SD ReadWrite example. - -rename - A demo of SdFat::rename(old, new) and SdFile::rename(dirFile, newPath). - -SdFormatter - This program will format an SD or SDHC card. - -SoftwareSpi - Simple demonstration of the SdFatSoftSpi template class. - -SdInfo - Initialize an SD card and analyze its structure for trouble shooting. - -StdioBench - Demo and test of stdio style stream. - -Timestamp - Sets file create, modify, and access timestamps. - -TwoCards - Example using two SD cards. - -VolumeFreeSpace - Demonstrate the freeClusterCount() call. - -wipe - Example to wipe all data from an already formatted SD. - */ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFat.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFat.html deleted file mode 100644 index a01f20bc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFat.html +++ /dev/null @@ -1,10 +0,0 @@ - - -A web page that points a browser to a different page - - - - -Your browser didn't automatically redirect. Open html/index.html manually. - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/SdFatTestSuite.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/SdFatTestSuite.cpp deleted file mode 100644 index ba04b8d4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/SdFatTestSuite.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Copyright (c) 20011-2017 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -static uint16_t failCount; -static uint16_t testCount; -static Print* testOut = &Serial; -//------------------------------------------------------------------------------ -static size_t strlenPGM(PGM_P str) { - PGM_P end = str; - while (pgm_read_byte(end++)) {} - return end - str; -} -//------------------------------------------------------------------------------ -void testBegin() { - Serial.begin(9600); - while (!Serial) {} // wait for leonardo - testOut = &Serial; - Serial.println(F("Type any character to begin.")); - while (Serial.read() <= 0) {} - delay(200); // Catch Due reset problem - - testOut->print(F("FreeStack: ")); - testOut->println(FreeStack()); - testOut->println(); - failCount = 0; - testCount = 0; -} -//------------------------------------------------------------------------------ -void testEnd() { - testOut->println(); - testOut->println(F("Compiled: " __DATE__ " " __TIME__)); - testOut->print(F("FreeStack: ")); - testOut->println(FreeStack()); - testOut->print(F("Test count: ")); - testOut->println(testCount); - testOut->print(F("Fail count: ")); - testOut->println(failCount); -} -//------------------------------------------------------------------------------ -static void testResult(bool b, uint8_t n) { - while (n++ < 60) testOut->write(' '); - if (b) { - testOut->println(F("..ok")); - } else { - testOut->println(F("FAIL")); - failCount++; - } - testCount++; -} -//------------------------------------------------------------------------------ -void testVerify_P(char* result, PGM_P expect) { - testOut->write('"'); - testOut->print(result); - testOut->print("\",\""); - testOut->print((const __FlashStringHelper*)expect); - testOut->write('"'); - uint8_t n = strlen(result) + strlenPGM(expect) + 5; - testResult(!strcmp_P(result, expect), n); -} -//------------------------------------------------------------------------------ -void testVerify_P(bool b, PGM_P msg) { - testOut->print((const __FlashStringHelper*)msg); - uint8_t n = strlenPGM(msg); - testResult(b, n); -} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/SdFatTestSuite.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/SdFatTestSuite.h deleted file mode 100644 index f0fbd853..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/SdFatTestSuite.h +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (c) 20011-2017 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdFatTestSuite_h -#define SdFatTestSuite_h -#include "SdFat.h" -#include "FreeStack.h" - -#if defined(__arm__) && !defined(strcmp_P) -#define strcmp_P(a, b) strcmp((a), (b)) -#endif // strcmp_P - -#if defined(__arm__) && !defined(strncpy_P) -#define strncpy_P(s, t, n) strncpy(s, t, n) -#endif // strncpy_P - -#if defined(__arm__) && !defined(strlen_P) -#define strlen_P(str) strlen(str) -#endif // strlen_P - -#define testVerifyBool(result) testVerify_P(result, PSTR(#result)) -#define testVerifyMsg(result, msg) testVerify_P(result, PSTR(msg)) -#define testVerifyStr(result, expect) testVerify_P(result, PSTR(expect)) - -void testBegin(); -void testEnd(); -void testVerify_P(bool b, PGM_P msg); -void testVerify_P(char* result, PGM_P expect); -#endif // SdFatTestSuite_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_File/ATS_SD_File.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_File/ATS_SD_File.ino deleted file mode 100644 index 822534f9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_File/ATS_SD_File.ino +++ /dev/null @@ -1,105 +0,0 @@ -// modified from ArduinoTestSuite 0022 by William Greiman -// Tests writing to and reading from a file, in particular the -// the Stream implementation (e.g. read() and peek()). - -#include -#include -#include -SdFat SD; -#define ATS_PrintTestStatus(msg, b) testVerify_P(b, PSTR(msg)) -void setup() { - boolean b; - SdFile f; - uint32_t fs; - - testBegin(); - - ATS_PrintTestStatus("SD.begin()", b = SD.begin()); - if (!b) goto done; - - SD.remove("test.txt"); - - f.open("test.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - f.print("abc"); - f.print("de"); - f.close(); - - f.open("test.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - f.print("fgh"); - f.close(); - - f.open("test.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - fs =f.fileSize(); - ATS_PrintTestStatus("read()", f.read() == 'a'); - ATS_PrintTestStatus("peek()", f.peek() == 'b'); - ATS_PrintTestStatus("read()", f.read() == 'b'); - ATS_PrintTestStatus("read()", f.read() == 'c'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("read()", f.read() == 'd'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("read()", f.read() == 'e'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("peek()", f.peek() == 'f'); - ATS_PrintTestStatus("read()", f.read() == 'f'); - ATS_PrintTestStatus("peek()", f.peek() == 'g'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("peek()", f.peek() == 'g'); - ATS_PrintTestStatus("read()", f.read() == 'g'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("peek()", f.peek() == 'h'); - ATS_PrintTestStatus("read()", f.read() == 'h'); - ATS_PrintTestStatus("available()", f.curPosition() == fs); - ATS_PrintTestStatus("peek()", f.peek() == -1); - ATS_PrintTestStatus("read()", f.read() == -1); - ATS_PrintTestStatus("peek()", f.peek() == -1); - ATS_PrintTestStatus("read()", f.read() == -1); - - f.close(); - - SD.remove("test2.txt"); - - f.open("test2.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - f.print("ABC"); - f.close(); - - f.open("test.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("peek()", f.peek() == 'a'); - - f.close(); - - f.open("test2.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("peek()", f.peek() == 'A'); - ATS_PrintTestStatus("read()", f.read() == 'A'); - - f.close(); - -done: - testEnd(); - -} - -void loop() {} - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_Files/ATS_SD_Files.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_Files/ATS_SD_Files.ino deleted file mode 100644 index 6bb2c818..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_Files/ATS_SD_Files.ino +++ /dev/null @@ -1,75 +0,0 @@ -// modified from ArduinoTestSuite 0022 by William Greiman -#include -#include -#include -SdFat SD; -#define ATS_PrintTestStatus(msg, b) testVerify_P(b, PSTR(msg)) - -void setup() { - boolean b; - SdFile f; - - testBegin(); - - ATS_PrintTestStatus("SD.begin()", b = SD.begin()); - if (!b) goto done; - - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt")); - ATS_PrintTestStatus("SD.open()", f.open("asdf.txt", FILE_WRITE)); f.close(); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf.txt")); - ATS_PrintTestStatus("SD.exists()", SD.exists("/asdf.txt")); - ATS_PrintTestStatus("SD.remove()", SD.remove("asdf.txt")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt")); - - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - ATS_PrintTestStatus("SD.mkdir()", SD.mkdir("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("/asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf/")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("asdf")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - - ATS_PrintTestStatus("SD.mkdir()", SD.mkdir("x/y/z")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y/z")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y/z/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("/x/y/z/")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("x/y/z")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y/z")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("x/y/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y/z")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("/x")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y/z")); - - ATS_PrintTestStatus("!SD.open()", !(f.open("asdf/asdf.txt", FILE_WRITE))); f.close(); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("SD.mkdir()", SD.mkdir("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.open()", f.open("asdf/asdf.txt", FILE_WRITE)); f.close(); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("!SD.rmdir()", !SD.rmdir("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("SD.remove()", SD.remove("asdf/asdf.txt")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("asdf")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - -done: - - testEnd(); - -} -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_Seek/ATS_SD_Seek.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_Seek/ATS_SD_Seek.ino deleted file mode 100644 index 81e1d73d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/ATS_SD_Seek/ATS_SD_Seek.ino +++ /dev/null @@ -1,108 +0,0 @@ -// modified from ArduinoTestSuite 0022 by William Greiman -// Tests writing to and reading from a file, in particular the -// the Stream implementation (e.g. read() and peek()). -#include -#include -#include -SdFat SD; -#define ATS_PrintTestStatus(msg, b) testVerify_P(b, PSTR(msg)) - -void setup() { - boolean b; - SdFile f; - - testBegin(); - - ATS_PrintTestStatus("SD.begin()", b = SD.begin()); - if (!b) goto done; - - SD.remove("test.txt"); - - f.open("test.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("initial position", f.curPosition() == 0); - ATS_PrintTestStatus("initial size", f.fileSize() == 0); - - f.print("0123456789"); - - ATS_PrintTestStatus("position after writing", f.curPosition() == 10); - ATS_PrintTestStatus("size after writing", f.fileSize() == 10); - - f.seekSet(0); - - ATS_PrintTestStatus("size after seek", f.fileSize() == 10); - ATS_PrintTestStatus("position after seek", f.curPosition() == 0); - - f.seekSet(7); - - ATS_PrintTestStatus("position after seek", f.curPosition() == 7); - ATS_PrintTestStatus("reading after seek", f.read() == '7'); - ATS_PrintTestStatus("position after reading after seeking", f.curPosition() == 8); - ATS_PrintTestStatus("reading after reading after seeking", f.read() == '8'); - - f.seekSet(3); - - ATS_PrintTestStatus("position after seeking", f.curPosition() == 3); - ATS_PrintTestStatus("peeking after seeking", f.peek() == '3'); - ATS_PrintTestStatus("position after peeking after seeking", f.curPosition() == 3); - ATS_PrintTestStatus("peeking after peeking after seeking", f.peek() == '3'); - ATS_PrintTestStatus("position after peeking after seeking", f.curPosition() == 3); - ATS_PrintTestStatus("peeking after peeking after seeking", f.read() == '3'); - ATS_PrintTestStatus("position after peeking after seeking", f.curPosition() == 4); - - f.seekSet(1); - - ATS_PrintTestStatus("position after seeking", f.curPosition() == 1); - ATS_PrintTestStatus("peeking after seeking", f.peek() == '1'); - - f.seekSet(4); - - ATS_PrintTestStatus("position after seeking", f.curPosition() == 4); - ATS_PrintTestStatus("peeking after seeking", f.peek() == '4'); - - f.seekSet(7); - - ATS_PrintTestStatus("position()", f.curPosition() == 7); - ATS_PrintTestStatus("read()", f.read() == '7'); - - f.seekSet(0); - f.peek(); - f.print("AB"); - - ATS_PrintTestStatus("position()", f.curPosition() == 2); - ATS_PrintTestStatus("size()", f.fileSize() == 10); - ATS_PrintTestStatus("read()", f.read() == '2'); - - f.seekSet(0); - - ATS_PrintTestStatus("read()", f.read() == 'A'); - ATS_PrintTestStatus("read()", f.read() == 'B'); - ATS_PrintTestStatus("read()", f.read() == '2'); - - f.close(); - - f.open("test.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("position()", f.curPosition() == 0); - ATS_PrintTestStatus("size()", f.fileSize() == 10); - ATS_PrintTestStatus("peek()", f.peek() == 'A'); - ATS_PrintTestStatus("read()", f.read() == 'A'); - - f.seekSet(4); - - ATS_PrintTestStatus("position()", f.curPosition() == 4); - ATS_PrintTestStatus("size()", f.fileSize() == 10); - ATS_PrintTestStatus("peek()", f.peek() == '4'); - ATS_PrintTestStatus("read()", f.read() == '4'); - - f.close(); - -done: - testEnd(); -} - -void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/StressTest/StressTest.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/StressTest/StressTest.ino deleted file mode 100644 index 11fb8040..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/StressTest/StressTest.ino +++ /dev/null @@ -1,76 +0,0 @@ -// This stress test will create and write files until the SD is full. -#include -#include - -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; - -// Set write buffer size. -#ifdef __arm__ -#ifndef CORE_TEENSY -// Due -const size_t BUF_SIZE = 32768; -#else // CORE_TEENSY -// Teensy 3.0 -const size_t BUF_SIZE = 8192; -#endif // CORE_TEENSY -#elif defined(RAMEND) && RAMEND > 5000 -// AVR with more than 4 KB RAM -const size_t BUF_SIZE = 4096; -#else // __arm__ -// other -const size_t BUF_SIZE = 512; -#endif // __arm__ - -const size_t FILE_SIZE_KB = 10240; -const uint16_t BUFS_PER_FILE = (1024L*FILE_SIZE_KB/BUF_SIZE); - -SdFat sd; - -SdFile file; - -uint8_t buf[BUF_SIZE]; -char name[13]; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - Serial.print("BUF_SIZE "); - Serial.println(BUF_SIZE); - Serial.println("Type any character to start"); - while (Serial.read() < 0) {} - - if (!sd.begin(SD_CS_PIN))sd.errorHalt("sd.begin"); - - // Fill buf with known value. - for (size_t i = 0; i < BUF_SIZE; i++) buf[i] = i; - - // Wait to begin. - do {delay(10);} while (Serial.read() >= 0); - Serial.println("Type any character to stop after next file"); -} -//------------------------------------------------------------------------------ -void loop() { - // Free KB on SD. - uint32_t freeKB = sd.vol()->freeClusterCount()*sd.vol()->blocksPerCluster()/2; - - Serial.print("Free KB: "); - Serial.println(freeKB); - if (freeKB < 2*FILE_SIZE_KB) { - Serial.println(" Done!"); - while(1); - } - sprintf(name, "%lu.DAT", freeKB); - if (!file.open(name, O_WRITE | O_CREAT | O_TRUNC)) { - sd.errorHalt("Open error!"); - } - for (uint16_t i = 0; i < BUFS_PER_FILE; i++) { - if (file.write(buf, BUF_SIZE) != BUF_SIZE) { - sd.errorHalt("Write error!"); - } - } - file.close(); - if (Serial.available()) { - Serial.println("Stopped!"); - while(1); - } -} \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/TestMkdir/TestMkdir.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/TestMkdir/TestMkdir.ino deleted file mode 100644 index 458de9f8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/TestMkdir/TestMkdir.ino +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This sketch is a test of subdirectory and file creation. - * It also tests allocation of clusters to directories. - * - * It will create two subdirectories and create enough files - * to force the allocation of a cluster to each directory. - * - * More than 3000 files may be created on a FAT32 volume. - * - * Note: Some cards may 'stutter' others just get slow due - * to the number of flash erases this program causes. - */ -#include -#include -#include - -const uint8_t SD_CHIP_SELECT = SS; - -SdFat sd; - -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) - -/* - * create enough files to force a cluster to be allocated to dir. - */ -void dirAllocTest(FatFile* dir) { - char buf[32], name[32]; - SdFile file; - uint16_t n; - uint32_t size = dir->dirSize(); - - // create files and write name to file - for (n = 0; ; n++){ - // make file name - sprintf(name, "%u.TXT", n); - - // open start time - uint32_t t0 = millis(); - if (!file.open(dir, name, O_WRITE | O_CREAT | O_EXCL)) { - error("open for write failed"); - } - - // open end time and write start time - uint32_t t1 = millis(); - // write file name to file - file.print(name); - if (!file.close()) error("close write"); - - // write end time - uint32_t t2 = millis(); - Serial.print(F("WR ")); - Serial.print(n); - Serial.write(' '); - - // print time to create file - Serial.print(t1 - t0); - Serial.write(' '); - - // print time to write file - Serial.println(t2 - t1); - - // directory size will change when a cluster is added - if (dir->curPosition() > size) break; - } - - // read files and check content - for (uint16_t i = 0; i <= n; i++) { - sprintf(name, "%u.TXT", i); - - // open start time - uint32_t t0 = millis(); - if (!file.open(dir, name, O_READ)) { - error("open for read failed"); - } - - // open end time and read start time - uint32_t t1 = millis(); - int16_t nr = file.read(buf, sizeof(buf)); - if (nr < 5) error("file.read failed"); - - // read end time - uint32_t t2 = millis(); - - // check file content - if (strlen(name) != (size_t)nr || strncmp(name, buf, nr)) { - error("content compare failed"); - } - if (!file.close()) error("close read failed"); - - Serial.print(F("RD ")); - Serial.print(i); - Serial.write(' '); - - // print open time - Serial.print(t1 - t0); - Serial.write(' '); - - // print read time - Serial.println(t2 - t1); - } -} - -void setup() { - Serial.begin(9600); - while (!Serial) {} // wait for Leonardo - Serial.println(F("Type any character to start")); - while (Serial.read() <= 0) {} - delay(200); // Catch Due reset problem - - // initialize the SD card at SPI_FULL_SPEED for best performance. - // try SPI_HALF_SPEED if bus errors occur. - if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) sd.initErrorHalt(); - - uint32_t m = millis(); - // write files to root if FAT32 - if (sd.vol()->fatType() == 32) { - Serial.println(F("Writing files to root")); - dirAllocTest(sd.vwd()); - } - - // create sub1 and write files - SdFile sub1; - if (!sub1.mkdir(sd.vwd(), "SUB1")) error("makdeDir SUB1 failed"); - Serial.println(F("Writing files to SUB1")); - dirAllocTest(&sub1); - - // create sub2 and write files - SdFile sub2; - if (!sub2.mkdir(&sub1, "SUB2")) error("mkdir SUB2 failed"); - Serial.println(F("Writing files to SUB2")); - dirAllocTest(&sub2); - m = millis() - m; - Serial.print(F("Done millis: ")); - Serial.println(m); -} - -void loop() { } \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/TestRmdir/TestRmdir.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/TestRmdir/TestRmdir.ino deleted file mode 100644 index 013e921a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/TestRmdir/TestRmdir.ino +++ /dev/null @@ -1,98 +0,0 @@ -/* - * This sketch will remove the files and directories - * created by the SdFatMakeDir.pde sketch. - * - * Performance is erratic due to the large number - * of flash erase operations caused by many random - * writes to file structures. - */ -#include -#include -#include - -const uint8_t SD_CHIP_SELECT = SS; - -SdFat sd; - -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) - -/* - * remove all files in dir. - */ -void deleteFiles(FatFile* dir) { - char name[32]; - SdFile file; - - // open and delete files - for (uint16_t n = 0; ; n++){ - sprintf(name, "%u.TXT", n); - - // open start time - uint32_t t0 = millis(); - - // assume done if open fails - if (!file.open(dir, name, O_WRITE)) return; - - // open end time and remove start time - uint32_t t1 = millis(); - if (!file.remove()) error("file.remove failed"); - - // remove end time - uint32_t t2 = millis(); - - Serial.print(F("RM ")); - Serial.print(n); - Serial.write(' '); - - // open time - Serial.print(t1 - t0); - Serial.write(' '); - - // remove time - Serial.println(t2 - t1); - } -} - -void setup() { - Serial.begin(9600); - while (!Serial) {} // wait for Leonardo - Serial.println(F("Type any character to start")); - while (Serial.read() <= 0) {} - delay(200); // Catch Due reset problem - - // initialize the SD card at SPI_FULL_SPEED for best performance. - // try SPI_HALF_SPEED if bus errors occur. - if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) sd.initErrorHalt(); - - - // delete files in root if FAT32 - if (sd.vol()->fatType() == 32) { - Serial.println(F("Remove files in root")); - deleteFiles(sd.vwd()); - } - - // open SUB1 and delete files - SdFile sub1; - if (!sub1.open("SUB1", O_READ)) error("open SUB1 failed"); - Serial.println(F("Remove files in SUB1")); - deleteFiles(&sub1); - - // open SUB2 and delete files - SdFile sub2; - if (!sub2.open(&sub1, "SUB2", O_READ)) error("open SUB2 failed"); - Serial.println(F("Remove files in SUB2")); - deleteFiles(&sub2); - - // remove SUB2 - if (!sub2.rmdir()) error("sub2.rmdir failed"); - Serial.println(F("SUB2 removed")); - - // remove SUB1 - if (!sub1.rmdir()) error("sub1.rmdir failed"); - Serial.println(F("SUB1 removed")); - - Serial.println(F("Done")); -} - -void loop() { } diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/fstreamTest/fstreamTest.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/fstreamTest/fstreamTest.ino deleted file mode 100644 index 83f2ce50..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/fstreamTest/fstreamTest.ino +++ /dev/null @@ -1,94 +0,0 @@ -#include -#include -#include -SdFat sd; -const char *testName = "SDFAT.TST"; -//------------------------------------------------------------------------------ -void fstreamOpen() { - ios::openmode nocreate[] = {ios::in, ios::in | ios::out}; - ios::openmode create[] = - {ios::out, ios::out | ios::app, ios::app, ios::out | ios::trunc, - ios::in | ios::out | ios::trunc, ios::in | ios::out | ios::app, - ios::in | ios::app}; - ios::openmode illegal[] = - {0, ios::trunc, ios::app | ios::trunc, ios::in | ios::app | ios::trunc, - ios::in | ios::trunc, ios::out | ios::app | ios::trunc, - ios::in | ios::out | ios::app | ios::trunc}; - - sd.remove(testName); - fstream file(testName); - testVerifyMsg(!file.is_open()&& !sd.exists(testName), "fstream constructor"); - - for (uint8_t i = 0 ; i < sizeof(nocreate)/sizeof(nocreate[1]); i++) { - file.close(); - sd.remove(testName); - file.open(testName, nocreate[i]); - testVerifyMsg(!sd.exists(testName) && !file.is_open(), "fstream nocreate !exists"); - } - for (uint8_t i = 0 ; i < sizeof(create)/sizeof(create[1]); i++) { - file.close(); - sd.remove(testName); - file.open(testName, create[i]); - testVerifyMsg(sd.exists(testName) && file.is_open(), "fstream create openmode"); - } - for (uint8_t i = 0 ; i < sizeof(illegal)/sizeof(illegal[1]); i++) { - file.close(); - file.open(testName, illegal[i]); - testVerifyMsg(sd.exists(testName) && !file.is_open(), "fstream illegal openmode"); - } - for (uint8_t i = 0 ; i < sizeof(nocreate)/sizeof(nocreate[1]); i++) { - file.close(); - file.open(testName, nocreate[i]); - testVerifyMsg(sd.exists(testName) && file.is_open(), "fstream nocreate exists"); - } -} -//------------------------------------------------------------------------------ -void testPosition() { - sd.remove(testName); - ofstream ofs(testName); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs.seekp(0, ios::end); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs << "abcde"; - testVerifyBool(ofs.good() && ofs.tellp() == 5); - ofs.seekp(4); - testVerifyBool(ofs.good() && ofs.tellp() == 4); - ofs.seekp(-1, ios::cur); - testVerifyBool(ofs.good() && ofs.tellp() == 3); - ofs.close(); - ifstream ifs(testName, ios::ate); - testVerifyBool(ifs.good() && ifs.tellg() == 5); - ifs.seekg(0); - testVerifyBool(ifs.get() == 'a' && ifs.get() == 'b'); - testVerifyBool(ifs.tellg() == 2 && ifs.good()); - ifs.seekg(3, ios::cur); - testVerifyBool(ifs.tellg() == 5 && ifs.good()); - ifs.seekg(4, ios::beg); - testVerifyBool(ifs.good() && ifs.tellg() == 4); - ifs.close(); - ofs.open(testName, ios::app); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs << 'f'; - testVerifyBool(ofs.good() && ofs.tellp() == 6); - ofs.close(); - ofs.open(testName, ios::trunc); - ofs.seekp(0, ios::end); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs << "ABCDEF"; - ofs.close(); - fstream fs(testName); - testVerifyBool(fs.good() && fs.tellp() == 0 && fs.tellg() == 0); - fs.seekg(2); - testVerifyBool(fs.good() && fs.get() == 'C'); -} -//------------------------------------------------------------------------------ -void setup() { - - testBegin(); - if (!sd.begin()) sd.initErrorHalt(); - fstreamOpen(); - testPosition(); - testEnd(); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/istreamTest/istreamTest.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/istreamTest/istreamTest.ino deleted file mode 100644 index 3cf4d6d1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/istreamTest/istreamTest.ino +++ /dev/null @@ -1,261 +0,0 @@ -#include -#include -#include - -char buf[100]; -ibufstream ib; -#define ibInit(s) ibInit_P(PSTR(s)) - -//---------------------------------------------------------- -void ibInit_P(PGM_P p) { - if (strlen_P(p) >= sizeof(buf)) { - ib.init(""); - ib.setstate(ios::badbit); - } else { - ib.clear(); - strncpy_P(buf, p, sizeof(buf)); - ib.init(buf); - } -} -//------------------------------------------------------------------------------ -void istreamBool() { - bool b; - ibInit(" 0 1 2"); - testVerifyBool((ib >> b) && !b); - testVerifyBool((ib >> b) && b); - testVerifyBool(!(ib >> b) && !ib.good()); - - ibInit(" true false err"); - testVerifyBool((ib >> boolalpha >> b) && b && ib.good()); - testVerifyBool((ib >> b) && !b && ib.good()); - testVerifyBool(!(ib >> b) && ib.fail()); - - ibInit("1"); - testVerifyBool((ib >> noboolalpha >> b) && b && ib.eof()); -} -//------------------------------------------------------------------------------ -void istreamChar() { - char c; - signed char sc; - unsigned char uc; - - ibInit("c s u g"); - testVerifyBool((ib >> c) && ib.good() && c == 'c'); - testVerifyBool((ib >> sc) && ib.good() && sc == 's'); - testVerifyBool((ib >> uc) && ib.good() && uc == 'u'); - testVerifyBool(ib.get() == ' '); - testVerifyBool(ib.peek() == 'g' && ib.good()); - testVerifyBool(ib.get() == 'g' && ib.good()); - testVerifyBool(ib.get() == -1 && ib.eof()); -} -//------------------------------------------------------------------------------ -void istreamDouble() { - double f; - ibInit("0 .1 1. 2 3.4 .1e5 1e5 -1E6 +2.3e-3 -123.4567"); - testVerifyBool((ib >> f) && f == 0 && ib.good()); - testVerifyBool((ib >> f) && f == 0.1 && ib.good()); - testVerifyBool((ib >> f) && f == 1.0 && ib.good()); - testVerifyBool((ib >> f) && f == 2.0 && ib.good()); - testVerifyBool((ib >> f) && f == 3.4 && ib.good()); - testVerifyBool((ib >> f) && f == 10000.0 && ib.good()); - testVerifyBool((ib >> f) && f == 1e5 && ib.good()); - testVerifyBool((ib >> f) && f == -1E6 && ib.good()); - testVerifyBool((ib >> f) && f == 2.3e-3 && ib.good()); - testVerifyBool((ib >> f) && fabs(f + 123.4567) < 1e-5 && ib.eof()); - if (fabs(f + 123.4567) >= 1e-5) Serial.println(f, 8); -} -//------------------------------------------------------------------------------ -void istreamFloat() { - float f; - ibInit("0 .1 1. 2 3.4 .1e5 1e5 -1E6 +2.3e-3 -123.4567"); - testVerifyBool((ib >> f) && f == 0 && ib.good()); - testVerifyBool((ib >> f) && f == 0.1f && ib.good()); - testVerifyBool((ib >> f) && f == 1.0 && ib.good()); - testVerifyBool((ib >> f) && f == 2.0 && ib.good()); - testVerifyBool((ib >> f) && f == 3.4f && ib.good()); - testVerifyBool((ib >> f) && f == 10000.0 && ib.good()); - testVerifyBool((ib >> f) && f == 1e5 && ib.good()); - testVerifyBool((ib >> f) && f == -1E6 && ib.good()); - testVerifyBool((ib >> f) && f == 2.3e-3f && ib.good()); - testVerifyBool((ib >> f) && fabs(f + 123.4567f) < 1e-5 && ib.eof()); - if (fabs(f + 123.4567) >= 1e-5) Serial.println(f, 8); -} -//------------------------------------------------------------------------------ -void istreamGet() { - char s[4]; - ibInit("ab c"); - testVerifyBool(ib.get() == 'a' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == 'b' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == ' ' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == 'c' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == -1 && ib.eof() && ib.gcount() == 0); - - ibInit("ab\ncdef"); - ib.get(s, sizeof(s)); - testVerifyBool(ib.good() && ib.gcount() == 2); - testVerifyStr(s, "ab"); - testVerifyBool(ib.get() == '\n' && ib.good() && ib.gcount() == 1); - ib.get(s, sizeof(s)); - testVerifyBool(ib.good() && ib.gcount() == 3); - testVerifyStr(s, "cde"); - ib.get(s, sizeof(s)); - testVerifyBool(ib.eof() && ib.gcount() == 1); - testVerifyStr(s, "f"); - - ibInit( - "short line\n" - "\n" - "17 character line\n" - "too long for buffer\n" - "line with no nl" - ); - char buf[18]; - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && ib.gcount() == 11); - testVerifyStr(buf, "short line"); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && ib.gcount() == 1 && buf[0] == '\0'); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && ib.gcount() == 18); - testVerifyStr(buf, "17 character line"); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.fail() && !ib.eof() && ib.gcount() == 17); - testVerifyStr(buf, "too long for buff"); - ib.clear(); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && !ib.eof() && ib.gcount() == 3); - testVerifyStr(buf, "er"); - ib.getline(buf, sizeof(buf)); - testVerifyBool(!ib.fail() && ib.eof() && ib.gcount() == 15); - testVerifyStr(buf, "line with no nl"); -} -//------------------------------------------------------------------------------ -void istreamNumber() { - short s; - signed short ss; - unsigned short us; - int i; - signed int si; - unsigned int ui; - long l; - signed long sl; - unsigned long ul; - - ibInit("-32769"); - testVerifyBool(!(ib >> s) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> s) && s == -32768 && ib.good()); - testVerifyBool((ib >> s) && s == 0 && ib.good()); - testVerifyBool((ib >> s) && s == 32767 && ib.good()); - testVerifyBool(!(ib >> s) && ib.fail()); - - ibInit("-32769"); - testVerifyBool(!(ib >> ss) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> ss) && ss == -32768 && ib.good()); - testVerifyBool((ib >> ss) && ss == 0 && ib.good()); - testVerifyBool((ib >> ss) && ss == 32767 && ib.good()); - testVerifyBool(!(ib >> ss) && ib.fail()); - - ibInit("0 65535 65536"); - testVerifyBool((ib >> us) && us == 0 && ib.good()); - testVerifyBool((ib >> us) && us == 65535 && ib.good()); - testVerifyBool(!(ib >> us) && ib.fail()); - -if (sizeof(int) == 2) { - ibInit("-32769"); - testVerifyBool(!(ib >> i) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> i) && i == -32768 && ib.good()); - testVerifyBool((ib >> i) && i == 0 && ib.good()); - testVerifyBool((ib >> i) && i == 32767 && ib.good()); - testVerifyBool(!(ib >> i) && ib.fail()); - - ibInit("-32769"); - testVerifyBool(!(ib >> si) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> si) && si == -32768 && ib.good()); - testVerifyBool((ib >> si) && si == 0 && ib.good()); - testVerifyBool((ib >> si) && si == 32767 && ib.good()); - testVerifyBool(!(ib >> si) && ib.fail()); - - ibInit("0 65535 65536"); - testVerifyBool((ib >> ui) && ui == 0 && ib.good()); - testVerifyBool((ib >> ui) && ui == 65535 && ib.good()); - testVerifyBool(!(ib >> ui) && ib.fail()); - } else { - ibInit("-2147483649"); - testVerifyBool(!(ib >> i) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> i) && i == -2147483648 && ib.good()); - testVerifyBool((ib >> i) && i == 0 && ib.good()); - testVerifyBool((ib >> i) && i == 2147483647 && ib.good()); - testVerifyBool(!(ib >> i) && ib.fail()); - - ibInit("-2147483649"); - testVerifyBool(!(ib >> si) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> si) && si == -2147483648 && ib.good()); - testVerifyBool((ib >> si) && si == 0 && ib.good()); - testVerifyBool((ib >> si) && si == 2147483647 && ib.good()); - testVerifyBool(!(ib >> si) && ib.fail()); - - ibInit("0 4294967295 4294967296"); - testVerifyBool((ib >> ui) && ui == 0 && ib.good()); - testVerifyBool((ib >> ui) && ui == 4294967295 && ib.good()); - testVerifyBool(!(ib >> ui) && ib.fail()); - } - ibInit("-2147483649"); - testVerifyBool(!(ib >> l) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> l) && l == -2147483648 && ib.good()); - testVerifyBool((ib >> l) && l == 0 && ib.good()); - testVerifyBool((ib >> l) && l == 2147483647 && ib.good()); - testVerifyBool(!(ib >> l) && ib.fail()); - - ibInit("-2147483649"); - testVerifyBool(!(ib >> sl) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> sl) && sl == -2147483648 && ib.good()); - testVerifyBool((ib >> sl) && sl == 0 && ib.good()); - testVerifyBool((ib >> sl) && sl == 2147483647 && ib.good()); - testVerifyBool(!(ib >> sl) && ib.fail()); - - ibInit("0 4294967295 4294967296"); - testVerifyBool((ib >> ul) && ul == 0 && ib.good()); - testVerifyBool((ib >> ul) && ul == 4294967295 && ib.good()); - testVerifyBool(!(ib >> ul) && ib.fail()); - - // octal hex - ibInit("123 abc 0xdef 0XABC 567"); - testVerifyBool((ib >> oct >> i) && i == 83); - testVerifyBool((ib >> hex >> i) && i == 0xabc); - testVerifyBool((ib >> i) && i == 0xdef); - testVerifyBool((ib >> i) && i == 0xabc); - testVerifyBool((ib >> dec >> i) && i ==567); -} -//------------------------------------------------------------------------------ -void istreamStr() { - char str[20]; - ibInit("abc def\r\n hij"); - testVerifyBool((ib >> str) && ib.good()); - testVerifyStr(str, "abc"); - testVerifyBool((ib >> str) && ib.good()); - testVerifyStr(str, "def"); - testVerifyBool((ib >> str) && ib.eof()); - testVerifyStr(str, "hij"); -} -//------------------------------------------------------------------------------ -void setup() { - testBegin(); - istreamBool(); - istreamChar(); - istreamDouble(); - istreamFloat(); - istreamGet(); - istreamNumber(); - istreamStr(); - testEnd(); -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnSize/lfnSize.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnSize/lfnSize.ino deleted file mode 100644 index a37e9b21..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnSize/lfnSize.ino +++ /dev/null @@ -1,36 +0,0 @@ -// Program to compare size of SdFat with the SD.h library. -#include -// Select the test library by commenting out one of the following two lines. -// #include -#include - -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; - -#ifdef __SD_H__ -File file; -#else // __SD_H__ -SdFat SD; -SdFile file; -#endif // __SD_H__ - -void setup() { - Serial.begin(9600); - while (!Serial) {} // wait for Leonardo - - if (!SD.begin(SD_CS_PIN)) { - Serial.println("begin failed"); - return; - } - #ifdef __SD_H__ - file = SD.open("SFN_file.txt", FILE_WRITE); - #else // __SD_H__ - file.open("LFN_file.txt", O_RDWR | O_CREAT); - #endif // __SD_H__ - - file.println("Hello"); - file.close(); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnTest/lfnTest.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnTest/lfnTest.ino deleted file mode 100644 index c617929e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnTest/lfnTest.ino +++ /dev/null @@ -1,234 +0,0 @@ -#include -#include -#include -const uint8_t SD_CS_PIN = SS; -SdFat sd; -SdFile file; -char name[260]; - -//------------------------------------------------------------------------------ -const char* testName[] = { - "low.low", - "low.Mix", - "low.UP", - "Mix.low", - "Mix.Mix", - "Mix.UP", - "UP.low", - "UP.Mix", - "UP.UP", - ".dot", - ".dot.dot", - "A b c . txt", - " Leading space and no extension", - "Trailing dots and space . . .", - "Long extension.extension", - "Space after dot. txt", - "Dot.dot.test.txt", - "Dot.dot.test.seq.txt", - "LOW.LOW", - "MIX.MIX", - "Invalid character *.test" -}; -//------------------------------------------------------------------------------ -bool checkName(char first, size_t len) { - size_t i; - if (len < 5 || len > sizeof(name)) { - return false; - } - if ( name[0] != first) { - return false; - } - for (i = 1; i < (len - 4); i++) { - if (name[i] != (char)('0' + (i + 1) %10)) { - return false; - } - } - const char* p = ".txt"; - while (*p) { - if (name[i++] != *p++) { - return false; - } - } - return name[i] == 0; -} -//------------------------------------------------------------------------------ -void makeName(char first, size_t len) { - size_t i; - if (len > sizeof(name)) { - len = 255; - } - if (len < 5) { - len = 5; - } - name[0] = first; - for (i = 1; i < (len - 4); i++) { - name[i] = '0' + (i + 1) %10; - } - const char* p = ".txt"; - while (*p) name[i++] = *p++; - name[i] = 0; -} -//------------------------------------------------------------------------------ -// test open, remove, getName, and ls. -void basicTest() { - size_t i; - size_t n = sd.vol()->fatType() == 32 ? 255 : 99; - uint16_t maxIndex = 0; - - makeName('Z', 256); - if (!file.open(name, O_RDWR | O_CREAT)) { - Serial.println(F("255 limit OK")); - } else { - sd.errorHalt(F("255 limit")); - } - for (i = 5; i <= n; i++) { - makeName('A', i); - - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open A")); - } - file.println(name); - Serial.print(i); - Serial.write(' '); - Serial.print(file.dirIndex()); - Serial.write(' '); - Serial.print(file.fileSize()); - Serial.println(F(" open A")); - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size A")); - } - if (file.dirIndex() >= maxIndex) { - maxIndex = file.dirIndex(); - } else { - Serial.print(maxIndex); Serial.print(',');Serial.println(file.dirIndex()); - sd.errorHalt(F("dirIndex")); - } - file.close(); - if (!file.open(sd.vwd(), maxIndex, O_READ)) { - sd.errorHalt(F("open by index")); - } - memset(name, 0, sizeof(name)); - if (!file.getName(name, sizeof(name))) { - sd.errorHalt(F("getName")); - } - if (!checkName('A', i)) { - Serial.println(name); - sd.errorHalt(F("checkName")); - } - file.close(); - } - for (i = n; i >= 5; i -= 2) { - makeName('A', i); - Serial.print(i); - Serial.println(F( " rm A")); - if (!sd.remove(name)) { - sd.errorHalt(F("remove A")); - } - } - for (i = n; i >= 5; i -= 2) { - makeName('B', i); - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open B")); - } - file.println(name); - Serial.print(i); - Serial.write(' '); - Serial.print(file.dirIndex()); - Serial.write(' '); - Serial.print(file.fileSize()); - Serial.println(F(" open B")); - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size B")); - } - if (file.dirIndex() > maxIndex) { - sd.errorHalt(F("maxIndex")); - } - file.close(); - } - Serial.println(F("----- ls ------")); - sd.ls(); - for (i = 5; i <= n; i++) { - char fc = i & 1 ? 'B' : 'A'; - makeName(fc, i); - Serial.print(i); - Serial.print(F(" rm ")); - Serial.println(fc); - if (!sd.remove(name)) { - sd.errorHalt(F("remove A/B")); - } - } - if (file.openNext(sd.vwd())) { - sd.errorHalt(F("remove all")); - } - Serial.println(); - Serial.println(F("basicTest done")); -} -//------------------------------------------------------------------------------ -void nameTest() { - Serial.println(); - uint8_t n = sizeof(testName)/sizeof(char*); - for (uint8_t i = 0; i < n; i++) { - Serial.print(F("Name: ")); - Serial.write('"'); - Serial.print(testName[i]); - Serial.println('"'); - if(!file.open(testName[i], O_CREAT | O_RDWR)) { - Serial.println(F("Open failed")); - } else { - file.println(testName[i]); - if (!file.getName(name, sizeof(name))) { - sd.errorHalt(F("getFilemame")); - } - file.println(name); - Serial.print(F("LFN: ")); - Serial.write('"'); - Serial.print(name); - Serial.println('"'); - Serial.print(F("SFN: ")); - Serial.write('"'); - file.printSFN(&Serial); - Serial.println('"'); - Serial.print(F("Index: ")); - if (file.dirIndex() < 10) { - Serial.write(' '); - } - Serial.println(file.dirIndex()); - file.close(); - } - Serial.println(); - } - Serial.println(F("----- ls ------")); - sd.ls(); - Serial.println(); - Serial.println(F("nameTest done")); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - while(!Serial); - Serial.print(F("\r\nFreeRam: ")); - Serial.println(FreeRam()); - Serial.println(F("Type any character to start.")); - while (Serial.read() < 0) {} - if (!sd.begin(SD_CS_PIN)) sd.initErrorHalt(); - if (file.openNext(sd.vwd())) { - file.close(); - delay(100); - while (Serial.read() >= 0) {} - Serial.print(F("Type 'W' to wipe the card: ")); - int c; - while ((c = Serial.read()) < 0) {} - if (c != 'W') { - sd.errorHalt(F("Invalid")); - } - Serial.println((char)c); - if (!sd.wipe(&Serial) || !sd.begin(SD_CS_PIN)) { - sd.errorHalt(F("wipe failed")); - } - } - basicTest(); - nameTest(); -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnTestCout/lfnTestCout.ino b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnTestCout/lfnTestCout.ino deleted file mode 100644 index 038f025a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/SdFatTestSuite/examples/lfnTestCout/lfnTestCout.ino +++ /dev/null @@ -1,218 +0,0 @@ -#include -#include -#include -const uint8_t SD_CS_PIN = SS; -SdFat sd; -SdFile file; -char name[260]; - -// Serial output stream -ArduinoOutStream cout(Serial); - -// Serial in buffer. -char cinBuf[10]; - -// Serial input stream -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//------------------------------------------------------------------------------ -const char* testName[] = { - "low.low", - "low.Mix", - "low.UP", - "Mix.low", - "Mix.Mix", - "Mix.UP", - "UP.low", - "UP.Mix", - "UP.UP", - ".dot", - ".dot.dot", - "A b c . txt", - " Leading space and no extension", - "Trailing dots and space . . .", - "Long extension.extension", - "Space after dot. txt", - "Dot.dot.test.txt", - "Dot.dot.test.seq.txt", - "LOW.LOW", - "MIX.MIX", - "Invalid character *.test" -}; -//------------------------------------------------------------------------------ -bool checkName(char first, size_t len) { - size_t i; - if (len < 5 || len > sizeof(name)) { - return false; - } - if ( name[0] != first) { - return false; - } - for (i = 1; i < (len - 4); i++) { - if (name[i] != (char)('0' + (i + 1) %10)) { - return false; - } - } - const char* p = ".txt"; - while (*p) { - if (name[i++] != *p++) { - return false; - } - } - return name[i] == 0; -} -//------------------------------------------------------------------------------ -void makeName(char first, size_t len) { - size_t i; - if (len > sizeof(name)) { - len = 255; - } - if (len < 5) { - len = 5; - } - name[0] = first; - for (i = 1; i < (len - 4); i++) { - name[i] = '0' + (i + 1) %10; - } - const char* p = ".txt"; - while (*p) name[i++] = *p++; - name[i] = 0; -} -//------------------------------------------------------------------------------ -// test open, remove, getName, and ls. -void basicTest() { - size_t i; - size_t n = sd.vol()->fatType() == 32 ? 255 : 99; - uint16_t maxIndex = 0; - - makeName('Z', 256); - if (!file.open(name, O_RDWR | O_CREAT)) { - cout << F("255 limit OK") << endl; - } else { - sd.errorHalt(F("255 limit")); - } - for (i = 5; i <= n; i++) { - makeName('A', i); - - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open A")); - } - file.println(name); - cout << setw(3) << i << setw(5) << file.dirIndex() << F(" open A") << endl; - - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size A")); - } - if (file.dirIndex() >= maxIndex) { - maxIndex = file.dirIndex(); - } else { - sd.errorHalt(F("dirIndex")); - } - file.close(); - if (!file.open(sd.vwd(), maxIndex, O_READ)) { - sd.errorHalt(F("open by index")); - } - memset(name, 0, sizeof(name)); - if (!file.getName(name, sizeof(name))) { - sd.errorHalt(F("getName")); - } - if (!checkName('A', i)) { - cout << name << endl; - sd.errorHalt(F("checkName")); - } - file.close(); - } - for (i = n; i >= 5; i -= 2) { - makeName('A', i); - cout << setw(3) << i << F( " rm A") << endl; - if (!sd.remove(name)) { - sd.errorHalt(F("remove A")); - } - } - for (i = n; i >= 5; i -= 2) { - makeName('B', i); - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open B")); - } - file.println(name); - - cout << setw(3) << i << setw(5) << file.dirIndex() << F(" open B") << endl; - - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size B")); - } - if (file.dirIndex() > maxIndex) { - sd.errorHalt(F("maxIndex")); - } - file.close(); - } - cout << endl << F("----- ls ------") << endl; - sd.ls(); - for (i = 5; i <= n; i++) { - char fc = i & 1 ? 'B' : 'A'; - makeName(fc, i); - cout << setw(3) << i << F(" rm ") << fc << endl; - if (!sd.remove(name)) { - sd.errorHalt(F("remove A/B")); - } - } - if (file.openNext(sd.vwd())) { - sd.errorHalt(F("remove all")); - } - cout << endl << F("basicTest done") << endl; -} -//------------------------------------------------------------------------------ -void nameTest() { - cout << endl; - uint8_t n = sizeof(testName)/sizeof(char*); - for (uint8_t i = 0; i < n; i++) { - cout << F("Name: \"") << testName[i] << '"' << endl; - if(!file.open(testName[i], O_CREAT | O_RDWR)) { - cout < -#include -#include -//------------------------------------------------------------------------------ -void ostreamBool() { - char buf[40]; - obufstream ob(buf, sizeof(buf)); - bool f = false; - bool t = true; - ob << t << ',' << f << ',' << setw(2) << t << ',' << left << setw(2) << f; - testVerifyStr(buf, "1,0, 1,0 "); - - ob.init(buf, sizeof(buf)); - ob << boolalpha << t << ',' << f << ',' << setw(5) << t; - ob << ',' << right << setw(6) << f; - testVerifyStr(buf, "true,false,true , false"); -} -//------------------------------------------------------------------------------ -void ostreamChar() { - char buf[40]; - obufstream ob(buf, sizeof(buf)); - char c = 'c'; - signed char sc = 's'; - unsigned char uc = 'u'; - ob <<'l' << c << sc << uc; - ob.put('p'); - testVerifyStr(buf, "lcsup"); - - ob.init(buf, sizeof(buf)); - ob << 's' << setw(2) << 'r' << 'n' << left << setw(2) << 'l'; - ob << 'm' << right << setw(2) << 'e'; - testVerifyStr(buf, "s rnl m e"); - - ob.init(buf, sizeof(buf)); - ob << setfill('f') << setw(5) << 'r'; - testVerifyStr(buf, "ffffr"); -} -//------------------------------------------------------------------------------ -void ostreamFloat() { - char buf[50]; - obufstream ob(buf, sizeof(buf)); - float f = 9.87654; - double d = -123.4567; - ob << f <<','; - ob << internal << setw(10) << d << ','; - ob << setfill('0') << setw(10) << d; - testVerifyStr(buf, "9.88,- 123.46,-000123.46"); - - ob.init(buf, sizeof(buf)); - ob << setw(10) << left << d << ',' << showpos << -d << ','; - ob << setprecision(0) << d; - testVerifyStr(buf, "-123.46000,+123.46,-123"); - - ob.init(buf, sizeof(buf)); - ob << showpoint << d << noshowpoint << ',' << d << ','; - ob << setprecision(4) << f << ',' << setprecision(2) << noshowpos << f; - testVerifyStr(buf, "-123.,-123,+9.8765,9.88"); -} -//------------------------------------------------------------------------------ -void ostreamNumber() { - char buf[50]; - obufstream ob(buf, sizeof(buf)); - - short s = 1; - short signed ss = 2; - short unsigned su = 3; - int i = 4; - int signed is = 5; - int unsigned iu = 6; - long l = 7; - long signed ls = 8; - long unsigned lu = 9; - - - ob << s << ss << su << i << is << iu << l < [file] ... - - The style guidelines this tries to follow are those in - https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml - - Every problem is given a confidence score from 1-5, with 5 meaning we are - certain of the problem, and 1 meaning it could be a legitimate construct. - This will miss some errors, and is not a substitute for a code review. - - To suppress false-positive errors of a certain category, add a - 'NOLINT(category)' comment to the line. NOLINT or NOLINT(*) - suppresses errors of all categories on that line. - - The files passed in will be linted; at least one file must be provided. - Default linted extensions are .cc, .cpp, .cu, .cuh and .h. Change the - extensions with the --extensions flag. - - Flags: - - output=vs7 - By default, the output is formatted to ease emacs parsing. Visual Studio - compatible output (vs7) may also be used. Other formats are unsupported. - - verbose=# - Specify a number 0-5 to restrict errors to certain verbosity levels. - - filter=-x,+y,... - Specify a comma-separated list of category-filters to apply: only - error messages whose category names pass the filters will be printed. - (Category names are printed with the message and look like - "[whitespace/indent]".) Filters are evaluated left to right. - "-FOO" and "FOO" means "do not print categories that start with FOO". - "+FOO" means "do print categories that start with FOO". - - Examples: --filter=-whitespace,+whitespace/braces - --filter=whitespace,runtime/printf,+runtime/printf_format - --filter=-,+build/include_what_you_use - - To see a list of all the categories used in cpplint, pass no arg: - --filter= - - counting=total|toplevel|detailed - The total number of errors found is always printed. If - 'toplevel' is provided, then the count of errors in each of - the top-level categories like 'build' and 'whitespace' will - also be printed. If 'detailed' is provided, then a count - is provided for each category like 'build/class'. - - root=subdir - The root directory used for deriving header guard CPP variable. - By default, the header guard CPP variable is calculated as the relative - path to the directory that contains .git, .hg, or .svn. When this flag - is specified, the relative path is calculated from the specified - directory. If the specified directory does not exist, this flag is - ignored. - - Examples: - Assuming that src/.git exists, the header guard CPP variables for - src/chrome/browser/ui/browser.h are: - - No flag => CHROME_BROWSER_UI_BROWSER_H_ - --root=chrome => BROWSER_UI_BROWSER_H_ - --root=chrome/browser => UI_BROWSER_H_ - - linelength=digits - This is the allowed line length for the project. The default value is - 80 characters. - - Examples: - --linelength=120 - - extensions=extension,extension,... - The allowed file extensions that cpplint will check - - Examples: - --extensions=hpp,cpp - - headers=x,y,... - The header extensions that cpplint will treat as .h in checks. Values are - automatically added to --extensions list. - - Examples: - --headers=hpp,hxx - --headers=hpp - - cpplint.py supports per-directory configurations specified in CPPLINT.cfg - files. CPPLINT.cfg file can contain a number of key=value pairs. - Currently the following options are supported: - - set noparent - filter=+filter1,-filter2,... - exclude_files=regex - linelength=80 - root=subdir - headers=x,y,... - - "set noparent" option prevents cpplint from traversing directory tree - upwards looking for more .cfg files in parent directories. This option - is usually placed in the top-level project directory. - - The "filter" option is similar in function to --filter flag. It specifies - message filters in addition to the |_DEFAULT_FILTERS| and those specified - through --filter command-line flag. - - "exclude_files" allows to specify a regular expression to be matched against - a file name. If the expression matches, the file is skipped and not run - through liner. - - "linelength" allows to specify the allowed line length for the project. - - The "root" option is similar in function to the --root flag (see example - above). - - The "headers" option is similar in function to the --headers flag - (see example above). - - CPPLINT.cfg has an effect on files in the same directory and all - sub-directories, unless overridden by a nested configuration file. - - Example file: - filter=-build/include_order,+build/include_alpha - exclude_files=.*\.cc - - The above example disables build/include_order warning and enables - build/include_alpha as well as excludes all .cc from being - processed by linter, in the current directory (where the .cfg - file is located) and all sub-directories. -""" - -# We categorize each error message we print. Here are the categories. -# We want an explicit list so we can list them all in cpplint --filter=. -# If you add a new error message with a new category, add it to the list -# here! cpplint_unittest.py should tell you if you forget to do this. -_ERROR_CATEGORIES = [ - 'build/class', - 'build/c++11', - 'build/c++14', - 'build/c++tr1', - 'build/deprecated', - 'build/endif_comment', - 'build/explicit_make_pair', - 'build/forward_decl', - 'build/header_guard', - 'build/include', - 'build/include_alpha', - 'build/include_order', - 'build/include_what_you_use', - 'build/namespaces', - 'build/printf_format', - 'build/storage_class', - 'legal/copyright', - 'readability/alt_tokens', - 'readability/braces', - 'readability/casting', - 'readability/check', - 'readability/constructors', - 'readability/fn_size', - 'readability/inheritance', - 'readability/multiline_comment', - 'readability/multiline_string', - 'readability/namespace', - 'readability/nolint', - 'readability/nul', - 'readability/strings', - 'readability/todo', - 'readability/utf8', - 'runtime/arrays', - 'runtime/casting', - 'runtime/explicit', - 'runtime/int', - 'runtime/init', - 'runtime/invalid_increment', - 'runtime/member_string_references', - 'runtime/memset', - 'runtime/indentation_namespace', - 'runtime/operator', - 'runtime/printf', - 'runtime/printf_format', - 'runtime/references', - 'runtime/string', - 'runtime/threadsafe_fn', - 'runtime/vlog', - 'whitespace/blank_line', - 'whitespace/braces', - 'whitespace/comma', - 'whitespace/comments', - 'whitespace/empty_conditional_body', - 'whitespace/empty_if_body', - 'whitespace/empty_loop_body', - 'whitespace/end_of_line', - 'whitespace/ending_newline', - 'whitespace/forcolon', - 'whitespace/indent', - 'whitespace/line_length', - 'whitespace/newline', - 'whitespace/operators', - 'whitespace/parens', - 'whitespace/semicolon', - 'whitespace/tab', - 'whitespace/todo', - ] - -# These error categories are no longer enforced by cpplint, but for backwards- -# compatibility they may still appear in NOLINT comments. -_LEGACY_ERROR_CATEGORIES = [ - 'readability/streams', - 'readability/function', - ] - -# The default state of the category filter. This is overridden by the --filter= -# flag. By default all errors are on, so only add here categories that should be -# off by default (i.e., categories that must be enabled by the --filter= flags). -# All entries here should start with a '-' or '+', as in the --filter= flag. -_DEFAULT_FILTERS = ['-build/include_alpha'] - -# The default list of categories suppressed for C (not C++) files. -_DEFAULT_C_SUPPRESSED_CATEGORIES = [ - 'readability/casting', - ] - -# The default list of categories suppressed for Linux Kernel files. -_DEFAULT_KERNEL_SUPPRESSED_CATEGORIES = [ - 'whitespace/tab', - ] - -# We used to check for high-bit characters, but after much discussion we -# decided those were OK, as long as they were in UTF-8 and didn't represent -# hard-coded international strings, which belong in a separate i18n file. - -# C++ headers -_CPP_HEADERS = frozenset([ - # Legacy - 'algobase.h', - 'algo.h', - 'alloc.h', - 'builtinbuf.h', - 'bvector.h', - 'complex.h', - 'defalloc.h', - 'deque.h', - 'editbuf.h', - 'fstream.h', - 'function.h', - 'hash_map', - 'hash_map.h', - 'hash_set', - 'hash_set.h', - 'hashtable.h', - 'heap.h', - 'indstream.h', - 'iomanip.h', - 'iostream.h', - 'istream.h', - 'iterator.h', - 'list.h', - 'map.h', - 'multimap.h', - 'multiset.h', - 'ostream.h', - 'pair.h', - 'parsestream.h', - 'pfstream.h', - 'procbuf.h', - 'pthread_alloc', - 'pthread_alloc.h', - 'rope', - 'rope.h', - 'ropeimpl.h', - 'set.h', - 'slist', - 'slist.h', - 'stack.h', - 'stdiostream.h', - 'stl_alloc.h', - 'stl_relops.h', - 'streambuf.h', - 'stream.h', - 'strfile.h', - 'strstream.h', - 'tempbuf.h', - 'tree.h', - 'type_traits.h', - 'vector.h', - # 17.6.1.2 C++ library headers - 'algorithm', - 'array', - 'atomic', - 'bitset', - 'chrono', - 'codecvt', - 'complex', - 'condition_variable', - 'deque', - 'exception', - 'forward_list', - 'fstream', - 'functional', - 'future', - 'initializer_list', - 'iomanip', - 'ios', - 'iosfwd', - 'iostream', - 'istream', - 'iterator', - 'limits', - 'list', - 'locale', - 'map', - 'memory', - 'mutex', - 'new', - 'numeric', - 'ostream', - 'queue', - 'random', - 'ratio', - 'regex', - 'scoped_allocator', - 'set', - 'sstream', - 'stack', - 'stdexcept', - 'streambuf', - 'string', - 'strstream', - 'system_error', - 'thread', - 'tuple', - 'typeindex', - 'typeinfo', - 'type_traits', - 'unordered_map', - 'unordered_set', - 'utility', - 'valarray', - 'vector', - # 17.6.1.2 C++ headers for C library facilities - 'cassert', - 'ccomplex', - 'cctype', - 'cerrno', - 'cfenv', - 'cfloat', - 'cinttypes', - 'ciso646', - 'climits', - 'clocale', - 'cmath', - 'csetjmp', - 'csignal', - 'cstdalign', - 'cstdarg', - 'cstdbool', - 'cstddef', - 'cstdint', - 'cstdio', - 'cstdlib', - 'cstring', - 'ctgmath', - 'ctime', - 'cuchar', - 'cwchar', - 'cwctype', - ]) - -# Type names -_TYPES = re.compile( - r'^(?:' - # [dcl.type.simple] - r'(char(16_t|32_t)?)|wchar_t|' - r'bool|short|int|long|signed|unsigned|float|double|' - # [support.types] - r'(ptrdiff_t|size_t|max_align_t|nullptr_t)|' - # [cstdint.syn] - r'(u?int(_fast|_least)?(8|16|32|64)_t)|' - r'(u?int(max|ptr)_t)|' - r')$') - - -# These headers are excluded from [build/include] and [build/include_order] -# checks: -# - Anything not following google file name conventions (containing an -# uppercase character, such as Python.h or nsStringAPI.h, for example). -# - Lua headers. -_THIRD_PARTY_HEADERS_PATTERN = re.compile( - r'^(?:[^/]*[A-Z][^/]*\.h|lua\.h|lauxlib\.h|lualib\.h)$') - -# Pattern for matching FileInfo.BaseName() against test file name -_TEST_FILE_SUFFIX = r'(_test|_unittest|_regtest)$' - -# Pattern that matches only complete whitespace, possibly across multiple lines. -_EMPTY_CONDITIONAL_BODY_PATTERN = re.compile(r'^\s*$', re.DOTALL) - -# Assertion macros. These are defined in base/logging.h and -# testing/base/public/gunit.h. -_CHECK_MACROS = [ - 'DCHECK', 'CHECK', - 'EXPECT_TRUE', 'ASSERT_TRUE', - 'EXPECT_FALSE', 'ASSERT_FALSE', - ] - -# Replacement macros for CHECK/DCHECK/EXPECT_TRUE/EXPECT_FALSE -_CHECK_REPLACEMENT = dict([(m, {}) for m in _CHECK_MACROS]) - -for op, replacement in [('==', 'EQ'), ('!=', 'NE'), - ('>=', 'GE'), ('>', 'GT'), - ('<=', 'LE'), ('<', 'LT')]: - _CHECK_REPLACEMENT['DCHECK'][op] = 'DCHECK_%s' % replacement - _CHECK_REPLACEMENT['CHECK'][op] = 'CHECK_%s' % replacement - _CHECK_REPLACEMENT['EXPECT_TRUE'][op] = 'EXPECT_%s' % replacement - _CHECK_REPLACEMENT['ASSERT_TRUE'][op] = 'ASSERT_%s' % replacement - -for op, inv_replacement in [('==', 'NE'), ('!=', 'EQ'), - ('>=', 'LT'), ('>', 'LE'), - ('<=', 'GT'), ('<', 'GE')]: - _CHECK_REPLACEMENT['EXPECT_FALSE'][op] = 'EXPECT_%s' % inv_replacement - _CHECK_REPLACEMENT['ASSERT_FALSE'][op] = 'ASSERT_%s' % inv_replacement - -# Alternative tokens and their replacements. For full list, see section 2.5 -# Alternative tokens [lex.digraph] in the C++ standard. -# -# Digraphs (such as '%:') are not included here since it's a mess to -# match those on a word boundary. -_ALT_TOKEN_REPLACEMENT = { - 'and': '&&', - 'bitor': '|', - 'or': '||', - 'xor': '^', - 'compl': '~', - 'bitand': '&', - 'and_eq': '&=', - 'or_eq': '|=', - 'xor_eq': '^=', - 'not': '!', - 'not_eq': '!=' - } - -# Compile regular expression that matches all the above keywords. The "[ =()]" -# bit is meant to avoid matching these keywords outside of boolean expressions. -# -# False positives include C-style multi-line comments and multi-line strings -# but those have always been troublesome for cpplint. -_ALT_TOKEN_REPLACEMENT_PATTERN = re.compile( - r'[ =()](' + ('|'.join(_ALT_TOKEN_REPLACEMENT.keys())) + r')(?=[ (]|$)') - - -# These constants define types of headers for use with -# _IncludeState.CheckNextIncludeOrder(). -_C_SYS_HEADER = 1 -_CPP_SYS_HEADER = 2 -_LIKELY_MY_HEADER = 3 -_POSSIBLE_MY_HEADER = 4 -_OTHER_HEADER = 5 - -# These constants define the current inline assembly state -_NO_ASM = 0 # Outside of inline assembly block -_INSIDE_ASM = 1 # Inside inline assembly block -_END_ASM = 2 # Last line of inline assembly block -_BLOCK_ASM = 3 # The whole block is an inline assembly block - -# Match start of assembly blocks -_MATCH_ASM = re.compile(r'^\s*(?:asm|_asm|__asm|__asm__)' - r'(?:\s+(volatile|__volatile__))?' - r'\s*[{(]') - -# Match strings that indicate we're working on a C (not C++) file. -_SEARCH_C_FILE = re.compile(r'\b(?:LINT_C_FILE|' - r'vim?:\s*.*(\s*|:)filetype=c(\s*|:|$))') - -# Match string that indicates we're working on a Linux Kernel file. -_SEARCH_KERNEL_FILE = re.compile(r'\b(?:LINT_KERNEL_FILE)') - -_regexp_compile_cache = {} - -# {str, set(int)}: a map from error categories to sets of linenumbers -# on which those errors are expected and should be suppressed. -_error_suppressions = {} - -# The root directory used for deriving header guard CPP variable. -# This is set by --root flag. -_root = None - -# The allowed line length of files. -# This is set by --linelength flag. -_line_length = 80 - -# The allowed extensions for file names -# This is set by --extensions flag. -_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh']) - -# Treat all headers starting with 'h' equally: .h, .hpp, .hxx etc. -# This is set by --headers flag. -_hpp_headers = set(['h']) - -# {str, bool}: a map from error categories to booleans which indicate if the -# category should be suppressed for every line. -_global_error_suppressions = {} - -def ProcessHppHeadersOption(val): - global _hpp_headers - try: - _hpp_headers = set(val.split(',')) - # Automatically append to extensions list so it does not have to be set 2 times - _valid_extensions.update(_hpp_headers) - except ValueError: - PrintUsage('Header extensions must be comma seperated list.') - -def IsHeaderExtension(file_extension): - return file_extension in _hpp_headers - -def ParseNolintSuppressions(filename, raw_line, linenum, error): - """Updates the global list of line error-suppressions. - - Parses any NOLINT comments on the current line, updating the global - error_suppressions store. Reports an error if the NOLINT comment - was malformed. - - Args: - filename: str, the name of the input file. - raw_line: str, the line of input text, with comments. - linenum: int, the number of the current line. - error: function, an error handler. - """ - matched = Search(r'\bNOLINT(NEXTLINE)?\b(\([^)]+\))?', raw_line) - if matched: - if matched.group(1): - suppressed_line = linenum + 1 - else: - suppressed_line = linenum - category = matched.group(2) - if category in (None, '(*)'): # => "suppress all" - _error_suppressions.setdefault(None, set()).add(suppressed_line) - else: - if category.startswith('(') and category.endswith(')'): - category = category[1:-1] - if category in _ERROR_CATEGORIES: - _error_suppressions.setdefault(category, set()).add(suppressed_line) - elif category not in _LEGACY_ERROR_CATEGORIES: - error(filename, linenum, 'readability/nolint', 5, - 'Unknown NOLINT error category: %s' % category) - - -def ProcessGlobalSuppresions(lines): - """Updates the list of global error suppressions. - - Parses any lint directives in the file that have global effect. - - Args: - lines: An array of strings, each representing a line of the file, with the - last element being empty if the file is terminated with a newline. - """ - for line in lines: - if _SEARCH_C_FILE.search(line): - for category in _DEFAULT_C_SUPPRESSED_CATEGORIES: - _global_error_suppressions[category] = True - if _SEARCH_KERNEL_FILE.search(line): - for category in _DEFAULT_KERNEL_SUPPRESSED_CATEGORIES: - _global_error_suppressions[category] = True - - -def ResetNolintSuppressions(): - """Resets the set of NOLINT suppressions to empty.""" - _error_suppressions.clear() - _global_error_suppressions.clear() - - -def IsErrorSuppressedByNolint(category, linenum): - """Returns true if the specified error category is suppressed on this line. - - Consults the global error_suppressions map populated by - ParseNolintSuppressions/ProcessGlobalSuppresions/ResetNolintSuppressions. - - Args: - category: str, the category of the error. - linenum: int, the current line number. - Returns: - bool, True iff the error should be suppressed due to a NOLINT comment or - global suppression. - """ - return (_global_error_suppressions.get(category, False) or - linenum in _error_suppressions.get(category, set()) or - linenum in _error_suppressions.get(None, set())) - - -def Match(pattern, s): - """Matches the string with the pattern, caching the compiled regexp.""" - # The regexp compilation caching is inlined in both Match and Search for - # performance reasons; factoring it out into a separate function turns out - # to be noticeably expensive. - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = sre_compile.compile(pattern) - return _regexp_compile_cache[pattern].match(s) - - -def ReplaceAll(pattern, rep, s): - """Replaces instances of pattern in a string with a replacement. - - The compiled regex is kept in a cache shared by Match and Search. - - Args: - pattern: regex pattern - rep: replacement text - s: search string - - Returns: - string with replacements made (or original string if no replacements) - """ - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = sre_compile.compile(pattern) - return _regexp_compile_cache[pattern].sub(rep, s) - - -def Search(pattern, s): - """Searches the string for the pattern, caching the compiled regexp.""" - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = sre_compile.compile(pattern) - return _regexp_compile_cache[pattern].search(s) - - -def _IsSourceExtension(s): - """File extension (excluding dot) matches a source file extension.""" - return s in ('c', 'cc', 'cpp', 'cxx') - - -class _IncludeState(object): - """Tracks line numbers for includes, and the order in which includes appear. - - include_list contains list of lists of (header, line number) pairs. - It's a lists of lists rather than just one flat list to make it - easier to update across preprocessor boundaries. - - Call CheckNextIncludeOrder() once for each header in the file, passing - in the type constants defined above. Calls in an illegal order will - raise an _IncludeError with an appropriate error message. - - """ - # self._section will move monotonically through this set. If it ever - # needs to move backwards, CheckNextIncludeOrder will raise an error. - _INITIAL_SECTION = 0 - _MY_H_SECTION = 1 - _C_SECTION = 2 - _CPP_SECTION = 3 - _OTHER_H_SECTION = 4 - - _TYPE_NAMES = { - _C_SYS_HEADER: 'C system header', - _CPP_SYS_HEADER: 'C++ system header', - _LIKELY_MY_HEADER: 'header this file implements', - _POSSIBLE_MY_HEADER: 'header this file may implement', - _OTHER_HEADER: 'other header', - } - _SECTION_NAMES = { - _INITIAL_SECTION: "... nothing. (This can't be an error.)", - _MY_H_SECTION: 'a header this file implements', - _C_SECTION: 'C system header', - _CPP_SECTION: 'C++ system header', - _OTHER_H_SECTION: 'other header', - } - - def __init__(self): - self.include_list = [[]] - self.ResetSection('') - - def FindHeader(self, header): - """Check if a header has already been included. - - Args: - header: header to check. - Returns: - Line number of previous occurrence, or -1 if the header has not - been seen before. - """ - for section_list in self.include_list: - for f in section_list: - if f[0] == header: - return f[1] - return -1 - - def ResetSection(self, directive): - """Reset section checking for preprocessor directive. - - Args: - directive: preprocessor directive (e.g. "if", "else"). - """ - # The name of the current section. - self._section = self._INITIAL_SECTION - # The path of last found header. - self._last_header = '' - - # Update list of includes. Note that we never pop from the - # include list. - if directive in ('if', 'ifdef', 'ifndef'): - self.include_list.append([]) - elif directive in ('else', 'elif'): - self.include_list[-1] = [] - - def SetLastHeader(self, header_path): - self._last_header = header_path - - def CanonicalizeAlphabeticalOrder(self, header_path): - """Returns a path canonicalized for alphabetical comparison. - - - replaces "-" with "_" so they both cmp the same. - - removes '-inl' since we don't require them to be after the main header. - - lowercase everything, just in case. - - Args: - header_path: Path to be canonicalized. - - Returns: - Canonicalized path. - """ - return header_path.replace('-inl.h', '.h').replace('-', '_').lower() - - def IsInAlphabeticalOrder(self, clean_lines, linenum, header_path): - """Check if a header is in alphabetical order with the previous header. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - header_path: Canonicalized header to be checked. - - Returns: - Returns true if the header is in alphabetical order. - """ - # If previous section is different from current section, _last_header will - # be reset to empty string, so it's always less than current header. - # - # If previous line was a blank line, assume that the headers are - # intentionally sorted the way they are. - if (self._last_header > header_path and - Match(r'^\s*#\s*include\b', clean_lines.elided[linenum - 1])): - return False - return True - - def CheckNextIncludeOrder(self, header_type): - """Returns a non-empty error message if the next header is out of order. - - This function also updates the internal state to be ready to check - the next include. - - Args: - header_type: One of the _XXX_HEADER constants defined above. - - Returns: - The empty string if the header is in the right order, or an - error message describing what's wrong. - - """ - error_message = ('Found %s after %s' % - (self._TYPE_NAMES[header_type], - self._SECTION_NAMES[self._section])) - - last_section = self._section - - if header_type == _C_SYS_HEADER: - if self._section <= self._C_SECTION: - self._section = self._C_SECTION - else: - self._last_header = '' - return error_message - elif header_type == _CPP_SYS_HEADER: - if self._section <= self._CPP_SECTION: - self._section = self._CPP_SECTION - else: - self._last_header = '' - return error_message - elif header_type == _LIKELY_MY_HEADER: - if self._section <= self._MY_H_SECTION: - self._section = self._MY_H_SECTION - else: - self._section = self._OTHER_H_SECTION - elif header_type == _POSSIBLE_MY_HEADER: - if self._section <= self._MY_H_SECTION: - self._section = self._MY_H_SECTION - else: - # This will always be the fallback because we're not sure - # enough that the header is associated with this file. - self._section = self._OTHER_H_SECTION - else: - assert header_type == _OTHER_HEADER - self._section = self._OTHER_H_SECTION - - if last_section != self._section: - self._last_header = '' - - return '' - - -class _CppLintState(object): - """Maintains module-wide state..""" - - def __init__(self): - self.verbose_level = 1 # global setting. - self.error_count = 0 # global count of reported errors - # filters to apply when emitting error messages - self.filters = _DEFAULT_FILTERS[:] - # backup of filter list. Used to restore the state after each file. - self._filters_backup = self.filters[:] - self.counting = 'total' # In what way are we counting errors? - self.errors_by_category = {} # string to int dict storing error counts - - # output format: - # "emacs" - format that emacs can parse (default) - # "vs7" - format that Microsoft Visual Studio 7 can parse - self.output_format = 'emacs' - - def SetOutputFormat(self, output_format): - """Sets the output format for errors.""" - self.output_format = output_format - - def SetVerboseLevel(self, level): - """Sets the module's verbosity, and returns the previous setting.""" - last_verbose_level = self.verbose_level - self.verbose_level = level - return last_verbose_level - - def SetCountingStyle(self, counting_style): - """Sets the module's counting options.""" - self.counting = counting_style - - def SetFilters(self, filters): - """Sets the error-message filters. - - These filters are applied when deciding whether to emit a given - error message. - - Args: - filters: A string of comma-separated filters (eg "+whitespace/indent"). - Each filter should start with + or -; else we die. - - Raises: - ValueError: The comma-separated filters did not all start with '+' or '-'. - E.g. "-,+whitespace,-whitespace/indent,whitespace/badfilter" - """ - # Default filters always have less priority than the flag ones. - self.filters = _DEFAULT_FILTERS[:] - self.AddFilters(filters) - - def AddFilters(self, filters): - """ Adds more filters to the existing list of error-message filters. """ - for filt in filters.split(','): - clean_filt = filt.strip() - if clean_filt: - self.filters.append(clean_filt) - for filt in self.filters: - if not (filt.startswith('+') or filt.startswith('-')): - raise ValueError('Every filter in --filters must start with + or -' - ' (%s does not)' % filt) - - def BackupFilters(self): - """ Saves the current filter list to backup storage.""" - self._filters_backup = self.filters[:] - - def RestoreFilters(self): - """ Restores filters previously backed up.""" - self.filters = self._filters_backup[:] - - def ResetErrorCounts(self): - """Sets the module's error statistic back to zero.""" - self.error_count = 0 - self.errors_by_category = {} - - def IncrementErrorCount(self, category): - """Bumps the module's error statistic.""" - self.error_count += 1 - if self.counting in ('toplevel', 'detailed'): - if self.counting != 'detailed': - category = category.split('/')[0] - if category not in self.errors_by_category: - self.errors_by_category[category] = 0 - self.errors_by_category[category] += 1 - - def PrintErrorCounts(self): - """Print a summary of errors by category, and the total.""" - for category, count in self.errors_by_category.iteritems(): - sys.stderr.write('Category \'%s\' errors found: %d\n' % - (category, count)) - sys.stdout.write('Total errors found: %d\n' % self.error_count) - -_cpplint_state = _CppLintState() - - -def _OutputFormat(): - """Gets the module's output format.""" - return _cpplint_state.output_format - - -def _SetOutputFormat(output_format): - """Sets the module's output format.""" - _cpplint_state.SetOutputFormat(output_format) - - -def _VerboseLevel(): - """Returns the module's verbosity setting.""" - return _cpplint_state.verbose_level - - -def _SetVerboseLevel(level): - """Sets the module's verbosity, and returns the previous setting.""" - return _cpplint_state.SetVerboseLevel(level) - - -def _SetCountingStyle(level): - """Sets the module's counting options.""" - _cpplint_state.SetCountingStyle(level) - - -def _Filters(): - """Returns the module's list of output filters, as a list.""" - return _cpplint_state.filters - - -def _SetFilters(filters): - """Sets the module's error-message filters. - - These filters are applied when deciding whether to emit a given - error message. - - Args: - filters: A string of comma-separated filters (eg "whitespace/indent"). - Each filter should start with + or -; else we die. - """ - _cpplint_state.SetFilters(filters) - -def _AddFilters(filters): - """Adds more filter overrides. - - Unlike _SetFilters, this function does not reset the current list of filters - available. - - Args: - filters: A string of comma-separated filters (eg "whitespace/indent"). - Each filter should start with + or -; else we die. - """ - _cpplint_state.AddFilters(filters) - -def _BackupFilters(): - """ Saves the current filter list to backup storage.""" - _cpplint_state.BackupFilters() - -def _RestoreFilters(): - """ Restores filters previously backed up.""" - _cpplint_state.RestoreFilters() - -class _FunctionState(object): - """Tracks current function name and the number of lines in its body.""" - - _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. - _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. - - def __init__(self): - self.in_a_function = False - self.lines_in_function = 0 - self.current_function = '' - - def Begin(self, function_name): - """Start analyzing function body. - - Args: - function_name: The name of the function being tracked. - """ - self.in_a_function = True - self.lines_in_function = 0 - self.current_function = function_name - - def Count(self): - """Count line in current function body.""" - if self.in_a_function: - self.lines_in_function += 1 - - def Check(self, error, filename, linenum): - """Report if too many lines in function body. - - Args: - error: The function to call with any errors found. - filename: The name of the current file. - linenum: The number of the line to check. - """ - if not self.in_a_function: - return - - if Match(r'T(EST|est)', self.current_function): - base_trigger = self._TEST_TRIGGER - else: - base_trigger = self._NORMAL_TRIGGER - trigger = base_trigger * 2**_VerboseLevel() - - if self.lines_in_function > trigger: - error_level = int(math.log(self.lines_in_function / base_trigger, 2)) - # 50 => 0, 100 => 1, 200 => 2, 400 => 3, 800 => 4, 1600 => 5, ... - if error_level > 5: - error_level = 5 - error(filename, linenum, 'readability/fn_size', error_level, - 'Small and focused functions are preferred:' - ' %s has %d non-comment lines' - ' (error triggered by exceeding %d lines).' % ( - self.current_function, self.lines_in_function, trigger)) - - def End(self): - """Stop analyzing function body.""" - self.in_a_function = False - - -class _IncludeError(Exception): - """Indicates a problem with the include order in a file.""" - pass - - -class FileInfo(object): - """Provides utility functions for filenames. - - FileInfo provides easy access to the components of a file's path - relative to the project root. - """ - - def __init__(self, filename): - self._filename = filename - - def FullName(self): - """Make Windows paths like Unix.""" - return os.path.abspath(self._filename).replace('\\', '/') - - def RepositoryName(self): - """FullName after removing the local path to the repository. - - If we have a real absolute path name here we can try to do something smart: - detecting the root of the checkout and truncating /path/to/checkout from - the name so that we get header guards that don't include things like - "C:\Documents and Settings\..." or "/home/username/..." in them and thus - people on different computers who have checked the source out to different - locations won't see bogus errors. - """ - fullname = self.FullName() - - if os.path.exists(fullname): - project_dir = os.path.dirname(fullname) - - if os.path.exists(os.path.join(project_dir, ".svn")): - # If there's a .svn file in the current directory, we recursively look - # up the directory tree for the top of the SVN checkout - root_dir = project_dir - one_up_dir = os.path.dirname(root_dir) - while os.path.exists(os.path.join(one_up_dir, ".svn")): - root_dir = os.path.dirname(root_dir) - one_up_dir = os.path.dirname(one_up_dir) - - prefix = os.path.commonprefix([root_dir, project_dir]) - return fullname[len(prefix) + 1:] - - # Not SVN <= 1.6? Try to find a git, hg, or svn top level directory by - # searching up from the current path. - root_dir = current_dir = os.path.dirname(fullname) - while current_dir != os.path.dirname(current_dir): - if (os.path.exists(os.path.join(current_dir, ".git")) or - os.path.exists(os.path.join(current_dir, ".hg")) or - os.path.exists(os.path.join(current_dir, ".svn"))): - root_dir = current_dir - current_dir = os.path.dirname(current_dir) - - if (os.path.exists(os.path.join(root_dir, ".git")) or - os.path.exists(os.path.join(root_dir, ".hg")) or - os.path.exists(os.path.join(root_dir, ".svn"))): - prefix = os.path.commonprefix([root_dir, project_dir]) - return fullname[len(prefix) + 1:] - - # Don't know what to do; header guard warnings may be wrong... - return fullname - - def Split(self): - """Splits the file into the directory, basename, and extension. - - For 'chrome/browser/browser.cc', Split() would - return ('chrome/browser', 'browser', '.cc') - - Returns: - A tuple of (directory, basename, extension). - """ - - googlename = self.RepositoryName() - project, rest = os.path.split(googlename) - return (project,) + os.path.splitext(rest) - - def BaseName(self): - """File base name - text after the final slash, before the final period.""" - return self.Split()[1] - - def Extension(self): - """File extension - text following the final period.""" - return self.Split()[2] - - def NoExtension(self): - """File has no source file extension.""" - return '/'.join(self.Split()[0:2]) - - def IsSource(self): - """File has a source file extension.""" - return _IsSourceExtension(self.Extension()[1:]) - - -def _ShouldPrintError(category, confidence, linenum): - """If confidence >= verbose, category passes filter and is not suppressed.""" - - # There are three ways we might decide not to print an error message: - # a "NOLINT(category)" comment appears in the source, - # the verbosity level isn't high enough, or the filters filter it out. - if IsErrorSuppressedByNolint(category, linenum): - return False - - if confidence < _cpplint_state.verbose_level: - return False - - is_filtered = False - for one_filter in _Filters(): - if one_filter.startswith('-'): - if category.startswith(one_filter[1:]): - is_filtered = True - elif one_filter.startswith('+'): - if category.startswith(one_filter[1:]): - is_filtered = False - else: - assert False # should have been checked for in SetFilter. - if is_filtered: - return False - - return True - - -def Error(filename, linenum, category, confidence, message): - """Logs the fact we've found a lint error. - - We log where the error was found, and also our confidence in the error, - that is, how certain we are this is a legitimate style regression, and - not a misidentification or a use that's sometimes justified. - - False positives can be suppressed by the use of - "cpplint(category)" comments on the offending line. These are - parsed into _error_suppressions. - - Args: - filename: The name of the file containing the error. - linenum: The number of the line containing the error. - category: A string used to describe the "category" this bug - falls under: "whitespace", say, or "runtime". Categories - may have a hierarchy separated by slashes: "whitespace/indent". - confidence: A number from 1-5 representing a confidence score for - the error, with 5 meaning that we are certain of the problem, - and 1 meaning that it could be a legitimate construct. - message: The error message. - """ - if _ShouldPrintError(category, confidence, linenum): - _cpplint_state.IncrementErrorCount(category) - if _cpplint_state.output_format == 'vs7': - sys.stderr.write('%s(%s): error cpplint: [%s] %s [%d]\n' % ( - filename, linenum, category, message, confidence)) - elif _cpplint_state.output_format == 'eclipse': - sys.stderr.write('%s:%s: warning: %s [%s] [%d]\n' % ( - filename, linenum, message, category, confidence)) - else: - sys.stderr.write('%s:%s: %s [%s] [%d]\n' % ( - filename, linenum, message, category, confidence)) - - -# Matches standard C++ escape sequences per 2.13.2.3 of the C++ standard. -_RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile( - r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)') -# Match a single C style comment on the same line. -_RE_PATTERN_C_COMMENTS = r'/\*(?:[^*]|\*(?!/))*\*/' -# Matches multi-line C style comments. -# This RE is a little bit more complicated than one might expect, because we -# have to take care of space removals tools so we can handle comments inside -# statements better. -# The current rule is: We only clear spaces from both sides when we're at the -# end of the line. Otherwise, we try to remove spaces from the right side, -# if this doesn't work we try on left side but only if there's a non-character -# on the right. -_RE_PATTERN_CLEANSE_LINE_C_COMMENTS = re.compile( - r'(\s*' + _RE_PATTERN_C_COMMENTS + r'\s*$|' + - _RE_PATTERN_C_COMMENTS + r'\s+|' + - r'\s+' + _RE_PATTERN_C_COMMENTS + r'(?=\W)|' + - _RE_PATTERN_C_COMMENTS + r')') - - -def IsCppString(line): - """Does line terminate so, that the next symbol is in string constant. - - This function does not consider single-line nor multi-line comments. - - Args: - line: is a partial line of code starting from the 0..n. - - Returns: - True, if next character appended to 'line' is inside a - string constant. - """ - - line = line.replace(r'\\', 'XX') # after this, \\" does not match to \" - return ((line.count('"') - line.count(r'\"') - line.count("'\"'")) & 1) == 1 - - -def CleanseRawStrings(raw_lines): - """Removes C++11 raw strings from lines. - - Before: - static const char kData[] = R"( - multi-line string - )"; - - After: - static const char kData[] = "" - (replaced by blank line) - ""; - - Args: - raw_lines: list of raw lines. - - Returns: - list of lines with C++11 raw strings replaced by empty strings. - """ - - delimiter = None - lines_without_raw_strings = [] - for line in raw_lines: - if delimiter: - # Inside a raw string, look for the end - end = line.find(delimiter) - if end >= 0: - # Found the end of the string, match leading space for this - # line and resume copying the original lines, and also insert - # a "" on the last line. - leading_space = Match(r'^(\s*)\S', line) - line = leading_space.group(1) + '""' + line[end + len(delimiter):] - delimiter = None - else: - # Haven't found the end yet, append a blank line. - line = '""' - - # Look for beginning of a raw string, and replace them with - # empty strings. This is done in a loop to handle multiple raw - # strings on the same line. - while delimiter is None: - # Look for beginning of a raw string. - # See 2.14.15 [lex.string] for syntax. - # - # Once we have matched a raw string, we check the prefix of the - # line to make sure that the line is not part of a single line - # comment. It's done this way because we remove raw strings - # before removing comments as opposed to removing comments - # before removing raw strings. This is because there are some - # cpplint checks that requires the comments to be preserved, but - # we don't want to check comments that are inside raw strings. - matched = Match(r'^(.*?)\b(?:R|u8R|uR|UR|LR)"([^\s\\()]*)\((.*)$', line) - if (matched and - not Match(r'^([^\'"]|\'(\\.|[^\'])*\'|"(\\.|[^"])*")*//', - matched.group(1))): - delimiter = ')' + matched.group(2) + '"' - - end = matched.group(3).find(delimiter) - if end >= 0: - # Raw string ended on same line - line = (matched.group(1) + '""' + - matched.group(3)[end + len(delimiter):]) - delimiter = None - else: - # Start of a multi-line raw string - line = matched.group(1) + '""' - else: - break - - lines_without_raw_strings.append(line) - - # TODO(unknown): if delimiter is not None here, we might want to - # emit a warning for unterminated string. - return lines_without_raw_strings - - -def FindNextMultiLineCommentStart(lines, lineix): - """Find the beginning marker for a multiline comment.""" - while lineix < len(lines): - if lines[lineix].strip().startswith('/*'): - # Only return this marker if the comment goes beyond this line - if lines[lineix].strip().find('*/', 2) < 0: - return lineix - lineix += 1 - return len(lines) - - -def FindNextMultiLineCommentEnd(lines, lineix): - """We are inside a comment, find the end marker.""" - while lineix < len(lines): - if lines[lineix].strip().endswith('*/'): - return lineix - lineix += 1 - return len(lines) - - -def RemoveMultiLineCommentsFromRange(lines, begin, end): - """Clears a range of lines for multi-line comments.""" - # Having // dummy comments makes the lines non-empty, so we will not get - # unnecessary blank line warnings later in the code. - for i in range(begin, end): - lines[i] = '/**/' - - -def RemoveMultiLineComments(filename, lines, error): - """Removes multiline (c-style) comments from lines.""" - lineix = 0 - while lineix < len(lines): - lineix_begin = FindNextMultiLineCommentStart(lines, lineix) - if lineix_begin >= len(lines): - return - lineix_end = FindNextMultiLineCommentEnd(lines, lineix_begin) - if lineix_end >= len(lines): - error(filename, lineix_begin + 1, 'readability/multiline_comment', 5, - 'Could not find end of multi-line comment') - return - RemoveMultiLineCommentsFromRange(lines, lineix_begin, lineix_end + 1) - lineix = lineix_end + 1 - - -def CleanseComments(line): - """Removes //-comments and single-line C-style /* */ comments. - - Args: - line: A line of C++ source. - - Returns: - The line with single-line comments removed. - """ - commentpos = line.find('//') - if commentpos != -1 and not IsCppString(line[:commentpos]): - line = line[:commentpos].rstrip() - # get rid of /* ... */ - return _RE_PATTERN_CLEANSE_LINE_C_COMMENTS.sub('', line) - - -class CleansedLines(object): - """Holds 4 copies of all lines with different preprocessing applied to them. - - 1) elided member contains lines without strings and comments. - 2) lines member contains lines without comments. - 3) raw_lines member contains all the lines without processing. - 4) lines_without_raw_strings member is same as raw_lines, but with C++11 raw - strings removed. - All these members are of , and of the same length. - """ - - def __init__(self, lines): - self.elided = [] - self.lines = [] - self.raw_lines = lines - self.num_lines = len(lines) - self.lines_without_raw_strings = CleanseRawStrings(lines) - for linenum in range(len(self.lines_without_raw_strings)): - self.lines.append(CleanseComments( - self.lines_without_raw_strings[linenum])) - elided = self._CollapseStrings(self.lines_without_raw_strings[linenum]) - self.elided.append(CleanseComments(elided)) - - def NumLines(self): - """Returns the number of lines represented.""" - return self.num_lines - - @staticmethod - def _CollapseStrings(elided): - """Collapses strings and chars on a line to simple "" or '' blocks. - - We nix strings first so we're not fooled by text like '"http://"' - - Args: - elided: The line being processed. - - Returns: - The line with collapsed strings. - """ - if _RE_PATTERN_INCLUDE.match(elided): - return elided - - # Remove escaped characters first to make quote/single quote collapsing - # basic. Things that look like escaped characters shouldn't occur - # outside of strings and chars. - elided = _RE_PATTERN_CLEANSE_LINE_ESCAPES.sub('', elided) - - # Replace quoted strings and digit separators. Both single quotes - # and double quotes are processed in the same loop, otherwise - # nested quotes wouldn't work. - collapsed = '' - while True: - # Find the first quote character - match = Match(r'^([^\'"]*)([\'"])(.*)$', elided) - if not match: - collapsed += elided - break - head, quote, tail = match.groups() - - if quote == '"': - # Collapse double quoted strings - second_quote = tail.find('"') - if second_quote >= 0: - collapsed += head + '""' - elided = tail[second_quote + 1:] - else: - # Unmatched double quote, don't bother processing the rest - # of the line since this is probably a multiline string. - collapsed += elided - break - else: - # Found single quote, check nearby text to eliminate digit separators. - # - # There is no special handling for floating point here, because - # the integer/fractional/exponent parts would all be parsed - # correctly as long as there are digits on both sides of the - # separator. So we are fine as long as we don't see something - # like "0.'3" (gcc 4.9.0 will not allow this literal). - if Search(r'\b(?:0[bBxX]?|[1-9])[0-9a-fA-F]*$', head): - match_literal = Match(r'^((?:\'?[0-9a-zA-Z_])*)(.*)$', "'" + tail) - collapsed += head + match_literal.group(1).replace("'", '') - elided = match_literal.group(2) - else: - second_quote = tail.find('\'') - if second_quote >= 0: - collapsed += head + "''" - elided = tail[second_quote + 1:] - else: - # Unmatched single quote - collapsed += elided - break - - return collapsed - - -def FindEndOfExpressionInLine(line, startpos, stack): - """Find the position just after the end of current parenthesized expression. - - Args: - line: a CleansedLines line. - startpos: start searching at this position. - stack: nesting stack at startpos. - - Returns: - On finding matching end: (index just after matching end, None) - On finding an unclosed expression: (-1, None) - Otherwise: (-1, new stack at end of this line) - """ - for i in xrange(startpos, len(line)): - char = line[i] - if char in '([{': - # Found start of parenthesized expression, push to expression stack - stack.append(char) - elif char == '<': - # Found potential start of template argument list - if i > 0 and line[i - 1] == '<': - # Left shift operator - if stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - elif i > 0 and Search(r'\boperator\s*$', line[0:i]): - # operator<, don't add to stack - continue - else: - # Tentative start of template argument list - stack.append('<') - elif char in ')]}': - # Found end of parenthesized expression. - # - # If we are currently expecting a matching '>', the pending '<' - # must have been an operator. Remove them from expression stack. - while stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - if ((stack[-1] == '(' and char == ')') or - (stack[-1] == '[' and char == ']') or - (stack[-1] == '{' and char == '}')): - stack.pop() - if not stack: - return (i + 1, None) - else: - # Mismatched parentheses - return (-1, None) - elif char == '>': - # Found potential end of template argument list. - - # Ignore "->" and operator functions - if (i > 0 and - (line[i - 1] == '-' or Search(r'\boperator\s*$', line[0:i - 1]))): - continue - - # Pop the stack if there is a matching '<'. Otherwise, ignore - # this '>' since it must be an operator. - if stack: - if stack[-1] == '<': - stack.pop() - if not stack: - return (i + 1, None) - elif char == ';': - # Found something that look like end of statements. If we are currently - # expecting a '>', the matching '<' must have been an operator, since - # template argument list should not contain statements. - while stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - - # Did not find end of expression or unbalanced parentheses on this line - return (-1, stack) - - -def CloseExpression(clean_lines, linenum, pos): - """If input points to ( or { or [ or <, finds the position that closes it. - - If lines[linenum][pos] points to a '(' or '{' or '[' or '<', finds the - linenum/pos that correspond to the closing of the expression. - - TODO(unknown): cpplint spends a fair bit of time matching parentheses. - Ideally we would want to index all opening and closing parentheses once - and have CloseExpression be just a simple lookup, but due to preprocessor - tricks, this is not so easy. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: A position on the line. - - Returns: - A tuple (line, linenum, pos) pointer *past* the closing brace, or - (line, len(lines), -1) if we never find a close. Note we ignore - strings and comments when matching; and the line we return is the - 'cleansed' line at linenum. - """ - - line = clean_lines.elided[linenum] - if (line[pos] not in '({[<') or Match(r'<[<=]', line[pos:]): - return (line, clean_lines.NumLines(), -1) - - # Check first line - (end_pos, stack) = FindEndOfExpressionInLine(line, pos, []) - if end_pos > -1: - return (line, linenum, end_pos) - - # Continue scanning forward - while stack and linenum < clean_lines.NumLines() - 1: - linenum += 1 - line = clean_lines.elided[linenum] - (end_pos, stack) = FindEndOfExpressionInLine(line, 0, stack) - if end_pos > -1: - return (line, linenum, end_pos) - - # Did not find end of expression before end of file, give up - return (line, clean_lines.NumLines(), -1) - - -def FindStartOfExpressionInLine(line, endpos, stack): - """Find position at the matching start of current expression. - - This is almost the reverse of FindEndOfExpressionInLine, but note - that the input position and returned position differs by 1. - - Args: - line: a CleansedLines line. - endpos: start searching at this position. - stack: nesting stack at endpos. - - Returns: - On finding matching start: (index at matching start, None) - On finding an unclosed expression: (-1, None) - Otherwise: (-1, new stack at beginning of this line) - """ - i = endpos - while i >= 0: - char = line[i] - if char in ')]}': - # Found end of expression, push to expression stack - stack.append(char) - elif char == '>': - # Found potential end of template argument list. - # - # Ignore it if it's a "->" or ">=" or "operator>" - if (i > 0 and - (line[i - 1] == '-' or - Match(r'\s>=\s', line[i - 1:]) or - Search(r'\boperator\s*$', line[0:i]))): - i -= 1 - else: - stack.append('>') - elif char == '<': - # Found potential start of template argument list - if i > 0 and line[i - 1] == '<': - # Left shift operator - i -= 1 - else: - # If there is a matching '>', we can pop the expression stack. - # Otherwise, ignore this '<' since it must be an operator. - if stack and stack[-1] == '>': - stack.pop() - if not stack: - return (i, None) - elif char in '([{': - # Found start of expression. - # - # If there are any unmatched '>' on the stack, they must be - # operators. Remove those. - while stack and stack[-1] == '>': - stack.pop() - if not stack: - return (-1, None) - if ((char == '(' and stack[-1] == ')') or - (char == '[' and stack[-1] == ']') or - (char == '{' and stack[-1] == '}')): - stack.pop() - if not stack: - return (i, None) - else: - # Mismatched parentheses - return (-1, None) - elif char == ';': - # Found something that look like end of statements. If we are currently - # expecting a '<', the matching '>' must have been an operator, since - # template argument list should not contain statements. - while stack and stack[-1] == '>': - stack.pop() - if not stack: - return (-1, None) - - i -= 1 - - return (-1, stack) - - -def ReverseCloseExpression(clean_lines, linenum, pos): - """If input points to ) or } or ] or >, finds the position that opens it. - - If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the - linenum/pos that correspond to the opening of the expression. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: A position on the line. - - Returns: - A tuple (line, linenum, pos) pointer *at* the opening brace, or - (line, 0, -1) if we never find the matching opening brace. Note - we ignore strings and comments when matching; and the line we - return is the 'cleansed' line at linenum. - """ - line = clean_lines.elided[linenum] - if line[pos] not in ')}]>': - return (line, 0, -1) - - # Check last line - (start_pos, stack) = FindStartOfExpressionInLine(line, pos, []) - if start_pos > -1: - return (line, linenum, start_pos) - - # Continue scanning backward - while stack and linenum > 0: - linenum -= 1 - line = clean_lines.elided[linenum] - (start_pos, stack) = FindStartOfExpressionInLine(line, len(line) - 1, stack) - if start_pos > -1: - return (line, linenum, start_pos) - - # Did not find start of expression before beginning of file, give up - return (line, 0, -1) - - -def CheckForCopyright(filename, lines, error): - """Logs an error if no Copyright message appears at the top of the file.""" - - # We'll say it should occur by line 10. Don't forget there's a - # dummy line at the front. - for line in xrange(1, min(len(lines), 11)): - if re.search(r'Copyright', lines[line], re.I): break - else: # means no copyright line was found - error(filename, 0, 'legal/copyright', 5, - 'No copyright message found. ' - 'You should have a line: "Copyright [year] "') - - -def GetIndentLevel(line): - """Return the number of leading spaces in line. - - Args: - line: A string to check. - - Returns: - An integer count of leading spaces, possibly zero. - """ - indent = Match(r'^( *)\S', line) - if indent: - return len(indent.group(1)) - else: - return 0 - - -def GetHeaderGuardCPPVariable(filename): - """Returns the CPP variable that should be used as a header guard. - - Args: - filename: The name of a C++ header file. - - Returns: - The CPP variable that should be used as a header guard in the - named file. - - """ - - # Restores original filename in case that cpplint is invoked from Emacs's - # flymake. - filename = re.sub(r'_flymake\.h$', '.h', filename) - filename = re.sub(r'/\.flymake/([^/]*)$', r'/\1', filename) - # Replace 'c++' with 'cpp'. - filename = filename.replace('C++', 'cpp').replace('c++', 'cpp') - - fileinfo = FileInfo(filename) - file_path_from_root = fileinfo.RepositoryName() - if _root: - suffix = os.sep - # On Windows using directory separator will leave us with - # "bogus escape error" unless we properly escape regex. - if suffix == '\\': - suffix += '\\' - file_path_from_root = re.sub('^' + _root + suffix, '', file_path_from_root) - return re.sub(r'[^a-zA-Z0-9]', '_', file_path_from_root).upper() + '_' - - -def CheckForHeaderGuard(filename, clean_lines, error): - """Checks that the file contains a header guard. - - Logs an error if no #ifndef header guard is present. For other - headers, checks that the full pathname is used. - - Args: - filename: The name of the C++ header file. - clean_lines: A CleansedLines instance containing the file. - error: The function to call with any errors found. - """ - - # Don't check for header guards if there are error suppression - # comments somewhere in this file. - # - # Because this is silencing a warning for a nonexistent line, we - # only support the very specific NOLINT(build/header_guard) syntax, - # and not the general NOLINT or NOLINT(*) syntax. - raw_lines = clean_lines.lines_without_raw_strings - for i in raw_lines: - if Search(r'//\s*NOLINT\(build/header_guard\)', i): - return - - cppvar = GetHeaderGuardCPPVariable(filename) - - ifndef = '' - ifndef_linenum = 0 - define = '' - endif = '' - endif_linenum = 0 - for linenum, line in enumerate(raw_lines): - linesplit = line.split() - if len(linesplit) >= 2: - # find the first occurrence of #ifndef and #define, save arg - if not ifndef and linesplit[0] == '#ifndef': - # set ifndef to the header guard presented on the #ifndef line. - ifndef = linesplit[1] - ifndef_linenum = linenum - if not define and linesplit[0] == '#define': - define = linesplit[1] - # find the last occurrence of #endif, save entire line - if line.startswith('#endif'): - endif = line - endif_linenum = linenum - - if not ifndef or not define or ifndef != define: - error(filename, 0, 'build/header_guard', 5, - 'No #ifndef header guard found, suggested CPP variable is: %s' % - cppvar) - return - - # The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__ - # for backward compatibility. - if ifndef != cppvar: - error_level = 0 - if ifndef != cppvar + '_': - error_level = 5 - - ParseNolintSuppressions(filename, raw_lines[ifndef_linenum], ifndef_linenum, - error) - error(filename, ifndef_linenum, 'build/header_guard', error_level, - '#ifndef header guard has wrong style, please use: %s' % cppvar) - - # Check for "//" comments on endif line. - ParseNolintSuppressions(filename, raw_lines[endif_linenum], endif_linenum, - error) - match = Match(r'#endif\s*//\s*' + cppvar + r'(_)?\b', endif) - if match: - if match.group(1) == '_': - # Issue low severity warning for deprecated double trailing underscore - error(filename, endif_linenum, 'build/header_guard', 0, - '#endif line should be "#endif // %s"' % cppvar) - return - - # Didn't find the corresponding "//" comment. If this file does not - # contain any "//" comments at all, it could be that the compiler - # only wants "/**/" comments, look for those instead. - no_single_line_comments = True - for i in xrange(1, len(raw_lines) - 1): - line = raw_lines[i] - if Match(r'^(?:(?:\'(?:\.|[^\'])*\')|(?:"(?:\.|[^"])*")|[^\'"])*//', line): - no_single_line_comments = False - break - - if no_single_line_comments: - match = Match(r'#endif\s*/\*\s*' + cppvar + r'(_)?\s*\*/', endif) - if match: - if match.group(1) == '_': - # Low severity warning for double trailing underscore - error(filename, endif_linenum, 'build/header_guard', 0, - '#endif line should be "#endif /* %s */"' % cppvar) - return - - # Didn't find anything - error(filename, endif_linenum, 'build/header_guard', 5, - '#endif line should be "#endif // %s"' % cppvar) - - -def CheckHeaderFileIncluded(filename, include_state, error): - """Logs an error if a .cc file does not include its header.""" - - # Do not check test files - fileinfo = FileInfo(filename) - if Search(_TEST_FILE_SUFFIX, fileinfo.BaseName()): - return - - headerfile = filename[0:len(filename) - len(fileinfo.Extension())] + '.h' - if not os.path.exists(headerfile): - return - headername = FileInfo(headerfile).RepositoryName() - first_include = 0 - for section_list in include_state.include_list: - for f in section_list: - if headername in f[0] or f[0] in headername: - return - if not first_include: - first_include = f[1] - - error(filename, first_include, 'build/include', 5, - '%s should include its header file %s' % (fileinfo.RepositoryName(), - headername)) - - -def CheckForBadCharacters(filename, lines, error): - """Logs an error for each line containing bad characters. - - Two kinds of bad characters: - - 1. Unicode replacement characters: These indicate that either the file - contained invalid UTF-8 (likely) or Unicode replacement characters (which - it shouldn't). Note that it's possible for this to throw off line - numbering if the invalid UTF-8 occurred adjacent to a newline. - - 2. NUL bytes. These are problematic for some tools. - - Args: - filename: The name of the current file. - lines: An array of strings, each representing a line of the file. - error: The function to call with any errors found. - """ - for linenum, line in enumerate(lines): - if u'\ufffd' in line: - error(filename, linenum, 'readability/utf8', 5, - 'Line contains invalid UTF-8 (or Unicode replacement character).') - if '\0' in line: - error(filename, linenum, 'readability/nul', 5, 'Line contains NUL byte.') - - -def CheckForNewlineAtEOF(filename, lines, error): - """Logs an error if there is no newline char at the end of the file. - - Args: - filename: The name of the current file. - lines: An array of strings, each representing a line of the file. - error: The function to call with any errors found. - """ - - # The array lines() was created by adding two newlines to the - # original file (go figure), then splitting on \n. - # To verify that the file ends in \n, we just have to make sure the - # last-but-two element of lines() exists and is empty. - if len(lines) < 3 or lines[-2]: - error(filename, len(lines) - 2, 'whitespace/ending_newline', 5, - 'Could not find a newline character at the end of the file.') - - -def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): - """Logs an error if we see /* ... */ or "..." that extend past one line. - - /* ... */ comments are legit inside macros, for one line. - Otherwise, we prefer // comments, so it's ok to warn about the - other. Likewise, it's ok for strings to extend across multiple - lines, as long as a line continuation character (backslash) - terminates each line. Although not currently prohibited by the C++ - style guide, it's ugly and unnecessary. We don't do well with either - in this lint program, so we warn about both. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Remove all \\ (escaped backslashes) from the line. They are OK, and the - # second (escaped) slash may trigger later \" detection erroneously. - line = line.replace('\\\\', '') - - if line.count('/*') > line.count('*/'): - error(filename, linenum, 'readability/multiline_comment', 5, - 'Complex multi-line /*...*/-style comment found. ' - 'Lint may give bogus warnings. ' - 'Consider replacing these with //-style comments, ' - 'with #if 0...#endif, ' - 'or with more clearly structured multi-line comments.') - - if (line.count('"') - line.count('\\"')) % 2: - error(filename, linenum, 'readability/multiline_string', 5, - 'Multi-line string ("...") found. This lint script doesn\'t ' - 'do well with such strings, and may give bogus warnings. ' - 'Use C++11 raw strings or concatenation instead.') - - -# (non-threadsafe name, thread-safe alternative, validation pattern) -# -# The validation pattern is used to eliminate false positives such as: -# _rand(); // false positive due to substring match. -# ->rand(); // some member function rand(). -# ACMRandom rand(seed); // some variable named rand. -# ISAACRandom rand(); // another variable named rand. -# -# Basically we require the return value of these functions to be used -# in some expression context on the same line by matching on some -# operator before the function name. This eliminates constructors and -# member function calls. -_UNSAFE_FUNC_PREFIX = r'(?:[-+*/=%^&|(<]\s*|>\s+)' -_THREADING_LIST = ( - ('asctime(', 'asctime_r(', _UNSAFE_FUNC_PREFIX + r'asctime\([^)]+\)'), - ('ctime(', 'ctime_r(', _UNSAFE_FUNC_PREFIX + r'ctime\([^)]+\)'), - ('getgrgid(', 'getgrgid_r(', _UNSAFE_FUNC_PREFIX + r'getgrgid\([^)]+\)'), - ('getgrnam(', 'getgrnam_r(', _UNSAFE_FUNC_PREFIX + r'getgrnam\([^)]+\)'), - ('getlogin(', 'getlogin_r(', _UNSAFE_FUNC_PREFIX + r'getlogin\(\)'), - ('getpwnam(', 'getpwnam_r(', _UNSAFE_FUNC_PREFIX + r'getpwnam\([^)]+\)'), - ('getpwuid(', 'getpwuid_r(', _UNSAFE_FUNC_PREFIX + r'getpwuid\([^)]+\)'), - ('gmtime(', 'gmtime_r(', _UNSAFE_FUNC_PREFIX + r'gmtime\([^)]+\)'), - ('localtime(', 'localtime_r(', _UNSAFE_FUNC_PREFIX + r'localtime\([^)]+\)'), - ('rand(', 'rand_r(', _UNSAFE_FUNC_PREFIX + r'rand\(\)'), - ('strtok(', 'strtok_r(', - _UNSAFE_FUNC_PREFIX + r'strtok\([^)]+\)'), - ('ttyname(', 'ttyname_r(', _UNSAFE_FUNC_PREFIX + r'ttyname\([^)]+\)'), - ) - - -def CheckPosixThreading(filename, clean_lines, linenum, error): - """Checks for calls to thread-unsafe functions. - - Much code has been originally written without consideration of - multi-threading. Also, engineers are relying on their old experience; - they have learned posix before threading extensions were added. These - tests guide the engineers to use thread-safe functions (when using - posix directly). - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - for single_thread_func, multithread_safe_func, pattern in _THREADING_LIST: - # Additional pattern matching check to confirm that this is the - # function we are looking for - if Search(pattern, line): - error(filename, linenum, 'runtime/threadsafe_fn', 2, - 'Consider using ' + multithread_safe_func + - '...) instead of ' + single_thread_func + - '...) for improved thread safety.') - - -def CheckVlogArguments(filename, clean_lines, linenum, error): - """Checks that VLOG() is only used for defining a logging level. - - For example, VLOG(2) is correct. VLOG(INFO), VLOG(WARNING), VLOG(ERROR), and - VLOG(FATAL) are not. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - if Search(r'\bVLOG\((INFO|ERROR|WARNING|DFATAL|FATAL)\)', line): - error(filename, linenum, 'runtime/vlog', 5, - 'VLOG() should be used with numeric verbosity level. ' - 'Use LOG() if you want symbolic severity levels.') - -# Matches invalid increment: *count++, which moves pointer instead of -# incrementing a value. -_RE_PATTERN_INVALID_INCREMENT = re.compile( - r'^\s*\*\w+(\+\+|--);') - - -def CheckInvalidIncrement(filename, clean_lines, linenum, error): - """Checks for invalid increment *count++. - - For example following function: - void increment_counter(int* count) { - *count++; - } - is invalid, because it effectively does count++, moving pointer, and should - be replaced with ++*count, (*count)++ or *count += 1. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - if _RE_PATTERN_INVALID_INCREMENT.match(line): - error(filename, linenum, 'runtime/invalid_increment', 5, - 'Changing pointer instead of value (or unused value of operator*).') - - -def IsMacroDefinition(clean_lines, linenum): - if Search(r'^#define', clean_lines[linenum]): - return True - - if linenum > 0 and Search(r'\\$', clean_lines[linenum - 1]): - return True - - return False - - -def IsForwardClassDeclaration(clean_lines, linenum): - return Match(r'^\s*(\btemplate\b)*.*class\s+\w+;\s*$', clean_lines[linenum]) - - -class _BlockInfo(object): - """Stores information about a generic block of code.""" - - def __init__(self, linenum, seen_open_brace): - self.starting_linenum = linenum - self.seen_open_brace = seen_open_brace - self.open_parentheses = 0 - self.inline_asm = _NO_ASM - self.check_namespace_indentation = False - - def CheckBegin(self, filename, clean_lines, linenum, error): - """Run checks that applies to text up to the opening brace. - - This is mostly for checking the text after the class identifier - and the "{", usually where the base class is specified. For other - blocks, there isn't much to check, so we always pass. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - pass - - def CheckEnd(self, filename, clean_lines, linenum, error): - """Run checks that applies to text after the closing brace. - - This is mostly used for checking end of namespace comments. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - pass - - def IsBlockInfo(self): - """Returns true if this block is a _BlockInfo. - - This is convenient for verifying that an object is an instance of - a _BlockInfo, but not an instance of any of the derived classes. - - Returns: - True for this class, False for derived classes. - """ - return self.__class__ == _BlockInfo - - -class _ExternCInfo(_BlockInfo): - """Stores information about an 'extern "C"' block.""" - - def __init__(self, linenum): - _BlockInfo.__init__(self, linenum, True) - - -class _ClassInfo(_BlockInfo): - """Stores information about a class.""" - - def __init__(self, name, class_or_struct, clean_lines, linenum): - _BlockInfo.__init__(self, linenum, False) - self.name = name - self.is_derived = False - self.check_namespace_indentation = True - if class_or_struct == 'struct': - self.access = 'public' - self.is_struct = True - else: - self.access = 'private' - self.is_struct = False - - # Remember initial indentation level for this class. Using raw_lines here - # instead of elided to account for leading comments. - self.class_indent = GetIndentLevel(clean_lines.raw_lines[linenum]) - - # Try to find the end of the class. This will be confused by things like: - # class A { - # } *x = { ... - # - # But it's still good enough for CheckSectionSpacing. - self.last_line = 0 - depth = 0 - for i in range(linenum, clean_lines.NumLines()): - line = clean_lines.elided[i] - depth += line.count('{') - line.count('}') - if not depth: - self.last_line = i - break - - def CheckBegin(self, filename, clean_lines, linenum, error): - # Look for a bare ':' - if Search('(^|[^:]):($|[^:])', clean_lines.elided[linenum]): - self.is_derived = True - - def CheckEnd(self, filename, clean_lines, linenum, error): - # If there is a DISALLOW macro, it should appear near the end of - # the class. - seen_last_thing_in_class = False - for i in xrange(linenum - 1, self.starting_linenum, -1): - match = Search( - r'\b(DISALLOW_COPY_AND_ASSIGN|DISALLOW_IMPLICIT_CONSTRUCTORS)\(' + - self.name + r'\)', - clean_lines.elided[i]) - if match: - if seen_last_thing_in_class: - error(filename, i, 'readability/constructors', 3, - match.group(1) + ' should be the last thing in the class') - break - - if not Match(r'^\s*$', clean_lines.elided[i]): - seen_last_thing_in_class = True - - # Check that closing brace is aligned with beginning of the class. - # Only do this if the closing brace is indented by only whitespaces. - # This means we will not check single-line class definitions. - indent = Match(r'^( *)\}', clean_lines.elided[linenum]) - if indent and len(indent.group(1)) != self.class_indent: - if self.is_struct: - parent = 'struct ' + self.name - else: - parent = 'class ' + self.name - error(filename, linenum, 'whitespace/indent', 3, - 'Closing brace should be aligned with beginning of %s' % parent) - - -class _NamespaceInfo(_BlockInfo): - """Stores information about a namespace.""" - - def __init__(self, name, linenum): - _BlockInfo.__init__(self, linenum, False) - self.name = name or '' - self.check_namespace_indentation = True - - def CheckEnd(self, filename, clean_lines, linenum, error): - """Check end of namespace comments.""" - line = clean_lines.raw_lines[linenum] - - # Check how many lines is enclosed in this namespace. Don't issue - # warning for missing namespace comments if there aren't enough - # lines. However, do apply checks if there is already an end of - # namespace comment and it's incorrect. - # - # TODO(unknown): We always want to check end of namespace comments - # if a namespace is large, but sometimes we also want to apply the - # check if a short namespace contained nontrivial things (something - # other than forward declarations). There is currently no logic on - # deciding what these nontrivial things are, so this check is - # triggered by namespace size only, which works most of the time. - if (linenum - self.starting_linenum < 10 - and not Match(r'^\s*};*\s*(//|/\*).*\bnamespace\b', line)): - return - - # Look for matching comment at end of namespace. - # - # Note that we accept C style "/* */" comments for terminating - # namespaces, so that code that terminate namespaces inside - # preprocessor macros can be cpplint clean. - # - # We also accept stuff like "// end of namespace ." with the - # period at the end. - # - # Besides these, we don't accept anything else, otherwise we might - # get false negatives when existing comment is a substring of the - # expected namespace. - if self.name: - # Named namespace - if not Match((r'^\s*};*\s*(//|/\*).*\bnamespace\s+' + - re.escape(self.name) + r'[\*/\.\\\s]*$'), - line): - error(filename, linenum, 'readability/namespace', 5, - 'Namespace should be terminated with "// namespace %s"' % - self.name) - else: - # Anonymous namespace - if not Match(r'^\s*};*\s*(//|/\*).*\bnamespace[\*/\.\\\s]*$', line): - # If "// namespace anonymous" or "// anonymous namespace (more text)", - # mention "// anonymous namespace" as an acceptable form - if Match(r'^\s*}.*\b(namespace anonymous|anonymous namespace)\b', line): - error(filename, linenum, 'readability/namespace', 5, - 'Anonymous namespace should be terminated with "// namespace"' - ' or "// anonymous namespace"') - else: - error(filename, linenum, 'readability/namespace', 5, - 'Anonymous namespace should be terminated with "// namespace"') - - -class _PreprocessorInfo(object): - """Stores checkpoints of nesting stacks when #if/#else is seen.""" - - def __init__(self, stack_before_if): - # The entire nesting stack before #if - self.stack_before_if = stack_before_if - - # The entire nesting stack up to #else - self.stack_before_else = [] - - # Whether we have already seen #else or #elif - self.seen_else = False - - -class NestingState(object): - """Holds states related to parsing braces.""" - - def __init__(self): - # Stack for tracking all braces. An object is pushed whenever we - # see a "{", and popped when we see a "}". Only 3 types of - # objects are possible: - # - _ClassInfo: a class or struct. - # - _NamespaceInfo: a namespace. - # - _BlockInfo: some other type of block. - self.stack = [] - - # Top of the previous stack before each Update(). - # - # Because the nesting_stack is updated at the end of each line, we - # had to do some convoluted checks to find out what is the current - # scope at the beginning of the line. This check is simplified by - # saving the previous top of nesting stack. - # - # We could save the full stack, but we only need the top. Copying - # the full nesting stack would slow down cpplint by ~10%. - self.previous_stack_top = [] - - # Stack of _PreprocessorInfo objects. - self.pp_stack = [] - - def SeenOpenBrace(self): - """Check if we have seen the opening brace for the innermost block. - - Returns: - True if we have seen the opening brace, False if the innermost - block is still expecting an opening brace. - """ - return (not self.stack) or self.stack[-1].seen_open_brace - - def InNamespaceBody(self): - """Check if we are currently one level inside a namespace body. - - Returns: - True if top of the stack is a namespace block, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _NamespaceInfo) - - def InExternC(self): - """Check if we are currently one level inside an 'extern "C"' block. - - Returns: - True if top of the stack is an extern block, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _ExternCInfo) - - def InClassDeclaration(self): - """Check if we are currently one level inside a class or struct declaration. - - Returns: - True if top of the stack is a class/struct, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _ClassInfo) - - def InAsmBlock(self): - """Check if we are currently one level inside an inline ASM block. - - Returns: - True if the top of the stack is a block containing inline ASM. - """ - return self.stack and self.stack[-1].inline_asm != _NO_ASM - - def InTemplateArgumentList(self, clean_lines, linenum, pos): - """Check if current position is inside template argument list. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: position just after the suspected template argument. - Returns: - True if (linenum, pos) is inside template arguments. - """ - while linenum < clean_lines.NumLines(): - # Find the earliest character that might indicate a template argument - line = clean_lines.elided[linenum] - match = Match(r'^[^{};=\[\]\.<>]*(.)', line[pos:]) - if not match: - linenum += 1 - pos = 0 - continue - token = match.group(1) - pos += len(match.group(0)) - - # These things do not look like template argument list: - # class Suspect { - # class Suspect x; } - if token in ('{', '}', ';'): return False - - # These things look like template argument list: - # template - # template - # template - # template - if token in ('>', '=', '[', ']', '.'): return True - - # Check if token is an unmatched '<'. - # If not, move on to the next character. - if token != '<': - pos += 1 - if pos >= len(line): - linenum += 1 - pos = 0 - continue - - # We can't be sure if we just find a single '<', and need to - # find the matching '>'. - (_, end_line, end_pos) = CloseExpression(clean_lines, linenum, pos - 1) - if end_pos < 0: - # Not sure if template argument list or syntax error in file - return False - linenum = end_line - pos = end_pos - return False - - def UpdatePreprocessor(self, line): - """Update preprocessor stack. - - We need to handle preprocessors due to classes like this: - #ifdef SWIG - struct ResultDetailsPageElementExtensionPoint { - #else - struct ResultDetailsPageElementExtensionPoint : public Extension { - #endif - - We make the following assumptions (good enough for most files): - - Preprocessor condition evaluates to true from #if up to first - #else/#elif/#endif. - - - Preprocessor condition evaluates to false from #else/#elif up - to #endif. We still perform lint checks on these lines, but - these do not affect nesting stack. - - Args: - line: current line to check. - """ - if Match(r'^\s*#\s*(if|ifdef|ifndef)\b', line): - # Beginning of #if block, save the nesting stack here. The saved - # stack will allow us to restore the parsing state in the #else case. - self.pp_stack.append(_PreprocessorInfo(copy.deepcopy(self.stack))) - elif Match(r'^\s*#\s*(else|elif)\b', line): - # Beginning of #else block - if self.pp_stack: - if not self.pp_stack[-1].seen_else: - # This is the first #else or #elif block. Remember the - # whole nesting stack up to this point. This is what we - # keep after the #endif. - self.pp_stack[-1].seen_else = True - self.pp_stack[-1].stack_before_else = copy.deepcopy(self.stack) - - # Restore the stack to how it was before the #if - self.stack = copy.deepcopy(self.pp_stack[-1].stack_before_if) - else: - # TODO(unknown): unexpected #else, issue warning? - pass - elif Match(r'^\s*#\s*endif\b', line): - # End of #if or #else blocks. - if self.pp_stack: - # If we saw an #else, we will need to restore the nesting - # stack to its former state before the #else, otherwise we - # will just continue from where we left off. - if self.pp_stack[-1].seen_else: - # Here we can just use a shallow copy since we are the last - # reference to it. - self.stack = self.pp_stack[-1].stack_before_else - # Drop the corresponding #if - self.pp_stack.pop() - else: - # TODO(unknown): unexpected #endif, issue warning? - pass - - # TODO(unknown): Update() is too long, but we will refactor later. - def Update(self, filename, clean_lines, linenum, error): - """Update nesting state with current line. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Remember top of the previous nesting stack. - # - # The stack is always pushed/popped and not modified in place, so - # we can just do a shallow copy instead of copy.deepcopy. Using - # deepcopy would slow down cpplint by ~28%. - if self.stack: - self.previous_stack_top = self.stack[-1] - else: - self.previous_stack_top = None - - # Update pp_stack - self.UpdatePreprocessor(line) - - # Count parentheses. This is to avoid adding struct arguments to - # the nesting stack. - if self.stack: - inner_block = self.stack[-1] - depth_change = line.count('(') - line.count(')') - inner_block.open_parentheses += depth_change - - # Also check if we are starting or ending an inline assembly block. - if inner_block.inline_asm in (_NO_ASM, _END_ASM): - if (depth_change != 0 and - inner_block.open_parentheses == 1 and - _MATCH_ASM.match(line)): - # Enter assembly block - inner_block.inline_asm = _INSIDE_ASM - else: - # Not entering assembly block. If previous line was _END_ASM, - # we will now shift to _NO_ASM state. - inner_block.inline_asm = _NO_ASM - elif (inner_block.inline_asm == _INSIDE_ASM and - inner_block.open_parentheses == 0): - # Exit assembly block - inner_block.inline_asm = _END_ASM - - # Consume namespace declaration at the beginning of the line. Do - # this in a loop so that we catch same line declarations like this: - # namespace proto2 { namespace bridge { class MessageSet; } } - while True: - # Match start of namespace. The "\b\s*" below catches namespace - # declarations even if it weren't followed by a whitespace, this - # is so that we don't confuse our namespace checker. The - # missing spaces will be flagged by CheckSpacing. - namespace_decl_match = Match(r'^\s*namespace\b\s*([:\w]+)?(.*)$', line) - if not namespace_decl_match: - break - - new_namespace = _NamespaceInfo(namespace_decl_match.group(1), linenum) - self.stack.append(new_namespace) - - line = namespace_decl_match.group(2) - if line.find('{') != -1: - new_namespace.seen_open_brace = True - line = line[line.find('{') + 1:] - - # Look for a class declaration in whatever is left of the line - # after parsing namespaces. The regexp accounts for decorated classes - # such as in: - # class LOCKABLE API Object { - # }; - class_decl_match = Match( - r'^(\s*(?:template\s*<[\w\s<>,:]*>\s*)?' - r'(class|struct)\s+(?:[A-Z_]+\s+)*(\w+(?:::\w+)*))' - r'(.*)$', line) - if (class_decl_match and - (not self.stack or self.stack[-1].open_parentheses == 0)): - # We do not want to accept classes that are actually template arguments: - # template , - # template class Ignore3> - # void Function() {}; - # - # To avoid template argument cases, we scan forward and look for - # an unmatched '>'. If we see one, assume we are inside a - # template argument list. - end_declaration = len(class_decl_match.group(1)) - if not self.InTemplateArgumentList(clean_lines, linenum, end_declaration): - self.stack.append(_ClassInfo( - class_decl_match.group(3), class_decl_match.group(2), - clean_lines, linenum)) - line = class_decl_match.group(4) - - # If we have not yet seen the opening brace for the innermost block, - # run checks here. - if not self.SeenOpenBrace(): - self.stack[-1].CheckBegin(filename, clean_lines, linenum, error) - - # Update access control if we are inside a class/struct - if self.stack and isinstance(self.stack[-1], _ClassInfo): - classinfo = self.stack[-1] - access_match = Match( - r'^(.*)\b(public|private|protected|signals)(\s+(?:slots\s*)?)?' - r':(?:[^:]|$)', - line) - if access_match: - classinfo.access = access_match.group(2) - - # Check that access keywords are indented +1 space. Skip this - # check if the keywords are not preceded by whitespaces. - indent = access_match.group(1) - if (len(indent) != classinfo.class_indent + 1 and - Match(r'^\s*$', indent)): - if classinfo.is_struct: - parent = 'struct ' + classinfo.name - else: - parent = 'class ' + classinfo.name - slots = '' - if access_match.group(3): - slots = access_match.group(3) - error(filename, linenum, 'whitespace/indent', 3, - '%s%s: should be indented +1 space inside %s' % ( - access_match.group(2), slots, parent)) - - # Consume braces or semicolons from what's left of the line - while True: - # Match first brace, semicolon, or closed parenthesis. - matched = Match(r'^[^{;)}]*([{;)}])(.*)$', line) - if not matched: - break - - token = matched.group(1) - if token == '{': - # If namespace or class hasn't seen a opening brace yet, mark - # namespace/class head as complete. Push a new block onto the - # stack otherwise. - if not self.SeenOpenBrace(): - self.stack[-1].seen_open_brace = True - elif Match(r'^extern\s*"[^"]*"\s*\{', line): - self.stack.append(_ExternCInfo(linenum)) - else: - self.stack.append(_BlockInfo(linenum, True)) - if _MATCH_ASM.match(line): - self.stack[-1].inline_asm = _BLOCK_ASM - - elif token == ';' or token == ')': - # If we haven't seen an opening brace yet, but we already saw - # a semicolon, this is probably a forward declaration. Pop - # the stack for these. - # - # Similarly, if we haven't seen an opening brace yet, but we - # already saw a closing parenthesis, then these are probably - # function arguments with extra "class" or "struct" keywords. - # Also pop these stack for these. - if not self.SeenOpenBrace(): - self.stack.pop() - else: # token == '}' - # Perform end of block checks and pop the stack. - if self.stack: - self.stack[-1].CheckEnd(filename, clean_lines, linenum, error) - self.stack.pop() - line = matched.group(2) - - def InnermostClass(self): - """Get class info on the top of the stack. - - Returns: - A _ClassInfo object if we are inside a class, or None otherwise. - """ - for i in range(len(self.stack), 0, -1): - classinfo = self.stack[i - 1] - if isinstance(classinfo, _ClassInfo): - return classinfo - return None - - def CheckCompletedBlocks(self, filename, error): - """Checks that all classes and namespaces have been completely parsed. - - Call this when all lines in a file have been processed. - Args: - filename: The name of the current file. - error: The function to call with any errors found. - """ - # Note: This test can result in false positives if #ifdef constructs - # get in the way of brace matching. See the testBuildClass test in - # cpplint_unittest.py for an example of this. - for obj in self.stack: - if isinstance(obj, _ClassInfo): - error(filename, obj.starting_linenum, 'build/class', 5, - 'Failed to find complete declaration of class %s' % - obj.name) - elif isinstance(obj, _NamespaceInfo): - error(filename, obj.starting_linenum, 'build/namespaces', 5, - 'Failed to find complete declaration of namespace %s' % - obj.name) - - -def CheckForNonStandardConstructs(filename, clean_lines, linenum, - nesting_state, error): - r"""Logs an error if we see certain non-ANSI constructs ignored by gcc-2. - - Complain about several constructs which gcc-2 accepts, but which are - not standard C++. Warning about these in lint is one way to ease the - transition to new compilers. - - put storage class first (e.g. "static const" instead of "const static"). - - "%lld" instead of %qd" in printf-type functions. - - "%1$d" is non-standard in printf-type functions. - - "\%" is an undefined character escape sequence. - - text after #endif is not allowed. - - invalid inner-style forward declaration. - - >? and ?= and )\?=?\s*(\w+|[+-]?\d+)(\.\d*)?', - line): - error(filename, linenum, 'build/deprecated', 3, - '>? and ))?' - # r'\s*const\s*' + type_name + '\s*&\s*\w+\s*;' - error(filename, linenum, 'runtime/member_string_references', 2, - 'const string& members are dangerous. It is much better to use ' - 'alternatives, such as pointers or simple constants.') - - # Everything else in this function operates on class declarations. - # Return early if the top of the nesting stack is not a class, or if - # the class head is not completed yet. - classinfo = nesting_state.InnermostClass() - if not classinfo or not classinfo.seen_open_brace: - return - - # The class may have been declared with namespace or classname qualifiers. - # The constructor and destructor will not have those qualifiers. - base_classname = classinfo.name.split('::')[-1] - - # Look for single-argument constructors that aren't marked explicit. - # Technically a valid construct, but against style. - explicit_constructor_match = Match( - r'\s+(?:(?:inline|constexpr)\s+)*(explicit\s+)?' - r'(?:(?:inline|constexpr)\s+)*%s\s*' - r'\(((?:[^()]|\([^()]*\))*)\)' - % re.escape(base_classname), - line) - - if explicit_constructor_match: - is_marked_explicit = explicit_constructor_match.group(1) - - if not explicit_constructor_match.group(2): - constructor_args = [] - else: - constructor_args = explicit_constructor_match.group(2).split(',') - - # collapse arguments so that commas in template parameter lists and function - # argument parameter lists don't split arguments in two - i = 0 - while i < len(constructor_args): - constructor_arg = constructor_args[i] - while (constructor_arg.count('<') > constructor_arg.count('>') or - constructor_arg.count('(') > constructor_arg.count(')')): - constructor_arg += ',' + constructor_args[i + 1] - del constructor_args[i + 1] - constructor_args[i] = constructor_arg - i += 1 - - defaulted_args = [arg for arg in constructor_args if '=' in arg] - noarg_constructor = (not constructor_args or # empty arg list - # 'void' arg specifier - (len(constructor_args) == 1 and - constructor_args[0].strip() == 'void')) - onearg_constructor = ((len(constructor_args) == 1 and # exactly one arg - not noarg_constructor) or - # all but at most one arg defaulted - (len(constructor_args) >= 1 and - not noarg_constructor and - len(defaulted_args) >= len(constructor_args) - 1)) - initializer_list_constructor = bool( - onearg_constructor and - Search(r'\bstd\s*::\s*initializer_list\b', constructor_args[0])) - copy_constructor = bool( - onearg_constructor and - Match(r'(const\s+)?%s(\s*<[^>]*>)?(\s+const)?\s*(?:<\w+>\s*)?&' - % re.escape(base_classname), constructor_args[0].strip())) - - if (not is_marked_explicit and - onearg_constructor and - not initializer_list_constructor and - not copy_constructor): - if defaulted_args: - error(filename, linenum, 'runtime/explicit', 5, - 'Constructors callable with one argument ' - 'should be marked explicit.') - else: - error(filename, linenum, 'runtime/explicit', 5, - 'Single-parameter constructors should be marked explicit.') - elif is_marked_explicit and not onearg_constructor: - if noarg_constructor: - error(filename, linenum, 'runtime/explicit', 5, - 'Zero-parameter constructors should not be marked explicit.') - - -def CheckSpacingForFunctionCall(filename, clean_lines, linenum, error): - """Checks for the correctness of various spacing around function calls. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Since function calls often occur inside if/for/while/switch - # expressions - which have their own, more liberal conventions - we - # first see if we should be looking inside such an expression for a - # function call, to which we can apply more strict standards. - fncall = line # if there's no control flow construct, look at whole line - for pattern in (r'\bif\s*\((.*)\)\s*{', - r'\bfor\s*\((.*)\)\s*{', - r'\bwhile\s*\((.*)\)\s*[{;]', - r'\bswitch\s*\((.*)\)\s*{'): - match = Search(pattern, line) - if match: - fncall = match.group(1) # look inside the parens for function calls - break - - # Except in if/for/while/switch, there should never be space - # immediately inside parens (eg "f( 3, 4 )"). We make an exception - # for nested parens ( (a+b) + c ). Likewise, there should never be - # a space before a ( when it's a function argument. I assume it's a - # function argument when the char before the whitespace is legal in - # a function name (alnum + _) and we're not starting a macro. Also ignore - # pointers and references to arrays and functions coz they're too tricky: - # we use a very simple way to recognize these: - # " (something)(maybe-something)" or - # " (something)(maybe-something," or - # " (something)[something]" - # Note that we assume the contents of [] to be short enough that - # they'll never need to wrap. - if ( # Ignore control structures. - not Search(r'\b(if|for|while|switch|return|new|delete|catch|sizeof)\b', - fncall) and - # Ignore pointers/references to functions. - not Search(r' \([^)]+\)\([^)]*(\)|,$)', fncall) and - # Ignore pointers/references to arrays. - not Search(r' \([^)]+\)\[[^\]]+\]', fncall)): - if Search(r'\w\s*\(\s(?!\s*\\$)', fncall): # a ( used for a fn call - error(filename, linenum, 'whitespace/parens', 4, - 'Extra space after ( in function call') - elif Search(r'\(\s+(?!(\s*\\)|\()', fncall): - error(filename, linenum, 'whitespace/parens', 2, - 'Extra space after (') - if (Search(r'\w\s+\(', fncall) and - not Search(r'_{0,2}asm_{0,2}\s+_{0,2}volatile_{0,2}\s+\(', fncall) and - not Search(r'#\s*define|typedef|using\s+\w+\s*=', fncall) and - not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall) and - not Search(r'\bcase\s+\(', fncall)): - # TODO(unknown): Space after an operator function seem to be a common - # error, silence those for now by restricting them to highest verbosity. - if Search(r'\boperator_*\b', line): - error(filename, linenum, 'whitespace/parens', 0, - 'Extra space before ( in function call') - else: - error(filename, linenum, 'whitespace/parens', 4, - 'Extra space before ( in function call') - # If the ) is followed only by a newline or a { + newline, assume it's - # part of a control statement (if/while/etc), and don't complain - if Search(r'[^)]\s+\)\s*[^{\s]', fncall): - # If the closing parenthesis is preceded by only whitespaces, - # try to give a more descriptive error message. - if Search(r'^\s+\)', fncall): - error(filename, linenum, 'whitespace/parens', 2, - 'Closing ) should be moved to the previous line') - else: - error(filename, linenum, 'whitespace/parens', 2, - 'Extra space before )') - - -def IsBlankLine(line): - """Returns true if the given line is blank. - - We consider a line to be blank if the line is empty or consists of - only white spaces. - - Args: - line: A line of a string. - - Returns: - True, if the given line is blank. - """ - return not line or line.isspace() - - -def CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, - error): - is_namespace_indent_item = ( - len(nesting_state.stack) > 1 and - nesting_state.stack[-1].check_namespace_indentation and - isinstance(nesting_state.previous_stack_top, _NamespaceInfo) and - nesting_state.previous_stack_top == nesting_state.stack[-2]) - - if ShouldCheckNamespaceIndentation(nesting_state, is_namespace_indent_item, - clean_lines.elided, line): - CheckItemIndentationInNamespace(filename, clean_lines.elided, - line, error) - - -def CheckForFunctionLengths(filename, clean_lines, linenum, - function_state, error): - """Reports for long function bodies. - - For an overview why this is done, see: - https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions - - Uses a simplistic algorithm assuming other style guidelines - (especially spacing) are followed. - Only checks unindented functions, so class members are unchecked. - Trivial bodies are unchecked, so constructors with huge initializer lists - may be missed. - Blank/comment lines are not counted so as to avoid encouraging the removal - of vertical space and comments just to get through a lint check. - NOLINT *on the last line of a function* disables this check. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - function_state: Current function name and lines in body so far. - error: The function to call with any errors found. - """ - lines = clean_lines.lines - line = lines[linenum] - joined_line = '' - - starting_func = False - regexp = r'(\w(\w|::|\*|\&|\s)*)\(' # decls * & space::name( ... - match_result = Match(regexp, line) - if match_result: - # If the name is all caps and underscores, figure it's a macro and - # ignore it, unless it's TEST or TEST_F. - function_name = match_result.group(1).split()[-1] - if function_name == 'TEST' or function_name == 'TEST_F' or ( - not Match(r'[A-Z_]+$', function_name)): - starting_func = True - - if starting_func: - body_found = False - for start_linenum in xrange(linenum, clean_lines.NumLines()): - start_line = lines[start_linenum] - joined_line += ' ' + start_line.lstrip() - if Search(r'(;|})', start_line): # Declarations and trivial functions - body_found = True - break # ... ignore - elif Search(r'{', start_line): - body_found = True - function = Search(r'((\w|:)*)\(', line).group(1) - if Match(r'TEST', function): # Handle TEST... macros - parameter_regexp = Search(r'(\(.*\))', joined_line) - if parameter_regexp: # Ignore bad syntax - function += parameter_regexp.group(1) - else: - function += '()' - function_state.Begin(function) - break - if not body_found: - # No body for the function (or evidence of a non-function) was found. - error(filename, linenum, 'readability/fn_size', 5, - 'Lint failed to find start of function body.') - elif Match(r'^\}\s*$', line): # function end - function_state.Check(error, filename, linenum) - function_state.End() - elif not Match(r'^\s*$', line): - function_state.Count() # Count non-blank/non-comment lines. - - -_RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?') - - -def CheckComment(line, filename, linenum, next_line_start, error): - """Checks for common mistakes in comments. - - Args: - line: The line in question. - filename: The name of the current file. - linenum: The number of the line to check. - next_line_start: The first non-whitespace column of the next line. - error: The function to call with any errors found. - """ - commentpos = line.find('//') - if commentpos != -1: - # Check if the // may be in quotes. If so, ignore it - if re.sub(r'\\.', '', line[0:commentpos]).count('"') % 2 == 0: - # Allow one space for new scopes, two spaces otherwise: - if (not (Match(r'^.*{ *//', line) and next_line_start == commentpos) and - ((commentpos >= 1 and - line[commentpos-1] not in string.whitespace) or - (commentpos >= 2 and - line[commentpos-2] not in string.whitespace))): - error(filename, linenum, 'whitespace/comments', 2, - 'At least two spaces is best between code and comments') - - # Checks for common mistakes in TODO comments. - comment = line[commentpos:] - match = _RE_PATTERN_TODO.match(comment) - if match: - # One whitespace is correct; zero whitespace is handled elsewhere. - leading_whitespace = match.group(1) - if len(leading_whitespace) > 1: - error(filename, linenum, 'whitespace/todo', 2, - 'Too many spaces before TODO') - - username = match.group(2) - if not username: - error(filename, linenum, 'readability/todo', 2, - 'Missing username in TODO; it should look like ' - '"// TODO(my_username): Stuff."') - - middle_whitespace = match.group(3) - # Comparisons made explicit for correctness -- pylint: disable=g-explicit-bool-comparison - if middle_whitespace != ' ' and middle_whitespace != '': - error(filename, linenum, 'whitespace/todo', 2, - 'TODO(my_username) should be followed by a space') - - # If the comment contains an alphanumeric character, there - # should be a space somewhere between it and the // unless - # it's a /// or //! Doxygen comment. - if (Match(r'//[^ ]*\w', comment) and - not Match(r'(///|//\!)(\s+|$)', comment)): - error(filename, linenum, 'whitespace/comments', 4, - 'Should have a space between // and comment') - - -def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): - """Checks for the correctness of various spacing issues in the code. - - Things we check for: spaces around operators, spaces after - if/for/while/switch, no spaces around parens in function calls, two - spaces between code and comment, don't start a block with a blank - line, don't end a function with a blank line, don't add a blank line - after public/protected/private, don't have too many blank lines in a row. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - - # Don't use "elided" lines here, otherwise we can't check commented lines. - # Don't want to use "raw" either, because we don't want to check inside C++11 - # raw strings, - raw = clean_lines.lines_without_raw_strings - line = raw[linenum] - - # Before nixing comments, check if the line is blank for no good - # reason. This includes the first line after a block is opened, and - # blank lines at the end of a function (ie, right before a line like '}' - # - # Skip all the blank line checks if we are immediately inside a - # namespace body. In other words, don't issue blank line warnings - # for this block: - # namespace { - # - # } - # - # A warning about missing end of namespace comments will be issued instead. - # - # Also skip blank line checks for 'extern "C"' blocks, which are formatted - # like namespaces. - if (IsBlankLine(line) and - not nesting_state.InNamespaceBody() and - not nesting_state.InExternC()): - elided = clean_lines.elided - prev_line = elided[linenum - 1] - prevbrace = prev_line.rfind('{') - # TODO(unknown): Don't complain if line before blank line, and line after, - # both start with alnums and are indented the same amount. - # This ignores whitespace at the start of a namespace block - # because those are not usually indented. - if prevbrace != -1 and prev_line[prevbrace:].find('}') == -1: - # OK, we have a blank line at the start of a code block. Before we - # complain, we check if it is an exception to the rule: The previous - # non-empty line has the parameters of a function header that are indented - # 4 spaces (because they did not fit in a 80 column line when placed on - # the same line as the function name). We also check for the case where - # the previous line is indented 6 spaces, which may happen when the - # initializers of a constructor do not fit into a 80 column line. - exception = False - if Match(r' {6}\w', prev_line): # Initializer list? - # We are looking for the opening column of initializer list, which - # should be indented 4 spaces to cause 6 space indentation afterwards. - search_position = linenum-2 - while (search_position >= 0 - and Match(r' {6}\w', elided[search_position])): - search_position -= 1 - exception = (search_position >= 0 - and elided[search_position][:5] == ' :') - else: - # Search for the function arguments or an initializer list. We use a - # simple heuristic here: If the line is indented 4 spaces; and we have a - # closing paren, without the opening paren, followed by an opening brace - # or colon (for initializer lists) we assume that it is the last line of - # a function header. If we have a colon indented 4 spaces, it is an - # initializer list. - exception = (Match(r' {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)', - prev_line) - or Match(r' {4}:', prev_line)) - - if not exception: - error(filename, linenum, 'whitespace/blank_line', 2, - 'Redundant blank line at the start of a code block ' - 'should be deleted.') - # Ignore blank lines at the end of a block in a long if-else - # chain, like this: - # if (condition1) { - # // Something followed by a blank line - # - # } else if (condition2) { - # // Something else - # } - if linenum + 1 < clean_lines.NumLines(): - next_line = raw[linenum + 1] - if (next_line - and Match(r'\s*}', next_line) - and next_line.find('} else ') == -1): - error(filename, linenum, 'whitespace/blank_line', 3, - 'Redundant blank line at the end of a code block ' - 'should be deleted.') - - matched = Match(r'\s*(public|protected|private):', prev_line) - if matched: - error(filename, linenum, 'whitespace/blank_line', 3, - 'Do not leave a blank line after "%s:"' % matched.group(1)) - - # Next, check comments - next_line_start = 0 - if linenum + 1 < clean_lines.NumLines(): - next_line = raw[linenum + 1] - next_line_start = len(next_line) - len(next_line.lstrip()) - CheckComment(line, filename, linenum, next_line_start, error) - - # get rid of comments and strings - line = clean_lines.elided[linenum] - - # You shouldn't have spaces before your brackets, except maybe after - # 'delete []' or 'return []() {};' - if Search(r'\w\s+\[', line) and not Search(r'(?:delete|return)\s+\[', line): - error(filename, linenum, 'whitespace/braces', 5, - 'Extra space before [') - - # In range-based for, we wanted spaces before and after the colon, but - # not around "::" tokens that might appear. - if (Search(r'for *\(.*[^:]:[^: ]', line) or - Search(r'for *\(.*[^: ]:[^:]', line)): - error(filename, linenum, 'whitespace/forcolon', 2, - 'Missing space around colon in range-based for loop') - - -def CheckOperatorSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing around operators. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Don't try to do spacing checks for operator methods. Do this by - # replacing the troublesome characters with something else, - # preserving column position for all other characters. - # - # The replacement is done repeatedly to avoid false positives from - # operators that call operators. - while True: - match = Match(r'^(.*\boperator\b)(\S+)(\s*\(.*)$', line) - if match: - line = match.group(1) + ('_' * len(match.group(2))) + match.group(3) - else: - break - - # We allow no-spaces around = within an if: "if ( (a=Foo()) == 0 )". - # Otherwise not. Note we only check for non-spaces on *both* sides; - # sometimes people put non-spaces on one side when aligning ='s among - # many lines (not that this is behavior that I approve of...) - if ((Search(r'[\w.]=', line) or - Search(r'=[\w.]', line)) - and not Search(r'\b(if|while|for) ', line) - # Operators taken from [lex.operators] in C++11 standard. - and not Search(r'(>=|<=|==|!=|&=|\^=|\|=|\+=|\*=|\/=|\%=)', line) - and not Search(r'operator=', line)): - error(filename, linenum, 'whitespace/operators', 4, - 'Missing spaces around =') - - # It's ok not to have spaces around binary operators like + - * /, but if - # there's too little whitespace, we get concerned. It's hard to tell, - # though, so we punt on this one for now. TODO. - - # You should always have whitespace around binary operators. - # - # Check <= and >= first to avoid false positives with < and >, then - # check non-include lines for spacing around < and >. - # - # If the operator is followed by a comma, assume it's be used in a - # macro context and don't do any checks. This avoids false - # positives. - # - # Note that && is not included here. This is because there are too - # many false positives due to RValue references. - match = Search(r'[^<>=!\s](==|!=|<=|>=|\|\|)[^<>=!\s,;\)]', line) - if match: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around %s' % match.group(1)) - elif not Match(r'#.*include', line): - # Look for < that is not surrounded by spaces. This is only - # triggered if both sides are missing spaces, even though - # technically should should flag if at least one side is missing a - # space. This is done to avoid some false positives with shifts. - match = Match(r'^(.*[^\s<])<[^\s=<,]', line) - if match: - (_, _, end_pos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - if end_pos <= -1: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around <') - - # Look for > that is not surrounded by spaces. Similar to the - # above, we only trigger if both sides are missing spaces to avoid - # false positives with shifts. - match = Match(r'^(.*[^-\s>])>[^\s=>,]', line) - if match: - (_, _, start_pos) = ReverseCloseExpression( - clean_lines, linenum, len(match.group(1))) - if start_pos <= -1: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around >') - - # We allow no-spaces around << when used like this: 10<<20, but - # not otherwise (particularly, not when used as streams) - # - # We also allow operators following an opening parenthesis, since - # those tend to be macros that deal with operators. - match = Search(r'(operator|[^\s(<])(?:L|UL|LL|ULL|l|ul|ll|ull)?<<([^\s,=<])', line) - if (match and not (match.group(1).isdigit() and match.group(2).isdigit()) and - not (match.group(1) == 'operator' and match.group(2) == ';')): - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around <<') - - # We allow no-spaces around >> for almost anything. This is because - # C++11 allows ">>" to close nested templates, which accounts for - # most cases when ">>" is not followed by a space. - # - # We still warn on ">>" followed by alpha character, because that is - # likely due to ">>" being used for right shifts, e.g.: - # value >> alpha - # - # When ">>" is used to close templates, the alphanumeric letter that - # follows would be part of an identifier, and there should still be - # a space separating the template type and the identifier. - # type> alpha - match = Search(r'>>[a-zA-Z_]', line) - if match: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around >>') - - # There shouldn't be space around unary operators - match = Search(r'(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])', line) - if match: - error(filename, linenum, 'whitespace/operators', 4, - 'Extra space for operator %s' % match.group(1)) - - -def CheckParenthesisSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing around parentheses. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # No spaces after an if, while, switch, or for - match = Search(r' (if\(|for\(|while\(|switch\()', line) - if match: - error(filename, linenum, 'whitespace/parens', 5, - 'Missing space before ( in %s' % match.group(1)) - - # For if/for/while/switch, the left and right parens should be - # consistent about how many spaces are inside the parens, and - # there should either be zero or one spaces inside the parens. - # We don't want: "if ( foo)" or "if ( foo )". - # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed. - match = Search(r'\b(if|for|while|switch)\s*' - r'\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$', - line) - if match: - if len(match.group(2)) != len(match.group(4)): - if not (match.group(3) == ';' and - len(match.group(2)) == 1 + len(match.group(4)) or - not match.group(2) and Search(r'\bfor\s*\(.*; \)', line)): - error(filename, linenum, 'whitespace/parens', 5, - 'Mismatching spaces inside () in %s' % match.group(1)) - if len(match.group(2)) not in [0, 1]: - error(filename, linenum, 'whitespace/parens', 5, - 'Should have zero or one spaces inside ( and ) in %s' % - match.group(1)) - - -def CheckCommaSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing near commas and semicolons. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - raw = clean_lines.lines_without_raw_strings - line = clean_lines.elided[linenum] - - # You should always have a space after a comma (either as fn arg or operator) - # - # This does not apply when the non-space character following the - # comma is another comma, since the only time when that happens is - # for empty macro arguments. - # - # We run this check in two passes: first pass on elided lines to - # verify that lines contain missing whitespaces, second pass on raw - # lines to confirm that those missing whitespaces are not due to - # elided comments. - if (Search(r',[^,\s]', ReplaceAll(r'\boperator\s*,\s*\(', 'F(', line)) and - Search(r',[^,\s]', raw[linenum])): - error(filename, linenum, 'whitespace/comma', 3, - 'Missing space after ,') - - # You should always have a space after a semicolon - # except for few corner cases - # TODO(unknown): clarify if 'if (1) { return 1;}' is requires one more - # space after ; - if Search(r';[^\s};\\)/]', line): - error(filename, linenum, 'whitespace/semicolon', 3, - 'Missing space after ;') - - -def _IsType(clean_lines, nesting_state, expr): - """Check if expression looks like a type name, returns true if so. - - Args: - clean_lines: A CleansedLines instance containing the file. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - expr: The expression to check. - Returns: - True, if token looks like a type. - """ - # Keep only the last token in the expression - last_word = Match(r'^.*(\b\S+)$', expr) - if last_word: - token = last_word.group(1) - else: - token = expr - - # Match native types and stdint types - if _TYPES.match(token): - return True - - # Try a bit harder to match templated types. Walk up the nesting - # stack until we find something that resembles a typename - # declaration for what we are looking for. - typename_pattern = (r'\b(?:typename|class|struct)\s+' + re.escape(token) + - r'\b') - block_index = len(nesting_state.stack) - 1 - while block_index >= 0: - if isinstance(nesting_state.stack[block_index], _NamespaceInfo): - return False - - # Found where the opening brace is. We want to scan from this - # line up to the beginning of the function, minus a few lines. - # template - # class C - # : public ... { // start scanning here - last_line = nesting_state.stack[block_index].starting_linenum - - next_block_start = 0 - if block_index > 0: - next_block_start = nesting_state.stack[block_index - 1].starting_linenum - first_line = last_line - while first_line >= next_block_start: - if clean_lines.elided[first_line].find('template') >= 0: - break - first_line -= 1 - if first_line < next_block_start: - # Didn't find any "template" keyword before reaching the next block, - # there are probably no template things to check for this block - block_index -= 1 - continue - - # Look for typename in the specified range - for i in xrange(first_line, last_line + 1, 1): - if Search(typename_pattern, clean_lines.elided[i]): - return True - block_index -= 1 - - return False - - -def CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error): - """Checks for horizontal spacing near commas. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Except after an opening paren, or after another opening brace (in case of - # an initializer list, for instance), you should have spaces before your - # braces when they are delimiting blocks, classes, namespaces etc. - # And since you should never have braces at the beginning of a line, - # this is an easy test. Except that braces used for initialization don't - # follow the same rule; we often don't want spaces before those. - match = Match(r'^(.*[^ ({>]){', line) - - if match: - # Try a bit harder to check for brace initialization. This - # happens in one of the following forms: - # Constructor() : initializer_list_{} { ... } - # Constructor{}.MemberFunction() - # Type variable{}; - # FunctionCall(type{}, ...); - # LastArgument(..., type{}); - # LOG(INFO) << type{} << " ..."; - # map_of_type[{...}] = ...; - # ternary = expr ? new type{} : nullptr; - # OuterTemplate{}> - # - # We check for the character following the closing brace, and - # silence the warning if it's one of those listed above, i.e. - # "{.;,)<>]:". - # - # To account for nested initializer list, we allow any number of - # closing braces up to "{;,)<". We can't simply silence the - # warning on first sight of closing brace, because that would - # cause false negatives for things that are not initializer lists. - # Silence this: But not this: - # Outer{ if (...) { - # Inner{...} if (...){ // Missing space before { - # }; } - # - # There is a false negative with this approach if people inserted - # spurious semicolons, e.g. "if (cond){};", but we will catch the - # spurious semicolon with a separate check. - leading_text = match.group(1) - (endline, endlinenum, endpos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - trailing_text = '' - if endpos > -1: - trailing_text = endline[endpos:] - for offset in xrange(endlinenum + 1, - min(endlinenum + 3, clean_lines.NumLines() - 1)): - trailing_text += clean_lines.elided[offset] - # We also suppress warnings for `uint64_t{expression}` etc., as the style - # guide recommends brace initialization for integral types to avoid - # overflow/truncation. - if (not Match(r'^[\s}]*[{.;,)<>\]:]', trailing_text) - and not _IsType(clean_lines, nesting_state, leading_text)): - error(filename, linenum, 'whitespace/braces', 5, - 'Missing space before {') - - # Make sure '} else {' has spaces. - if Search(r'}else', line): - error(filename, linenum, 'whitespace/braces', 5, - 'Missing space before else') - - # You shouldn't have a space before a semicolon at the end of the line. - # There's a special case for "for" since the style guide allows space before - # the semicolon there. - if Search(r':\s*;\s*$', line): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Semicolon defining empty statement. Use {} instead.') - elif Search(r'^\s*;\s*$', line): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Line contains only semicolon. If this should be an empty statement, ' - 'use {} instead.') - elif (Search(r'\s+;\s*$', line) and - not Search(r'\bfor\b', line)): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Extra space before last semicolon. If this should be an empty ' - 'statement, use {} instead.') - - -def IsDecltype(clean_lines, linenum, column): - """Check if the token ending on (linenum, column) is decltype(). - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: the number of the line to check. - column: end column of the token to check. - Returns: - True if this token is decltype() expression, False otherwise. - """ - (text, _, start_col) = ReverseCloseExpression(clean_lines, linenum, column) - if start_col < 0: - return False - if Search(r'\bdecltype\s*$', text[0:start_col]): - return True - return False - - -def CheckSectionSpacing(filename, clean_lines, class_info, linenum, error): - """Checks for additional blank line issues related to sections. - - Currently the only thing checked here is blank line before protected/private. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - class_info: A _ClassInfo objects. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Skip checks if the class is small, where small means 25 lines or less. - # 25 lines seems like a good cutoff since that's the usual height of - # terminals, and any class that can't fit in one screen can't really - # be considered "small". - # - # Also skip checks if we are on the first line. This accounts for - # classes that look like - # class Foo { public: ... }; - # - # If we didn't find the end of the class, last_line would be zero, - # and the check will be skipped by the first condition. - if (class_info.last_line - class_info.starting_linenum <= 24 or - linenum <= class_info.starting_linenum): - return - - matched = Match(r'\s*(public|protected|private):', clean_lines.lines[linenum]) - if matched: - # Issue warning if the line before public/protected/private was - # not a blank line, but don't do this if the previous line contains - # "class" or "struct". This can happen two ways: - # - We are at the beginning of the class. - # - We are forward-declaring an inner class that is semantically - # private, but needed to be public for implementation reasons. - # Also ignores cases where the previous line ends with a backslash as can be - # common when defining classes in C macros. - prev_line = clean_lines.lines[linenum - 1] - if (not IsBlankLine(prev_line) and - not Search(r'\b(class|struct)\b', prev_line) and - not Search(r'\\$', prev_line)): - # Try a bit harder to find the beginning of the class. This is to - # account for multi-line base-specifier lists, e.g.: - # class Derived - # : public Base { - end_class_head = class_info.starting_linenum - for i in range(class_info.starting_linenum, linenum): - if Search(r'\{\s*$', clean_lines.lines[i]): - end_class_head = i - break - if end_class_head < linenum - 1: - error(filename, linenum, 'whitespace/blank_line', 3, - '"%s:" should be preceded by a blank line' % matched.group(1)) - - -def GetPreviousNonBlankLine(clean_lines, linenum): - """Return the most recent non-blank line and its line number. - - Args: - clean_lines: A CleansedLines instance containing the file contents. - linenum: The number of the line to check. - - Returns: - A tuple with two elements. The first element is the contents of the last - non-blank line before the current line, or the empty string if this is the - first non-blank line. The second is the line number of that line, or -1 - if this is the first non-blank line. - """ - - prevlinenum = linenum - 1 - while prevlinenum >= 0: - prevline = clean_lines.elided[prevlinenum] - if not IsBlankLine(prevline): # if not a blank line... - return (prevline, prevlinenum) - prevlinenum -= 1 - return ('', -1) - - -def CheckBraces(filename, clean_lines, linenum, error): - """Looks for misplaced braces (e.g. at the end of line). - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - line = clean_lines.elided[linenum] # get rid of comments and strings - - if Match(r'\s*{\s*$', line): - # We allow an open brace to start a line in the case where someone is using - # braces in a block to explicitly create a new scope, which is commonly used - # to control the lifetime of stack-allocated variables. Braces are also - # used for brace initializers inside function calls. We don't detect this - # perfectly: we just don't complain if the last non-whitespace character on - # the previous non-blank line is ',', ';', ':', '(', '{', or '}', or if the - # previous line starts a preprocessor block. We also allow a brace on the - # following line if it is part of an array initialization and would not fit - # within the 80 character limit of the preceding line. - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if (not Search(r'[,;:}{(]\s*$', prevline) and - not Match(r'\s*#', prevline) and - not (GetLineWidth(prevline) > _line_length - 2 and '[]' in prevline)): - error(filename, linenum, 'whitespace/braces', 4, - '{ should almost always be at the end of the previous line') - - # An else clause should be on the same line as the preceding closing brace. - if Match(r'\s*else\b\s*(?:if\b|\{|$)', line): - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if Match(r'\s*}\s*$', prevline): - error(filename, linenum, 'whitespace/newline', 4, - 'An else should appear on the same line as the preceding }') - - # If braces come on one side of an else, they should be on both. - # However, we have to worry about "else if" that spans multiple lines! - if Search(r'else if\s*\(', line): # could be multi-line if - brace_on_left = bool(Search(r'}\s*else if\s*\(', line)) - # find the ( after the if - pos = line.find('else if') - pos = line.find('(', pos) - if pos > 0: - (endline, _, endpos) = CloseExpression(clean_lines, linenum, pos) - brace_on_right = endline[endpos:].find('{') != -1 - if brace_on_left != brace_on_right: # must be brace after if - error(filename, linenum, 'readability/braces', 5, - 'If an else has a brace on one side, it should have it on both') - elif Search(r'}\s*else[^{]*$', line) or Match(r'[^}]*else\s*{', line): - error(filename, linenum, 'readability/braces', 5, - 'If an else has a brace on one side, it should have it on both') - - # Likewise, an else should never have the else clause on the same line - if Search(r'\belse [^\s{]', line) and not Search(r'\belse if\b', line): - error(filename, linenum, 'whitespace/newline', 4, - 'Else clause should never be on same line as else (use 2 lines)') - - # In the same way, a do/while should never be on one line - if Match(r'\s*do [^\s{]', line): - error(filename, linenum, 'whitespace/newline', 4, - 'do/while clauses should not be on a single line') - - # Check single-line if/else bodies. The style guide says 'curly braces are not - # required for single-line statements'. We additionally allow multi-line, - # single statements, but we reject anything with more than one semicolon in - # it. This means that the first semicolon after the if should be at the end of - # its line, and the line after that should have an indent level equal to or - # lower than the if. We also check for ambiguous if/else nesting without - # braces. - if_else_match = Search(r'\b(if\s*\(|else\b)', line) - if if_else_match and not Match(r'\s*#', line): - if_indent = GetIndentLevel(line) - endline, endlinenum, endpos = line, linenum, if_else_match.end() - if_match = Search(r'\bif\s*\(', line) - if if_match: - # This could be a multiline if condition, so find the end first. - pos = if_match.end() - 1 - (endline, endlinenum, endpos) = CloseExpression(clean_lines, linenum, pos) - # Check for an opening brace, either directly after the if or on the next - # line. If found, this isn't a single-statement conditional. - if (not Match(r'\s*{', endline[endpos:]) - and not (Match(r'\s*$', endline[endpos:]) - and endlinenum < (len(clean_lines.elided) - 1) - and Match(r'\s*{', clean_lines.elided[endlinenum + 1]))): - while (endlinenum < len(clean_lines.elided) - and ';' not in clean_lines.elided[endlinenum][endpos:]): - endlinenum += 1 - endpos = 0 - if endlinenum < len(clean_lines.elided): - endline = clean_lines.elided[endlinenum] - # We allow a mix of whitespace and closing braces (e.g. for one-liner - # methods) and a single \ after the semicolon (for macros) - endpos = endline.find(';') - if not Match(r';[\s}]*(\\?)$', endline[endpos:]): - # Semicolon isn't the last character, there's something trailing. - # Output a warning if the semicolon is not contained inside - # a lambda expression. - if not Match(r'^[^{};]*\[[^\[\]]*\][^{}]*\{[^{}]*\}\s*\)*[;,]\s*$', - endline): - error(filename, linenum, 'readability/braces', 4, - 'If/else bodies with multiple statements require braces') - elif endlinenum < len(clean_lines.elided) - 1: - # Make sure the next line is dedented - next_line = clean_lines.elided[endlinenum + 1] - next_indent = GetIndentLevel(next_line) - # With ambiguous nested if statements, this will error out on the - # if that *doesn't* match the else, regardless of whether it's the - # inner one or outer one. - if (if_match and Match(r'\s*else\b', next_line) - and next_indent != if_indent): - error(filename, linenum, 'readability/braces', 4, - 'Else clause should be indented at the same level as if. ' - 'Ambiguous nested if/else chains require braces.') - elif next_indent > if_indent: - error(filename, linenum, 'readability/braces', 4, - 'If/else bodies with multiple statements require braces') - - -def CheckTrailingSemicolon(filename, clean_lines, linenum, error): - """Looks for redundant trailing semicolon. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - line = clean_lines.elided[linenum] - - # Block bodies should not be followed by a semicolon. Due to C++11 - # brace initialization, there are more places where semicolons are - # required than not, so we use a whitelist approach to check these - # rather than a blacklist. These are the places where "};" should - # be replaced by just "}": - # 1. Some flavor of block following closing parenthesis: - # for (;;) {}; - # while (...) {}; - # switch (...) {}; - # Function(...) {}; - # if (...) {}; - # if (...) else if (...) {}; - # - # 2. else block: - # if (...) else {}; - # - # 3. const member function: - # Function(...) const {}; - # - # 4. Block following some statement: - # x = 42; - # {}; - # - # 5. Block at the beginning of a function: - # Function(...) { - # {}; - # } - # - # Note that naively checking for the preceding "{" will also match - # braces inside multi-dimensional arrays, but this is fine since - # that expression will not contain semicolons. - # - # 6. Block following another block: - # while (true) {} - # {}; - # - # 7. End of namespaces: - # namespace {}; - # - # These semicolons seems far more common than other kinds of - # redundant semicolons, possibly due to people converting classes - # to namespaces. For now we do not warn for this case. - # - # Try matching case 1 first. - match = Match(r'^(.*\)\s*)\{', line) - if match: - # Matched closing parenthesis (case 1). Check the token before the - # matching opening parenthesis, and don't warn if it looks like a - # macro. This avoids these false positives: - # - macro that defines a base class - # - multi-line macro that defines a base class - # - macro that defines the whole class-head - # - # But we still issue warnings for macros that we know are safe to - # warn, specifically: - # - TEST, TEST_F, TEST_P, MATCHER, MATCHER_P - # - TYPED_TEST - # - INTERFACE_DEF - # - EXCLUSIVE_LOCKS_REQUIRED, SHARED_LOCKS_REQUIRED, LOCKS_EXCLUDED: - # - # We implement a whitelist of safe macros instead of a blacklist of - # unsafe macros, even though the latter appears less frequently in - # google code and would have been easier to implement. This is because - # the downside for getting the whitelist wrong means some extra - # semicolons, while the downside for getting the blacklist wrong - # would result in compile errors. - # - # In addition to macros, we also don't want to warn on - # - Compound literals - # - Lambdas - # - alignas specifier with anonymous structs - # - decltype - closing_brace_pos = match.group(1).rfind(')') - opening_parenthesis = ReverseCloseExpression( - clean_lines, linenum, closing_brace_pos) - if opening_parenthesis[2] > -1: - line_prefix = opening_parenthesis[0][0:opening_parenthesis[2]] - macro = Search(r'\b([A-Z_][A-Z0-9_]*)\s*$', line_prefix) - func = Match(r'^(.*\])\s*$', line_prefix) - if ((macro and - macro.group(1) not in ( - 'TEST', 'TEST_F', 'MATCHER', 'MATCHER_P', 'TYPED_TEST', - 'EXCLUSIVE_LOCKS_REQUIRED', 'SHARED_LOCKS_REQUIRED', - 'LOCKS_EXCLUDED', 'INTERFACE_DEF')) or - (func and not Search(r'\boperator\s*\[\s*\]', func.group(1))) or - Search(r'\b(?:struct|union)\s+alignas\s*$', line_prefix) or - Search(r'\bdecltype$', line_prefix) or - Search(r'\s+=\s*$', line_prefix)): - match = None - if (match and - opening_parenthesis[1] > 1 and - Search(r'\]\s*$', clean_lines.elided[opening_parenthesis[1] - 1])): - # Multi-line lambda-expression - match = None - - else: - # Try matching cases 2-3. - match = Match(r'^(.*(?:else|\)\s*const)\s*)\{', line) - if not match: - # Try matching cases 4-6. These are always matched on separate lines. - # - # Note that we can't simply concatenate the previous line to the - # current line and do a single match, otherwise we may output - # duplicate warnings for the blank line case: - # if (cond) { - # // blank line - # } - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if prevline and Search(r'[;{}]\s*$', prevline): - match = Match(r'^(\s*)\{', line) - - # Check matching closing brace - if match: - (endline, endlinenum, endpos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - if endpos > -1 and Match(r'^\s*;', endline[endpos:]): - # Current {} pair is eligible for semicolon check, and we have found - # the redundant semicolon, output warning here. - # - # Note: because we are scanning forward for opening braces, and - # outputting warnings for the matching closing brace, if there are - # nested blocks with trailing semicolons, we will get the error - # messages in reversed order. - - # We need to check the line forward for NOLINT - raw_lines = clean_lines.raw_lines - ParseNolintSuppressions(filename, raw_lines[endlinenum-1], endlinenum-1, - error) - ParseNolintSuppressions(filename, raw_lines[endlinenum], endlinenum, - error) - - error(filename, endlinenum, 'readability/braces', 4, - "You don't need a ; after a }") - - -def CheckEmptyBlockBody(filename, clean_lines, linenum, error): - """Look for empty loop/conditional body with only a single semicolon. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - # Search for loop keywords at the beginning of the line. Because only - # whitespaces are allowed before the keywords, this will also ignore most - # do-while-loops, since those lines should start with closing brace. - # - # We also check "if" blocks here, since an empty conditional block - # is likely an error. - line = clean_lines.elided[linenum] - matched = Match(r'\s*(for|while|if)\s*\(', line) - if matched: - # Find the end of the conditional expression. - (end_line, end_linenum, end_pos) = CloseExpression( - clean_lines, linenum, line.find('(')) - - # Output warning if what follows the condition expression is a semicolon. - # No warning for all other cases, including whitespace or newline, since we - # have a separate check for semicolons preceded by whitespace. - if end_pos >= 0 and Match(r';', end_line[end_pos:]): - if matched.group(1) == 'if': - error(filename, end_linenum, 'whitespace/empty_conditional_body', 5, - 'Empty conditional bodies should use {}') - else: - error(filename, end_linenum, 'whitespace/empty_loop_body', 5, - 'Empty loop bodies should use {} or continue') - - # Check for if statements that have completely empty bodies (no comments) - # and no else clauses. - if end_pos >= 0 and matched.group(1) == 'if': - # Find the position of the opening { for the if statement. - # Return without logging an error if it has no brackets. - opening_linenum = end_linenum - opening_line_fragment = end_line[end_pos:] - # Loop until EOF or find anything that's not whitespace or opening {. - while not Search(r'^\s*\{', opening_line_fragment): - if Search(r'^(?!\s*$)', opening_line_fragment): - # Conditional has no brackets. - return - opening_linenum += 1 - if opening_linenum == len(clean_lines.elided): - # Couldn't find conditional's opening { or any code before EOF. - return - opening_line_fragment = clean_lines.elided[opening_linenum] - # Set opening_line (opening_line_fragment may not be entire opening line). - opening_line = clean_lines.elided[opening_linenum] - - # Find the position of the closing }. - opening_pos = opening_line_fragment.find('{') - if opening_linenum == end_linenum: - # We need to make opening_pos relative to the start of the entire line. - opening_pos += end_pos - (closing_line, closing_linenum, closing_pos) = CloseExpression( - clean_lines, opening_linenum, opening_pos) - if closing_pos < 0: - return - - # Now construct the body of the conditional. This consists of the portion - # of the opening line after the {, all lines until the closing line, - # and the portion of the closing line before the }. - if (clean_lines.raw_lines[opening_linenum] != - CleanseComments(clean_lines.raw_lines[opening_linenum])): - # Opening line ends with a comment, so conditional isn't empty. - return - if closing_linenum > opening_linenum: - # Opening line after the {. Ignore comments here since we checked above. - body = list(opening_line[opening_pos+1:]) - # All lines until closing line, excluding closing line, with comments. - body.extend(clean_lines.raw_lines[opening_linenum+1:closing_linenum]) - # Closing line before the }. Won't (and can't) have comments. - body.append(clean_lines.elided[closing_linenum][:closing_pos-1]) - body = '\n'.join(body) - else: - # If statement has brackets and fits on a single line. - body = opening_line[opening_pos+1:closing_pos-1] - - # Check if the body is empty - if not _EMPTY_CONDITIONAL_BODY_PATTERN.search(body): - return - # The body is empty. Now make sure there's not an else clause. - current_linenum = closing_linenum - current_line_fragment = closing_line[closing_pos:] - # Loop until EOF or find anything that's not whitespace or else clause. - while Search(r'^\s*$|^(?=\s*else)', current_line_fragment): - if Search(r'^(?=\s*else)', current_line_fragment): - # Found an else clause, so don't log an error. - return - current_linenum += 1 - if current_linenum == len(clean_lines.elided): - break - current_line_fragment = clean_lines.elided[current_linenum] - - # The body is empty and there's no else clause until EOF or other code. - error(filename, end_linenum, 'whitespace/empty_if_body', 4, - ('If statement had no body and no else clause')) - - -def FindCheckMacro(line): - """Find a replaceable CHECK-like macro. - - Args: - line: line to search on. - Returns: - (macro name, start position), or (None, -1) if no replaceable - macro is found. - """ - for macro in _CHECK_MACROS: - i = line.find(macro) - if i >= 0: - # Find opening parenthesis. Do a regular expression match here - # to make sure that we are matching the expected CHECK macro, as - # opposed to some other macro that happens to contain the CHECK - # substring. - matched = Match(r'^(.*\b' + macro + r'\s*)\(', line) - if not matched: - continue - return (macro, len(matched.group(1))) - return (None, -1) - - -def CheckCheck(filename, clean_lines, linenum, error): - """Checks the use of CHECK and EXPECT macros. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - # Decide the set of replacement macros that should be suggested - lines = clean_lines.elided - (check_macro, start_pos) = FindCheckMacro(lines[linenum]) - if not check_macro: - return - - # Find end of the boolean expression by matching parentheses - (last_line, end_line, end_pos) = CloseExpression( - clean_lines, linenum, start_pos) - if end_pos < 0: - return - - # If the check macro is followed by something other than a - # semicolon, assume users will log their own custom error messages - # and don't suggest any replacements. - if not Match(r'\s*;', last_line[end_pos:]): - return - - if linenum == end_line: - expression = lines[linenum][start_pos + 1:end_pos - 1] - else: - expression = lines[linenum][start_pos + 1:] - for i in xrange(linenum + 1, end_line): - expression += lines[i] - expression += last_line[0:end_pos - 1] - - # Parse expression so that we can take parentheses into account. - # This avoids false positives for inputs like "CHECK((a < 4) == b)", - # which is not replaceable by CHECK_LE. - lhs = '' - rhs = '' - operator = None - while expression: - matched = Match(r'^\s*(<<|<<=|>>|>>=|->\*|->|&&|\|\||' - r'==|!=|>=|>|<=|<|\()(.*)$', expression) - if matched: - token = matched.group(1) - if token == '(': - # Parenthesized operand - expression = matched.group(2) - (end, _) = FindEndOfExpressionInLine(expression, 0, ['(']) - if end < 0: - return # Unmatched parenthesis - lhs += '(' + expression[0:end] - expression = expression[end:] - elif token in ('&&', '||'): - # Logical and/or operators. This means the expression - # contains more than one term, for example: - # CHECK(42 < a && a < b); - # - # These are not replaceable with CHECK_LE, so bail out early. - return - elif token in ('<<', '<<=', '>>', '>>=', '->*', '->'): - # Non-relational operator - lhs += token - expression = matched.group(2) - else: - # Relational operator - operator = token - rhs = matched.group(2) - break - else: - # Unparenthesized operand. Instead of appending to lhs one character - # at a time, we do another regular expression match to consume several - # characters at once if possible. Trivial benchmark shows that this - # is more efficient when the operands are longer than a single - # character, which is generally the case. - matched = Match(r'^([^-=!<>()&|]+)(.*)$', expression) - if not matched: - matched = Match(r'^(\s*\S)(.*)$', expression) - if not matched: - break - lhs += matched.group(1) - expression = matched.group(2) - - # Only apply checks if we got all parts of the boolean expression - if not (lhs and operator and rhs): - return - - # Check that rhs do not contain logical operators. We already know - # that lhs is fine since the loop above parses out && and ||. - if rhs.find('&&') > -1 or rhs.find('||') > -1: - return - - # At least one of the operands must be a constant literal. This is - # to avoid suggesting replacements for unprintable things like - # CHECK(variable != iterator) - # - # The following pattern matches decimal, hex integers, strings, and - # characters (in that order). - lhs = lhs.strip() - rhs = rhs.strip() - match_constant = r'^([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')$' - if Match(match_constant, lhs) or Match(match_constant, rhs): - # Note: since we know both lhs and rhs, we can provide a more - # descriptive error message like: - # Consider using CHECK_EQ(x, 42) instead of CHECK(x == 42) - # Instead of: - # Consider using CHECK_EQ instead of CHECK(a == b) - # - # We are still keeping the less descriptive message because if lhs - # or rhs gets long, the error message might become unreadable. - error(filename, linenum, 'readability/check', 2, - 'Consider using %s instead of %s(a %s b)' % ( - _CHECK_REPLACEMENT[check_macro][operator], - check_macro, operator)) - - -def CheckAltTokens(filename, clean_lines, linenum, error): - """Check alternative keywords being used in boolean expressions. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Avoid preprocessor lines - if Match(r'^\s*#', line): - return - - # Last ditch effort to avoid multi-line comments. This will not help - # if the comment started before the current line or ended after the - # current line, but it catches most of the false positives. At least, - # it provides a way to workaround this warning for people who use - # multi-line comments in preprocessor macros. - # - # TODO(unknown): remove this once cpplint has better support for - # multi-line comments. - if line.find('/*') >= 0 or line.find('*/') >= 0: - return - - for match in _ALT_TOKEN_REPLACEMENT_PATTERN.finditer(line): - error(filename, linenum, 'readability/alt_tokens', 2, - 'Use operator %s instead of %s' % ( - _ALT_TOKEN_REPLACEMENT[match.group(1)], match.group(1))) - - -def GetLineWidth(line): - """Determines the width of the line in column positions. - - Args: - line: A string, which may be a Unicode string. - - Returns: - The width of the line in column positions, accounting for Unicode - combining characters and wide characters. - """ - if isinstance(line, unicode): - width = 0 - for uc in unicodedata.normalize('NFC', line): - if unicodedata.east_asian_width(uc) in ('W', 'F'): - width += 2 - elif not unicodedata.combining(uc): - width += 1 - return width - else: - return len(line) - - -def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, - error): - """Checks rules from the 'C++ style rules' section of cppguide.html. - - Most of these rules are hard to test (naming, comment style), but we - do what we can. In particular we check for 2-space indents, line lengths, - tab usage, spaces inside code, etc. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - file_extension: The extension (without the dot) of the filename. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - - # Don't use "elided" lines here, otherwise we can't check commented lines. - # Don't want to use "raw" either, because we don't want to check inside C++11 - # raw strings, - raw_lines = clean_lines.lines_without_raw_strings - line = raw_lines[linenum] - prev = raw_lines[linenum - 1] if linenum > 0 else '' - - if line.find('\t') != -1: - error(filename, linenum, 'whitespace/tab', 1, - 'Tab found; better to use spaces') - - # One or three blank spaces at the beginning of the line is weird; it's - # hard to reconcile that with 2-space indents. - # NOTE: here are the conditions rob pike used for his tests. Mine aren't - # as sophisticated, but it may be worth becoming so: RLENGTH==initial_spaces - # if(RLENGTH > 20) complain = 0; - # if(match($0, " +(error|private|public|protected):")) complain = 0; - # if(match(prev, "&& *$")) complain = 0; - # if(match(prev, "\\|\\| *$")) complain = 0; - # if(match(prev, "[\",=><] *$")) complain = 0; - # if(match($0, " <<")) complain = 0; - # if(match(prev, " +for \\(")) complain = 0; - # if(prevodd && match(prevprev, " +for \\(")) complain = 0; - scope_or_label_pattern = r'\s*\w+\s*:\s*\\?$' - classinfo = nesting_state.InnermostClass() - initial_spaces = 0 - cleansed_line = clean_lines.elided[linenum] - while initial_spaces < len(line) and line[initial_spaces] == ' ': - initial_spaces += 1 - # There are certain situations we allow one space, notably for - # section labels, and also lines containing multi-line raw strings. - # We also don't check for lines that look like continuation lines - # (of lines ending in double quotes, commas, equals, or angle brackets) - # because the rules for how to indent those are non-trivial. - if (not Search(r'[",=><] *$', prev) and - (initial_spaces == 1 or initial_spaces == 3) and - not Match(scope_or_label_pattern, cleansed_line) and - not (clean_lines.raw_lines[linenum] != line and - Match(r'^\s*""', line))): - error(filename, linenum, 'whitespace/indent', 3, - 'Weird number of spaces at line-start. ' - 'Are you using a 2-space indent?') - - if line and line[-1].isspace(): - error(filename, linenum, 'whitespace/end_of_line', 4, - 'Line ends in whitespace. Consider deleting these extra spaces.') - - # Check if the line is a header guard. - is_header_guard = False - if IsHeaderExtension(file_extension): - cppvar = GetHeaderGuardCPPVariable(filename) - if (line.startswith('#ifndef %s' % cppvar) or - line.startswith('#define %s' % cppvar) or - line.startswith('#endif // %s' % cppvar)): - is_header_guard = True - # #include lines and header guards can be long, since there's no clean way to - # split them. - # - # URLs can be long too. It's possible to split these, but it makes them - # harder to cut&paste. - # - # The "$Id:...$" comment may also get very long without it being the - # developers fault. - if (not line.startswith('#include') and not is_header_guard and - not Match(r'^\s*//.*http(s?)://\S*$', line) and - not Match(r'^\s*//\s*[^\s]*$', line) and - not Match(r'^// \$Id:.*#[0-9]+ \$$', line)): - line_width = GetLineWidth(line) - if line_width > _line_length: - error(filename, linenum, 'whitespace/line_length', 2, - 'Lines should be <= %i characters long' % _line_length) - - if (cleansed_line.count(';') > 1 and - # for loops are allowed two ;'s (and may run over two lines). - cleansed_line.find('for') == -1 and - (GetPreviousNonBlankLine(clean_lines, linenum)[0].find('for') == -1 or - GetPreviousNonBlankLine(clean_lines, linenum)[0].find(';') != -1) and - # It's ok to have many commands in a switch case that fits in 1 line - not ((cleansed_line.find('case ') != -1 or - cleansed_line.find('default:') != -1) and - cleansed_line.find('break;') != -1)): - error(filename, linenum, 'whitespace/newline', 0, - 'More than one command on the same line') - - # Some more style checks - CheckBraces(filename, clean_lines, linenum, error) - CheckTrailingSemicolon(filename, clean_lines, linenum, error) - CheckEmptyBlockBody(filename, clean_lines, linenum, error) - CheckSpacing(filename, clean_lines, linenum, nesting_state, error) - CheckOperatorSpacing(filename, clean_lines, linenum, error) - CheckParenthesisSpacing(filename, clean_lines, linenum, error) - CheckCommaSpacing(filename, clean_lines, linenum, error) - CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error) - CheckSpacingForFunctionCall(filename, clean_lines, linenum, error) - CheckCheck(filename, clean_lines, linenum, error) - CheckAltTokens(filename, clean_lines, linenum, error) - classinfo = nesting_state.InnermostClass() - if classinfo: - CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) - - -_RE_PATTERN_INCLUDE = re.compile(r'^\s*#\s*include\s*([<"])([^>"]*)[>"].*$') -# Matches the first component of a filename delimited by -s and _s. That is: -# _RE_FIRST_COMPONENT.match('foo').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo.cc').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo-bar_baz.cc').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo_bar-baz.cc').group(0) == 'foo' -_RE_FIRST_COMPONENT = re.compile(r'^[^-_.]+') - - -def _DropCommonSuffixes(filename): - """Drops common suffixes like _test.cc or -inl.h from filename. - - For example: - >>> _DropCommonSuffixes('foo/foo-inl.h') - 'foo/foo' - >>> _DropCommonSuffixes('foo/bar/foo.cc') - 'foo/bar/foo' - >>> _DropCommonSuffixes('foo/foo_internal.h') - 'foo/foo' - >>> _DropCommonSuffixes('foo/foo_unusualinternal.h') - 'foo/foo_unusualinternal' - - Args: - filename: The input filename. - - Returns: - The filename with the common suffix removed. - """ - for suffix in ('test.cc', 'regtest.cc', 'unittest.cc', - 'inl.h', 'impl.h', 'internal.h'): - if (filename.endswith(suffix) and len(filename) > len(suffix) and - filename[-len(suffix) - 1] in ('-', '_')): - return filename[:-len(suffix) - 1] - return os.path.splitext(filename)[0] - - -def _ClassifyInclude(fileinfo, include, is_system): - """Figures out what kind of header 'include' is. - - Args: - fileinfo: The current file cpplint is running over. A FileInfo instance. - include: The path to a #included file. - is_system: True if the #include used <> rather than "". - - Returns: - One of the _XXX_HEADER constants. - - For example: - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'stdio.h', True) - _C_SYS_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'string', True) - _CPP_SYS_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', False) - _LIKELY_MY_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo_unknown_extension.cc'), - ... 'bar/foo_other_ext.h', False) - _POSSIBLE_MY_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/bar.h', False) - _OTHER_HEADER - """ - # This is a list of all standard c++ header files, except - # those already checked for above. - is_cpp_h = include in _CPP_HEADERS - - if is_system: - if is_cpp_h: - return _CPP_SYS_HEADER - else: - return _C_SYS_HEADER - - # If the target file and the include we're checking share a - # basename when we drop common extensions, and the include - # lives in . , then it's likely to be owned by the target file. - target_dir, target_base = ( - os.path.split(_DropCommonSuffixes(fileinfo.RepositoryName()))) - include_dir, include_base = os.path.split(_DropCommonSuffixes(include)) - if target_base == include_base and ( - include_dir == target_dir or - include_dir == os.path.normpath(target_dir + '/../public')): - return _LIKELY_MY_HEADER - - # If the target and include share some initial basename - # component, it's possible the target is implementing the - # include, so it's allowed to be first, but we'll never - # complain if it's not there. - target_first_component = _RE_FIRST_COMPONENT.match(target_base) - include_first_component = _RE_FIRST_COMPONENT.match(include_base) - if (target_first_component and include_first_component and - target_first_component.group(0) == - include_first_component.group(0)): - return _POSSIBLE_MY_HEADER - - return _OTHER_HEADER - - - -def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): - """Check rules that are applicable to #include lines. - - Strings on #include lines are NOT removed from elided line, to make - certain tasks easier. However, to prevent false positives, checks - applicable to #include lines in CheckLanguage must be put here. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - include_state: An _IncludeState instance in which the headers are inserted. - error: The function to call with any errors found. - """ - fileinfo = FileInfo(filename) - line = clean_lines.lines[linenum] - - # "include" should use the new style "foo/bar.h" instead of just "bar.h" - # Only do this check if the included header follows google naming - # conventions. If not, assume that it's a 3rd party API that - # requires special include conventions. - # - # We also make an exception for Lua headers, which follow google - # naming convention but not the include convention. - match = Match(r'#include\s*"([^/]+\.h)"', line) - if match and not _THIRD_PARTY_HEADERS_PATTERN.match(match.group(1)): - error(filename, linenum, 'build/include', 4, - 'Include the directory when naming .h files') - - # we shouldn't include a file more than once. actually, there are a - # handful of instances where doing so is okay, but in general it's - # not. - match = _RE_PATTERN_INCLUDE.search(line) - if match: - include = match.group(2) - is_system = (match.group(1) == '<') - duplicate_line = include_state.FindHeader(include) - if duplicate_line >= 0: - error(filename, linenum, 'build/include', 4, - '"%s" already included at %s:%s' % - (include, filename, duplicate_line)) - elif (include.endswith('.cc') and - os.path.dirname(fileinfo.RepositoryName()) != os.path.dirname(include)): - error(filename, linenum, 'build/include', 4, - 'Do not include .cc files from other packages') - elif not _THIRD_PARTY_HEADERS_PATTERN.match(include): - include_state.include_list[-1].append((include, linenum)) - - # We want to ensure that headers appear in the right order: - # 1) for foo.cc, foo.h (preferred location) - # 2) c system files - # 3) cpp system files - # 4) for foo.cc, foo.h (deprecated location) - # 5) other google headers - # - # We classify each include statement as one of those 5 types - # using a number of techniques. The include_state object keeps - # track of the highest type seen, and complains if we see a - # lower type after that. - error_message = include_state.CheckNextIncludeOrder( - _ClassifyInclude(fileinfo, include, is_system)) - if error_message: - error(filename, linenum, 'build/include_order', 4, - '%s. Should be: %s.h, c system, c++ system, other.' % - (error_message, fileinfo.BaseName())) - canonical_include = include_state.CanonicalizeAlphabeticalOrder(include) - if not include_state.IsInAlphabeticalOrder( - clean_lines, linenum, canonical_include): - error(filename, linenum, 'build/include_alpha', 4, - 'Include "%s" not in alphabetical order' % include) - include_state.SetLastHeader(canonical_include) - - - -def _GetTextInside(text, start_pattern): - r"""Retrieves all the text between matching open and close parentheses. - - Given a string of lines and a regular expression string, retrieve all the text - following the expression and between opening punctuation symbols like - (, [, or {, and the matching close-punctuation symbol. This properly nested - occurrences of the punctuations, so for the text like - printf(a(), b(c())); - a call to _GetTextInside(text, r'printf\(') will return 'a(), b(c())'. - start_pattern must match string having an open punctuation symbol at the end. - - Args: - text: The lines to extract text. Its comments and strings must be elided. - It can be single line and can span multiple lines. - start_pattern: The regexp string indicating where to start extracting - the text. - Returns: - The extracted text. - None if either the opening string or ending punctuation could not be found. - """ - # TODO(unknown): Audit cpplint.py to see what places could be profitably - # rewritten to use _GetTextInside (and use inferior regexp matching today). - - # Give opening punctuations to get the matching close-punctuations. - matching_punctuation = {'(': ')', '{': '}', '[': ']'} - closing_punctuation = set(matching_punctuation.itervalues()) - - # Find the position to start extracting text. - match = re.search(start_pattern, text, re.M) - if not match: # start_pattern not found in text. - return None - start_position = match.end(0) - - assert start_position > 0, ( - 'start_pattern must ends with an opening punctuation.') - assert text[start_position - 1] in matching_punctuation, ( - 'start_pattern must ends with an opening punctuation.') - # Stack of closing punctuations we expect to have in text after position. - punctuation_stack = [matching_punctuation[text[start_position - 1]]] - position = start_position - while punctuation_stack and position < len(text): - if text[position] == punctuation_stack[-1]: - punctuation_stack.pop() - elif text[position] in closing_punctuation: - # A closing punctuation without matching opening punctuations. - return None - elif text[position] in matching_punctuation: - punctuation_stack.append(matching_punctuation[text[position]]) - position += 1 - if punctuation_stack: - # Opening punctuations left without matching close-punctuations. - return None - # punctuations match. - return text[start_position:position - 1] - - -# Patterns for matching call-by-reference parameters. -# -# Supports nested templates up to 2 levels deep using this messy pattern: -# < (?: < (?: < [^<>]* -# > -# | [^<>] )* -# > -# | [^<>] )* -# > -_RE_PATTERN_IDENT = r'[_a-zA-Z]\w*' # =~ [[:alpha:]][[:alnum:]]* -_RE_PATTERN_TYPE = ( - r'(?:const\s+)?(?:typename\s+|class\s+|struct\s+|union\s+|enum\s+)?' - r'(?:\w|' - r'\s*<(?:<(?:<[^<>]*>|[^<>])*>|[^<>])*>|' - r'::)+') -# A call-by-reference parameter ends with '& identifier'. -_RE_PATTERN_REF_PARAM = re.compile( - r'(' + _RE_PATTERN_TYPE + r'(?:\s*(?:\bconst\b|[*]))*\s*' - r'&\s*' + _RE_PATTERN_IDENT + r')\s*(?:=[^,()]+)?[,)]') -# A call-by-const-reference parameter either ends with 'const& identifier' -# or looks like 'const type& identifier' when 'type' is atomic. -_RE_PATTERN_CONST_REF_PARAM = ( - r'(?:.*\s*\bconst\s*&\s*' + _RE_PATTERN_IDENT + - r'|const\s+' + _RE_PATTERN_TYPE + r'\s*&\s*' + _RE_PATTERN_IDENT + r')') -# Stream types. -_RE_PATTERN_REF_STREAM_PARAM = ( - r'(?:.*stream\s*&\s*' + _RE_PATTERN_IDENT + r')') - - -def CheckLanguage(filename, clean_lines, linenum, file_extension, - include_state, nesting_state, error): - """Checks rules from the 'C++ language rules' section of cppguide.html. - - Some of these rules are hard to test (function overloading, using - uint32 inappropriately), but we do the best we can. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - file_extension: The extension (without the dot) of the filename. - include_state: An _IncludeState instance in which the headers are inserted. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - # If the line is empty or consists of entirely a comment, no need to - # check it. - line = clean_lines.elided[linenum] - if not line: - return - - match = _RE_PATTERN_INCLUDE.search(line) - if match: - CheckIncludeLine(filename, clean_lines, linenum, include_state, error) - return - - # Reset include state across preprocessor directives. This is meant - # to silence warnings for conditional includes. - match = Match(r'^\s*#\s*(if|ifdef|ifndef|elif|else|endif)\b', line) - if match: - include_state.ResetSection(match.group(1)) - - # Make Windows paths like Unix. - fullname = os.path.abspath(filename).replace('\\', '/') - - # Perform other checks now that we are sure that this is not an include line - CheckCasts(filename, clean_lines, linenum, error) - CheckGlobalStatic(filename, clean_lines, linenum, error) - CheckPrintf(filename, clean_lines, linenum, error) - - if IsHeaderExtension(file_extension): - # TODO(unknown): check that 1-arg constructors are explicit. - # How to tell it's a constructor? - # (handled in CheckForNonStandardConstructs for now) - # TODO(unknown): check that classes declare or disable copy/assign - # (level 1 error) - pass - - # Check if people are using the verboten C basic types. The only exception - # we regularly allow is "unsigned short port" for port. - if Search(r'\bshort port\b', line): - if not Search(r'\bunsigned short port\b', line): - error(filename, linenum, 'runtime/int', 4, - 'Use "unsigned short" for ports, not "short"') - else: - match = Search(r'\b(short|long(?! +double)|long long)\b', line) - if match: - error(filename, linenum, 'runtime/int', 4, - 'Use int16/int64/etc, rather than the C type %s' % match.group(1)) - - # Check if some verboten operator overloading is going on - # TODO(unknown): catch out-of-line unary operator&: - # class X {}; - # int operator&(const X& x) { return 42; } // unary operator& - # The trick is it's hard to tell apart from binary operator&: - # class Y { int operator&(const Y& x) { return 23; } }; // binary operator& - if Search(r'\boperator\s*&\s*\(\s*\)', line): - error(filename, linenum, 'runtime/operator', 4, - 'Unary operator& is dangerous. Do not use it.') - - # Check for suspicious usage of "if" like - # } if (a == b) { - if Search(r'\}\s*if\s*\(', line): - error(filename, linenum, 'readability/braces', 4, - 'Did you mean "else if"? If not, start a new line for "if".') - - # Check for potential format string bugs like printf(foo). - # We constrain the pattern not to pick things like DocidForPrintf(foo). - # Not perfect but it can catch printf(foo.c_str()) and printf(foo->c_str()) - # TODO(unknown): Catch the following case. Need to change the calling - # convention of the whole function to process multiple line to handle it. - # printf( - # boy_this_is_a_really_long_variable_that_cannot_fit_on_the_prev_line); - printf_args = _GetTextInside(line, r'(?i)\b(string)?printf\s*\(') - if printf_args: - match = Match(r'([\w.\->()]+)$', printf_args) - if match and match.group(1) != '__VA_ARGS__': - function_name = re.search(r'\b((?:string)?printf)\s*\(', - line, re.I).group(1) - error(filename, linenum, 'runtime/printf', 4, - 'Potential format string bug. Do %s("%%s", %s) instead.' - % (function_name, match.group(1))) - - # Check for potential memset bugs like memset(buf, sizeof(buf), 0). - match = Search(r'memset\s*\(([^,]*),\s*([^,]*),\s*0\s*\)', line) - if match and not Match(r"^''|-?[0-9]+|0x[0-9A-Fa-f]$", match.group(2)): - error(filename, linenum, 'runtime/memset', 4, - 'Did you mean "memset(%s, 0, %s)"?' - % (match.group(1), match.group(2))) - - if Search(r'\busing namespace\b', line): - error(filename, linenum, 'build/namespaces', 5, - 'Do not use namespace using-directives. ' - 'Use using-declarations instead.') - - # Detect variable-length arrays. - match = Match(r'\s*(.+::)?(\w+) [a-z]\w*\[(.+)];', line) - if (match and match.group(2) != 'return' and match.group(2) != 'delete' and - match.group(3).find(']') == -1): - # Split the size using space and arithmetic operators as delimiters. - # If any of the resulting tokens are not compile time constants then - # report the error. - tokens = re.split(r'\s|\+|\-|\*|\/|<<|>>]', match.group(3)) - is_const = True - skip_next = False - for tok in tokens: - if skip_next: - skip_next = False - continue - - if Search(r'sizeof\(.+\)', tok): continue - if Search(r'arraysize\(\w+\)', tok): continue - - tok = tok.lstrip('(') - tok = tok.rstrip(')') - if not tok: continue - if Match(r'\d+', tok): continue - if Match(r'0[xX][0-9a-fA-F]+', tok): continue - if Match(r'k[A-Z0-9]\w*', tok): continue - if Match(r'(.+::)?k[A-Z0-9]\w*', tok): continue - if Match(r'(.+::)?[A-Z][A-Z0-9_]*', tok): continue - # A catch all for tricky sizeof cases, including 'sizeof expression', - # 'sizeof(*type)', 'sizeof(const type)', 'sizeof(struct StructName)' - # requires skipping the next token because we split on ' ' and '*'. - if tok.startswith('sizeof'): - skip_next = True - continue - is_const = False - break - if not is_const: - error(filename, linenum, 'runtime/arrays', 1, - 'Do not use variable-length arrays. Use an appropriately named ' - "('k' followed by CamelCase) compile-time constant for the size.") - - # Check for use of unnamed namespaces in header files. Registration - # macros are typically OK, so we allow use of "namespace {" on lines - # that end with backslashes. - if (IsHeaderExtension(file_extension) - and Search(r'\bnamespace\s*{', line) - and line[-1] != '\\'): - error(filename, linenum, 'build/namespaces', 4, - 'Do not use unnamed namespaces in header files. See ' - 'https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces' - ' for more information.') - - -def CheckGlobalStatic(filename, clean_lines, linenum, error): - """Check for unsafe global or static objects. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Match two lines at a time to support multiline declarations - if linenum + 1 < clean_lines.NumLines() and not Search(r'[;({]', line): - line += clean_lines.elided[linenum + 1].strip() - - # Check for people declaring static/global STL strings at the top level. - # This is dangerous because the C++ language does not guarantee that - # globals with constructors are initialized before the first access, and - # also because globals can be destroyed when some threads are still running. - # TODO(unknown): Generalize this to also find static unique_ptr instances. - # TODO(unknown): File bugs for clang-tidy to find these. - match = Match( - r'((?:|static +)(?:|const +))(?::*std::)?string( +const)? +' - r'([a-zA-Z0-9_:]+)\b(.*)', - line) - - # Remove false positives: - # - String pointers (as opposed to values). - # string *pointer - # const string *pointer - # string const *pointer - # string *const pointer - # - # - Functions and template specializations. - # string Function(... - # string Class::Method(... - # - # - Operators. These are matched separately because operator names - # cross non-word boundaries, and trying to match both operators - # and functions at the same time would decrease accuracy of - # matching identifiers. - # string Class::operator*() - if (match and - not Search(r'\bstring\b(\s+const)?\s*[\*\&]\s*(const\s+)?\w', line) and - not Search(r'\boperator\W', line) and - not Match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)*\s*\(([^"]|$)', match.group(4))): - if Search(r'\bconst\b', line): - error(filename, linenum, 'runtime/string', 4, - 'For a static/global string constant, use a C style string ' - 'instead: "%schar%s %s[]".' % - (match.group(1), match.group(2) or '', match.group(3))) - else: - error(filename, linenum, 'runtime/string', 4, - 'Static/global string variables are not permitted.') - - if (Search(r'\b([A-Za-z0-9_]*_)\(\1\)', line) or - Search(r'\b([A-Za-z0-9_]*_)\(CHECK_NOTNULL\(\1\)\)', line)): - error(filename, linenum, 'runtime/init', 4, - 'You seem to be initializing a member variable with itself.') - - -def CheckPrintf(filename, clean_lines, linenum, error): - """Check for printf related issues. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # When snprintf is used, the second argument shouldn't be a literal. - match = Search(r'snprintf\s*\(([^,]*),\s*([0-9]*)\s*,', line) - if match and match.group(2) != '0': - # If 2nd arg is zero, snprintf is used to calculate size. - error(filename, linenum, 'runtime/printf', 3, - 'If you can, use sizeof(%s) instead of %s as the 2nd arg ' - 'to snprintf.' % (match.group(1), match.group(2))) - - # Check if some verboten C functions are being used. - if Search(r'\bsprintf\s*\(', line): - error(filename, linenum, 'runtime/printf', 5, - 'Never use sprintf. Use snprintf instead.') - match = Search(r'\b(strcpy|strcat)\s*\(', line) - if match: - error(filename, linenum, 'runtime/printf', 4, - 'Almost always, snprintf is better than %s' % match.group(1)) - - -def IsDerivedFunction(clean_lines, linenum): - """Check if current line contains an inherited function. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line contains a function with "override" - virt-specifier. - """ - # Scan back a few lines for start of current function - for i in xrange(linenum, max(-1, linenum - 10), -1): - match = Match(r'^([^()]*\w+)\(', clean_lines.elided[i]) - if match: - # Look for "override" after the matching closing parenthesis - line, _, closing_paren = CloseExpression( - clean_lines, i, len(match.group(1))) - return (closing_paren >= 0 and - Search(r'\boverride\b', line[closing_paren:])) - return False - - -def IsOutOfLineMethodDefinition(clean_lines, linenum): - """Check if current line contains an out-of-line method definition. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line contains an out-of-line method definition. - """ - # Scan back a few lines for start of current function - for i in xrange(linenum, max(-1, linenum - 10), -1): - if Match(r'^([^()]*\w+)\(', clean_lines.elided[i]): - return Match(r'^[^()]*\w+::\w+\(', clean_lines.elided[i]) is not None - return False - - -def IsInitializerList(clean_lines, linenum): - """Check if current line is inside constructor initializer list. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line appears to be inside constructor initializer - list, False otherwise. - """ - for i in xrange(linenum, 1, -1): - line = clean_lines.elided[i] - if i == linenum: - remove_function_body = Match(r'^(.*)\{\s*$', line) - if remove_function_body: - line = remove_function_body.group(1) - - if Search(r'\s:\s*\w+[({]', line): - # A lone colon tend to indicate the start of a constructor - # initializer list. It could also be a ternary operator, which - # also tend to appear in constructor initializer lists as - # opposed to parameter lists. - return True - if Search(r'\}\s*,\s*$', line): - # A closing brace followed by a comma is probably the end of a - # brace-initialized member in constructor initializer list. - return True - if Search(r'[{};]\s*$', line): - # Found one of the following: - # - A closing brace or semicolon, probably the end of the previous - # function. - # - An opening brace, probably the start of current class or namespace. - # - # Current line is probably not inside an initializer list since - # we saw one of those things without seeing the starting colon. - return False - - # Got to the beginning of the file without seeing the start of - # constructor initializer list. - return False - - -def CheckForNonConstReference(filename, clean_lines, linenum, - nesting_state, error): - """Check for non-const references. - - Separate from CheckLanguage since it scans backwards from current - line, instead of scanning forward. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - # Do nothing if there is no '&' on current line. - line = clean_lines.elided[linenum] - if '&' not in line: - return - - # If a function is inherited, current function doesn't have much of - # a choice, so any non-const references should not be blamed on - # derived function. - if IsDerivedFunction(clean_lines, linenum): - return - - # Don't warn on out-of-line method definitions, as we would warn on the - # in-line declaration, if it isn't marked with 'override'. - if IsOutOfLineMethodDefinition(clean_lines, linenum): - return - - # Long type names may be broken across multiple lines, usually in one - # of these forms: - # LongType - # ::LongTypeContinued &identifier - # LongType:: - # LongTypeContinued &identifier - # LongType< - # ...>::LongTypeContinued &identifier - # - # If we detected a type split across two lines, join the previous - # line to current line so that we can match const references - # accordingly. - # - # Note that this only scans back one line, since scanning back - # arbitrary number of lines would be expensive. If you have a type - # that spans more than 2 lines, please use a typedef. - if linenum > 1: - previous = None - if Match(r'\s*::(?:[\w<>]|::)+\s*&\s*\S', line): - # previous_line\n + ::current_line - previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+[\w<>])\s*$', - clean_lines.elided[linenum - 1]) - elif Match(r'\s*[a-zA-Z_]([\w<>]|::)+\s*&\s*\S', line): - # previous_line::\n + current_line - previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+::)\s*$', - clean_lines.elided[linenum - 1]) - if previous: - line = previous.group(1) + line.lstrip() - else: - # Check for templated parameter that is split across multiple lines - endpos = line.rfind('>') - if endpos > -1: - (_, startline, startpos) = ReverseCloseExpression( - clean_lines, linenum, endpos) - if startpos > -1 and startline < linenum: - # Found the matching < on an earlier line, collect all - # pieces up to current line. - line = '' - for i in xrange(startline, linenum + 1): - line += clean_lines.elided[i].strip() - - # Check for non-const references in function parameters. A single '&' may - # found in the following places: - # inside expression: binary & for bitwise AND - # inside expression: unary & for taking the address of something - # inside declarators: reference parameter - # We will exclude the first two cases by checking that we are not inside a - # function body, including one that was just introduced by a trailing '{'. - # TODO(unknown): Doesn't account for 'catch(Exception& e)' [rare]. - if (nesting_state.previous_stack_top and - not (isinstance(nesting_state.previous_stack_top, _ClassInfo) or - isinstance(nesting_state.previous_stack_top, _NamespaceInfo))): - # Not at toplevel, not within a class, and not within a namespace - return - - # Avoid initializer lists. We only need to scan back from the - # current line for something that starts with ':'. - # - # We don't need to check the current line, since the '&' would - # appear inside the second set of parentheses on the current line as - # opposed to the first set. - if linenum > 0: - for i in xrange(linenum - 1, max(0, linenum - 10), -1): - previous_line = clean_lines.elided[i] - if not Search(r'[),]\s*$', previous_line): - break - if Match(r'^\s*:\s+\S', previous_line): - return - - # Avoid preprocessors - if Search(r'\\\s*$', line): - return - - # Avoid constructor initializer lists - if IsInitializerList(clean_lines, linenum): - return - - # We allow non-const references in a few standard places, like functions - # called "swap()" or iostream operators like "<<" or ">>". Do not check - # those function parameters. - # - # We also accept & in static_assert, which looks like a function but - # it's actually a declaration expression. - whitelisted_functions = (r'(?:[sS]wap(?:<\w:+>)?|' - r'operator\s*[<>][<>]|' - r'static_assert|COMPILE_ASSERT' - r')\s*\(') - if Search(whitelisted_functions, line): - return - elif not Search(r'\S+\([^)]*$', line): - # Don't see a whitelisted function on this line. Actually we - # didn't see any function name on this line, so this is likely a - # multi-line parameter list. Try a bit harder to catch this case. - for i in xrange(2): - if (linenum > i and - Search(whitelisted_functions, clean_lines.elided[linenum - i - 1])): - return - - decls = ReplaceAll(r'{[^}]*}', ' ', line) # exclude function body - for parameter in re.findall(_RE_PATTERN_REF_PARAM, decls): - if (not Match(_RE_PATTERN_CONST_REF_PARAM, parameter) and - not Match(_RE_PATTERN_REF_STREAM_PARAM, parameter)): - error(filename, linenum, 'runtime/references', 2, - 'Is this a non-const reference? ' - 'If so, make const or use a pointer: ' + - ReplaceAll(' *<', '<', parameter)) - - -def CheckCasts(filename, clean_lines, linenum, error): - """Various cast related checks. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Check to see if they're using an conversion function cast. - # I just try to capture the most common basic types, though there are more. - # Parameterless conversion functions, such as bool(), are allowed as they are - # probably a member operator declaration or default constructor. - match = Search( - r'(\bnew\s+(?:const\s+)?|\S<\s*(?:const\s+)?)?\b' - r'(int|float|double|bool|char|int32|uint32|int64|uint64)' - r'(\([^)].*)', line) - expecting_function = ExpectingFunctionArgs(clean_lines, linenum) - if match and not expecting_function: - matched_type = match.group(2) - - # matched_new_or_template is used to silence two false positives: - # - New operators - # - Template arguments with function types - # - # For template arguments, we match on types immediately following - # an opening bracket without any spaces. This is a fast way to - # silence the common case where the function type is the first - # template argument. False negative with less-than comparison is - # avoided because those operators are usually followed by a space. - # - # function // bracket + no space = false positive - # value < double(42) // bracket + space = true positive - matched_new_or_template = match.group(1) - - # Avoid arrays by looking for brackets that come after the closing - # parenthesis. - if Match(r'\([^()]+\)\s*\[', match.group(3)): - return - - # Other things to ignore: - # - Function pointers - # - Casts to pointer types - # - Placement new - # - Alias declarations - matched_funcptr = match.group(3) - if (matched_new_or_template is None and - not (matched_funcptr and - (Match(r'\((?:[^() ]+::\s*\*\s*)?[^() ]+\)\s*\(', - matched_funcptr) or - matched_funcptr.startswith('(*)'))) and - not Match(r'\s*using\s+\S+\s*=\s*' + matched_type, line) and - not Search(r'new\(\S+\)\s*' + matched_type, line)): - error(filename, linenum, 'readability/casting', 4, - 'Using deprecated casting style. ' - 'Use static_cast<%s>(...) instead' % - matched_type) - - if not expecting_function: - CheckCStyleCast(filename, clean_lines, linenum, 'static_cast', - r'\((int|float|double|bool|char|u?int(16|32|64))\)', error) - - # This doesn't catch all cases. Consider (const char * const)"hello". - # - # (char *) "foo" should always be a const_cast (reinterpret_cast won't - # compile). - if CheckCStyleCast(filename, clean_lines, linenum, 'const_cast', - r'\((char\s?\*+\s?)\)\s*"', error): - pass - else: - # Check pointer casts for other than string constants - CheckCStyleCast(filename, clean_lines, linenum, 'reinterpret_cast', - r'\((\w+\s?\*+\s?)\)', error) - - # In addition, we look for people taking the address of a cast. This - # is dangerous -- casts can assign to temporaries, so the pointer doesn't - # point where you think. - # - # Some non-identifier character is required before the '&' for the - # expression to be recognized as a cast. These are casts: - # expression = &static_cast(temporary()); - # function(&(int*)(temporary())); - # - # This is not a cast: - # reference_type&(int* function_param); - match = Search( - r'(?:[^\w]&\(([^)*][^)]*)\)[\w(])|' - r'(?:[^\w]&(static|dynamic|down|reinterpret)_cast\b)', line) - if match: - # Try a better error message when the & is bound to something - # dereferenced by the casted pointer, as opposed to the casted - # pointer itself. - parenthesis_error = False - match = Match(r'^(.*&(?:static|dynamic|down|reinterpret)_cast\b)<', line) - if match: - _, y1, x1 = CloseExpression(clean_lines, linenum, len(match.group(1))) - if x1 >= 0 and clean_lines.elided[y1][x1] == '(': - _, y2, x2 = CloseExpression(clean_lines, y1, x1) - if x2 >= 0: - extended_line = clean_lines.elided[y2][x2:] - if y2 < clean_lines.NumLines() - 1: - extended_line += clean_lines.elided[y2 + 1] - if Match(r'\s*(?:->|\[)', extended_line): - parenthesis_error = True - - if parenthesis_error: - error(filename, linenum, 'readability/casting', 4, - ('Are you taking an address of something dereferenced ' - 'from a cast? Wrapping the dereferenced expression in ' - 'parentheses will make the binding more obvious')) - else: - error(filename, linenum, 'runtime/casting', 4, - ('Are you taking an address of a cast? ' - 'This is dangerous: could be a temp var. ' - 'Take the address before doing the cast, rather than after')) - - -def CheckCStyleCast(filename, clean_lines, linenum, cast_type, pattern, error): - """Checks for a C-style cast by looking for the pattern. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - cast_type: The string for the C++ cast to recommend. This is either - reinterpret_cast, static_cast, or const_cast, depending. - pattern: The regular expression used to find C-style casts. - error: The function to call with any errors found. - - Returns: - True if an error was emitted. - False otherwise. - """ - line = clean_lines.elided[linenum] - match = Search(pattern, line) - if not match: - return False - - # Exclude lines with keywords that tend to look like casts - context = line[0:match.start(1) - 1] - if Match(r'.*\b(?:sizeof|alignof|alignas|[_A-Z][_A-Z0-9]*)\s*$', context): - return False - - # Try expanding current context to see if we one level of - # parentheses inside a macro. - if linenum > 0: - for i in xrange(linenum - 1, max(0, linenum - 5), -1): - context = clean_lines.elided[i] + context - if Match(r'.*\b[_A-Z][_A-Z0-9]*\s*\((?:\([^()]*\)|[^()])*$', context): - return False - - # operator++(int) and operator--(int) - if context.endswith(' operator++') or context.endswith(' operator--'): - return False - - # A single unnamed argument for a function tends to look like old style cast. - # If we see those, don't issue warnings for deprecated casts. - remainder = line[match.end(0):] - if Match(r'^\s*(?:;|const\b|throw\b|final\b|override\b|[=>{),]|->)', - remainder): - return False - - # At this point, all that should be left is actual casts. - error(filename, linenum, 'readability/casting', 4, - 'Using C-style cast. Use %s<%s>(...) instead' % - (cast_type, match.group(1))) - - return True - - -def ExpectingFunctionArgs(clean_lines, linenum): - """Checks whether where function type arguments are expected. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - - Returns: - True if the line at 'linenum' is inside something that expects arguments - of function types. - """ - line = clean_lines.elided[linenum] - return (Match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(', line) or - (linenum >= 2 and - (Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\((?:\S+,)?\s*$', - clean_lines.elided[linenum - 1]) or - Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\(\s*$', - clean_lines.elided[linenum - 2]) or - Search(r'\bstd::m?function\s*\<\s*$', - clean_lines.elided[linenum - 1])))) - - -_HEADERS_CONTAINING_TEMPLATES = ( - ('', ('deque',)), - ('', ('unary_function', 'binary_function', - 'plus', 'minus', 'multiplies', 'divides', 'modulus', - 'negate', - 'equal_to', 'not_equal_to', 'greater', 'less', - 'greater_equal', 'less_equal', - 'logical_and', 'logical_or', 'logical_not', - 'unary_negate', 'not1', 'binary_negate', 'not2', - 'bind1st', 'bind2nd', - 'pointer_to_unary_function', - 'pointer_to_binary_function', - 'ptr_fun', - 'mem_fun_t', 'mem_fun', 'mem_fun1_t', 'mem_fun1_ref_t', - 'mem_fun_ref_t', - 'const_mem_fun_t', 'const_mem_fun1_t', - 'const_mem_fun_ref_t', 'const_mem_fun1_ref_t', - 'mem_fun_ref', - )), - ('', ('numeric_limits',)), - ('', ('list',)), - ('', ('map', 'multimap',)), - ('', ('allocator', 'make_shared', 'make_unique', 'shared_ptr', - 'unique_ptr', 'weak_ptr')), - ('', ('queue', 'priority_queue',)), - ('', ('set', 'multiset',)), - ('', ('stack',)), - ('', ('char_traits', 'basic_string',)), - ('', ('tuple',)), - ('', ('unordered_map', 'unordered_multimap')), - ('', ('unordered_set', 'unordered_multiset')), - ('', ('pair',)), - ('', ('vector',)), - - # gcc extensions. - # Note: std::hash is their hash, ::hash is our hash - ('', ('hash_map', 'hash_multimap',)), - ('', ('hash_set', 'hash_multiset',)), - ('', ('slist',)), - ) - -_HEADERS_MAYBE_TEMPLATES = ( - ('', ('copy', 'max', 'min', 'min_element', 'sort', - 'transform', - )), - ('', ('forward', 'make_pair', 'move', 'swap')), - ) - -_RE_PATTERN_STRING = re.compile(r'\bstring\b') - -_re_pattern_headers_maybe_templates = [] -for _header, _templates in _HEADERS_MAYBE_TEMPLATES: - for _template in _templates: - # Match max(..., ...), max(..., ...), but not foo->max, foo.max or - # type::max(). - _re_pattern_headers_maybe_templates.append( - (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'), - _template, - _header)) - -# Other scripts may reach in and modify this pattern. -_re_pattern_templates = [] -for _header, _templates in _HEADERS_CONTAINING_TEMPLATES: - for _template in _templates: - _re_pattern_templates.append( - (re.compile(r'(\<|\b)' + _template + r'\s*\<'), - _template + '<>', - _header)) - - -def FilesBelongToSameModule(filename_cc, filename_h): - """Check if these two filenames belong to the same module. - - The concept of a 'module' here is a as follows: - foo.h, foo-inl.h, foo.cc, foo_test.cc and foo_unittest.cc belong to the - same 'module' if they are in the same directory. - some/path/public/xyzzy and some/path/internal/xyzzy are also considered - to belong to the same module here. - - If the filename_cc contains a longer path than the filename_h, for example, - '/absolute/path/to/base/sysinfo.cc', and this file would include - 'base/sysinfo.h', this function also produces the prefix needed to open the - header. This is used by the caller of this function to more robustly open the - header file. We don't have access to the real include paths in this context, - so we need this guesswork here. - - Known bugs: tools/base/bar.cc and base/bar.h belong to the same module - according to this implementation. Because of this, this function gives - some false positives. This should be sufficiently rare in practice. - - Args: - filename_cc: is the path for the .cc file - filename_h: is the path for the header path - - Returns: - Tuple with a bool and a string: - bool: True if filename_cc and filename_h belong to the same module. - string: the additional prefix needed to open the header file. - """ - - fileinfo = FileInfo(filename_cc) - if not fileinfo.IsSource(): - return (False, '') - filename_cc = filename_cc[:-len(fileinfo.Extension())] - matched_test_suffix = Search(_TEST_FILE_SUFFIX, fileinfo.BaseName()) - if matched_test_suffix: - filename_cc = filename_cc[:-len(matched_test_suffix.group(1))] - filename_cc = filename_cc.replace('/public/', '/') - filename_cc = filename_cc.replace('/internal/', '/') - - if not filename_h.endswith('.h'): - return (False, '') - filename_h = filename_h[:-len('.h')] - if filename_h.endswith('-inl'): - filename_h = filename_h[:-len('-inl')] - filename_h = filename_h.replace('/public/', '/') - filename_h = filename_h.replace('/internal/', '/') - - files_belong_to_same_module = filename_cc.endswith(filename_h) - common_path = '' - if files_belong_to_same_module: - common_path = filename_cc[:-len(filename_h)] - return files_belong_to_same_module, common_path - - -def UpdateIncludeState(filename, include_dict, io=codecs): - """Fill up the include_dict with new includes found from the file. - - Args: - filename: the name of the header to read. - include_dict: a dictionary in which the headers are inserted. - io: The io factory to use to read the file. Provided for testability. - - Returns: - True if a header was successfully added. False otherwise. - """ - headerfile = None - try: - headerfile = io.open(filename, 'r', 'utf8', 'replace') - except IOError: - return False - linenum = 0 - for line in headerfile: - linenum += 1 - clean_line = CleanseComments(line) - match = _RE_PATTERN_INCLUDE.search(clean_line) - if match: - include = match.group(2) - include_dict.setdefault(include, linenum) - return True - - -def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, - io=codecs): - """Reports for missing stl includes. - - This function will output warnings to make sure you are including the headers - necessary for the stl containers and functions that you use. We only give one - reason to include a header. For example, if you use both equal_to<> and - less<> in a .h file, only one (the latter in the file) of these will be - reported as a reason to include the . - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - include_state: An _IncludeState instance. - error: The function to call with any errors found. - io: The IO factory to use to read the header file. Provided for unittest - injection. - """ - required = {} # A map of header name to linenumber and the template entity. - # Example of required: { '': (1219, 'less<>') } - - for linenum in xrange(clean_lines.NumLines()): - line = clean_lines.elided[linenum] - if not line or line[0] == '#': - continue - - # String is special -- it is a non-templatized type in STL. - matched = _RE_PATTERN_STRING.search(line) - if matched: - # Don't warn about strings in non-STL namespaces: - # (We check only the first match per line; good enough.) - prefix = line[:matched.start()] - if prefix.endswith('std::') or not prefix.endswith('::'): - required[''] = (linenum, 'string') - - for pattern, template, header in _re_pattern_headers_maybe_templates: - if pattern.search(line): - required[header] = (linenum, template) - - # The following function is just a speed up, no semantics are changed. - if not '<' in line: # Reduces the cpu time usage by skipping lines. - continue - - for pattern, template, header in _re_pattern_templates: - matched = pattern.search(line) - if matched: - # Don't warn about IWYU in non-STL namespaces: - # (We check only the first match per line; good enough.) - prefix = line[:matched.start()] - if prefix.endswith('std::') or not prefix.endswith('::'): - required[header] = (linenum, template) - - # The policy is that if you #include something in foo.h you don't need to - # include it again in foo.cc. Here, we will look at possible includes. - # Let's flatten the include_state include_list and copy it into a dictionary. - include_dict = dict([item for sublist in include_state.include_list - for item in sublist]) - - # Did we find the header for this file (if any) and successfully load it? - header_found = False - - # Use the absolute path so that matching works properly. - abs_filename = FileInfo(filename).FullName() - - # For Emacs's flymake. - # If cpplint is invoked from Emacs's flymake, a temporary file is generated - # by flymake and that file name might end with '_flymake.cc'. In that case, - # restore original file name here so that the corresponding header file can be - # found. - # e.g. If the file name is 'foo_flymake.cc', we should search for 'foo.h' - # instead of 'foo_flymake.h' - abs_filename = re.sub(r'_flymake\.cc$', '.cc', abs_filename) - - # include_dict is modified during iteration, so we iterate over a copy of - # the keys. - header_keys = include_dict.keys() - for header in header_keys: - (same_module, common_path) = FilesBelongToSameModule(abs_filename, header) - fullpath = common_path + header - if same_module and UpdateIncludeState(fullpath, include_dict, io): - header_found = True - - # If we can't find the header file for a .cc, assume it's because we don't - # know where to look. In that case we'll give up as we're not sure they - # didn't include it in the .h file. - # TODO(unknown): Do a better job of finding .h files so we are confident that - # not having the .h file means there isn't one. - if filename.endswith('.cc') and not header_found: - return - - # All the lines have been processed, report the errors found. - for required_header_unstripped in required: - template = required[required_header_unstripped][1] - if required_header_unstripped.strip('<>"') not in include_dict: - error(filename, required[required_header_unstripped][0], - 'build/include_what_you_use', 4, - 'Add #include ' + required_header_unstripped + ' for ' + template) - - -_RE_PATTERN_EXPLICIT_MAKEPAIR = re.compile(r'\bmake_pair\s*<') - - -def CheckMakePairUsesDeduction(filename, clean_lines, linenum, error): - """Check that make_pair's template arguments are deduced. - - G++ 4.6 in C++11 mode fails badly if make_pair's template arguments are - specified explicitly, and such use isn't intended in any case. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - match = _RE_PATTERN_EXPLICIT_MAKEPAIR.search(line) - if match: - error(filename, linenum, 'build/explicit_make_pair', - 4, # 4 = high confidence - 'For C++11-compatibility, omit template arguments from make_pair' - ' OR use pair directly OR if appropriate, construct a pair directly') - - -def CheckRedundantVirtual(filename, clean_lines, linenum, error): - """Check if line contains a redundant "virtual" function-specifier. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Look for "virtual" on current line. - line = clean_lines.elided[linenum] - virtual = Match(r'^(.*)(\bvirtual\b)(.*)$', line) - if not virtual: return - - # Ignore "virtual" keywords that are near access-specifiers. These - # are only used in class base-specifier and do not apply to member - # functions. - if (Search(r'\b(public|protected|private)\s+$', virtual.group(1)) or - Match(r'^\s+(public|protected|private)\b', virtual.group(3))): - return - - # Ignore the "virtual" keyword from virtual base classes. Usually - # there is a column on the same line in these cases (virtual base - # classes are rare in google3 because multiple inheritance is rare). - if Match(r'^.*[^:]:[^:].*$', line): return - - # Look for the next opening parenthesis. This is the start of the - # parameter list (possibly on the next line shortly after virtual). - # TODO(unknown): doesn't work if there are virtual functions with - # decltype() or other things that use parentheses, but csearch suggests - # that this is rare. - end_col = -1 - end_line = -1 - start_col = len(virtual.group(2)) - for start_line in xrange(linenum, min(linenum + 3, clean_lines.NumLines())): - line = clean_lines.elided[start_line][start_col:] - parameter_list = Match(r'^([^(]*)\(', line) - if parameter_list: - # Match parentheses to find the end of the parameter list - (_, end_line, end_col) = CloseExpression( - clean_lines, start_line, start_col + len(parameter_list.group(1))) - break - start_col = 0 - - if end_col < 0: - return # Couldn't find end of parameter list, give up - - # Look for "override" or "final" after the parameter list - # (possibly on the next few lines). - for i in xrange(end_line, min(end_line + 3, clean_lines.NumLines())): - line = clean_lines.elided[i][end_col:] - match = Search(r'\b(override|final)\b', line) - if match: - error(filename, linenum, 'readability/inheritance', 4, - ('"virtual" is redundant since function is ' - 'already declared as "%s"' % match.group(1))) - - # Set end_col to check whole lines after we are done with the - # first line. - end_col = 0 - if Search(r'[^\w]\s*$', line): - break - - -def CheckRedundantOverrideOrFinal(filename, clean_lines, linenum, error): - """Check if line contains a redundant "override" or "final" virt-specifier. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Look for closing parenthesis nearby. We need one to confirm where - # the declarator ends and where the virt-specifier starts to avoid - # false positives. - line = clean_lines.elided[linenum] - declarator_end = line.rfind(')') - if declarator_end >= 0: - fragment = line[declarator_end:] - else: - if linenum > 1 and clean_lines.elided[linenum - 1].rfind(')') >= 0: - fragment = line - else: - return - - # Check that at most one of "override" or "final" is present, not both - if Search(r'\boverride\b', fragment) and Search(r'\bfinal\b', fragment): - error(filename, linenum, 'readability/inheritance', 4, - ('"override" is redundant since function is ' - 'already declared as "final"')) - - - - -# Returns true if we are at a new block, and it is directly -# inside of a namespace. -def IsBlockInNameSpace(nesting_state, is_forward_declaration): - """Checks that the new block is directly in a namespace. - - Args: - nesting_state: The _NestingState object that contains info about our state. - is_forward_declaration: If the class is a forward declared class. - Returns: - Whether or not the new block is directly in a namespace. - """ - if is_forward_declaration: - if len(nesting_state.stack) >= 1 and ( - isinstance(nesting_state.stack[-1], _NamespaceInfo)): - return True - else: - return False - - return (len(nesting_state.stack) > 1 and - nesting_state.stack[-1].check_namespace_indentation and - isinstance(nesting_state.stack[-2], _NamespaceInfo)) - - -def ShouldCheckNamespaceIndentation(nesting_state, is_namespace_indent_item, - raw_lines_no_comments, linenum): - """This method determines if we should apply our namespace indentation check. - - Args: - nesting_state: The current nesting state. - is_namespace_indent_item: If we just put a new class on the stack, True. - If the top of the stack is not a class, or we did not recently - add the class, False. - raw_lines_no_comments: The lines without the comments. - linenum: The current line number we are processing. - - Returns: - True if we should apply our namespace indentation check. Currently, it - only works for classes and namespaces inside of a namespace. - """ - - is_forward_declaration = IsForwardClassDeclaration(raw_lines_no_comments, - linenum) - - if not (is_namespace_indent_item or is_forward_declaration): - return False - - # If we are in a macro, we do not want to check the namespace indentation. - if IsMacroDefinition(raw_lines_no_comments, linenum): - return False - - return IsBlockInNameSpace(nesting_state, is_forward_declaration) - - -# Call this method if the line is directly inside of a namespace. -# If the line above is blank (excluding comments) or the start of -# an inner namespace, it cannot be indented. -def CheckItemIndentationInNamespace(filename, raw_lines_no_comments, linenum, - error): - line = raw_lines_no_comments[linenum] - if Match(r'^\s+', line): - error(filename, linenum, 'runtime/indentation_namespace', 4, - 'Do not indent within a namespace') - - -def ProcessLine(filename, file_extension, clean_lines, line, - include_state, function_state, nesting_state, error, - extra_check_functions=[]): - """Processes a single line in the file. - - Args: - filename: Filename of the file that is being processed. - file_extension: The extension (dot not included) of the file. - clean_lines: An array of strings, each representing a line of the file, - with comments stripped. - line: Number of line being processed. - include_state: An _IncludeState instance in which the headers are inserted. - function_state: A _FunctionState instance which counts function lines, etc. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: A callable to which errors are reported, which takes 4 arguments: - filename, line number, error level, and message - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - raw_lines = clean_lines.raw_lines - ParseNolintSuppressions(filename, raw_lines[line], line, error) - nesting_state.Update(filename, clean_lines, line, error) - CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, - error) - if nesting_state.InAsmBlock(): return - CheckForFunctionLengths(filename, clean_lines, line, function_state, error) - CheckForMultilineCommentsAndStrings(filename, clean_lines, line, error) - CheckStyle(filename, clean_lines, line, file_extension, nesting_state, error) - CheckLanguage(filename, clean_lines, line, file_extension, include_state, - nesting_state, error) - CheckForNonConstReference(filename, clean_lines, line, nesting_state, error) - CheckForNonStandardConstructs(filename, clean_lines, line, - nesting_state, error) - CheckVlogArguments(filename, clean_lines, line, error) - CheckPosixThreading(filename, clean_lines, line, error) - CheckInvalidIncrement(filename, clean_lines, line, error) - CheckMakePairUsesDeduction(filename, clean_lines, line, error) - CheckRedundantVirtual(filename, clean_lines, line, error) - CheckRedundantOverrideOrFinal(filename, clean_lines, line, error) - for check_fn in extra_check_functions: - check_fn(filename, clean_lines, line, error) - -def FlagCxx11Features(filename, clean_lines, linenum, error): - """Flag those c++11 features that we only allow in certain places. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - include = Match(r'\s*#\s*include\s+[<"]([^<"]+)[">]', line) - - # Flag unapproved C++ TR1 headers. - if include and include.group(1).startswith('tr1/'): - error(filename, linenum, 'build/c++tr1', 5, - ('C++ TR1 headers such as <%s> are unapproved.') % include.group(1)) - - # Flag unapproved C++11 headers. - if include and include.group(1) in ('cfenv', - 'condition_variable', - 'fenv.h', - 'future', - 'mutex', - 'thread', - 'chrono', - 'ratio', - 'regex', - 'system_error', - ): - error(filename, linenum, 'build/c++11', 5, - ('<%s> is an unapproved C++11 header.') % include.group(1)) - - # The only place where we need to worry about C++11 keywords and library - # features in preprocessor directives is in macro definitions. - if Match(r'\s*#', line) and not Match(r'\s*#\s*define\b', line): return - - # These are classes and free functions. The classes are always - # mentioned as std::*, but we only catch the free functions if - # they're not found by ADL. They're alphabetical by header. - for top_name in ( - # type_traits - 'alignment_of', - 'aligned_union', - ): - if Search(r'\bstd::%s\b' % top_name, line): - error(filename, linenum, 'build/c++11', 5, - ('std::%s is an unapproved C++11 class or function. Send c-style ' - 'an example of where it would make your code more readable, and ' - 'they may let you use it.') % top_name) - - -def FlagCxx14Features(filename, clean_lines, linenum, error): - """Flag those C++14 features that we restrict. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - include = Match(r'\s*#\s*include\s+[<"]([^<"]+)[">]', line) - - # Flag unapproved C++14 headers. - if include and include.group(1) in ('scoped_allocator', 'shared_mutex'): - error(filename, linenum, 'build/c++14', 5, - ('<%s> is an unapproved C++14 header.') % include.group(1)) - - -def ProcessFileData(filename, file_extension, lines, error, - extra_check_functions=[]): - """Performs lint checks and reports any errors to the given error function. - - Args: - filename: Filename of the file that is being processed. - file_extension: The extension (dot not included) of the file. - lines: An array of strings, each representing a line of the file, with the - last element being empty if the file is terminated with a newline. - error: A callable to which errors are reported, which takes 4 arguments: - filename, line number, error level, and message - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - lines = (['// marker so line numbers and indices both start at 1'] + lines + - ['// marker so line numbers end in a known way']) - - include_state = _IncludeState() - function_state = _FunctionState() - nesting_state = NestingState() - - ResetNolintSuppressions() - - CheckForCopyright(filename, lines, error) - ProcessGlobalSuppresions(lines) - RemoveMultiLineComments(filename, lines, error) - clean_lines = CleansedLines(lines) - - if IsHeaderExtension(file_extension): - CheckForHeaderGuard(filename, clean_lines, error) - - for line in xrange(clean_lines.NumLines()): - ProcessLine(filename, file_extension, clean_lines, line, - include_state, function_state, nesting_state, error, - extra_check_functions) - FlagCxx11Features(filename, clean_lines, line, error) - nesting_state.CheckCompletedBlocks(filename, error) - - CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) - - # Check that the .cc file has included its header if it exists. - if _IsSourceExtension(file_extension): - CheckHeaderFileIncluded(filename, include_state, error) - - # We check here rather than inside ProcessLine so that we see raw - # lines rather than "cleaned" lines. - CheckForBadCharacters(filename, lines, error) - - CheckForNewlineAtEOF(filename, lines, error) - -def ProcessConfigOverrides(filename): - """ Loads the configuration files and processes the config overrides. - - Args: - filename: The name of the file being processed by the linter. - - Returns: - False if the current |filename| should not be processed further. - """ - - abs_filename = os.path.abspath(filename) - cfg_filters = [] - keep_looking = True - while keep_looking: - abs_path, base_name = os.path.split(abs_filename) - if not base_name: - break # Reached the root directory. - - cfg_file = os.path.join(abs_path, "CPPLINT.cfg") - abs_filename = abs_path - if not os.path.isfile(cfg_file): - continue - - try: - with open(cfg_file) as file_handle: - for line in file_handle: - line, _, _ = line.partition('#') # Remove comments. - if not line.strip(): - continue - - name, _, val = line.partition('=') - name = name.strip() - val = val.strip() - if name == 'set noparent': - keep_looking = False - elif name == 'filter': - cfg_filters.append(val) - elif name == 'exclude_files': - # When matching exclude_files pattern, use the base_name of - # the current file name or the directory name we are processing. - # For example, if we are checking for lint errors in /foo/bar/baz.cc - # and we found the .cfg file at /foo/CPPLINT.cfg, then the config - # file's "exclude_files" filter is meant to be checked against "bar" - # and not "baz" nor "bar/baz.cc". - if base_name: - pattern = re.compile(val) - if pattern.match(base_name): - sys.stderr.write('Ignoring "%s": file excluded by "%s". ' - 'File path component "%s" matches ' - 'pattern "%s"\n' % - (filename, cfg_file, base_name, val)) - return False - elif name == 'linelength': - global _line_length - try: - _line_length = int(val) - except ValueError: - sys.stderr.write('Line length must be numeric.') - elif name == 'root': - global _root - _root = val - elif name == 'headers': - ProcessHppHeadersOption(val) - else: - sys.stderr.write( - 'Invalid configuration option (%s) in file %s\n' % - (name, cfg_file)) - - except IOError: - sys.stderr.write( - "Skipping config file '%s': Can't open for reading\n" % cfg_file) - keep_looking = False - - # Apply all the accumulated filters in reverse order (top-level directory - # config options having the least priority). - for filter in reversed(cfg_filters): - _AddFilters(filter) - - return True - - -def ProcessFile(filename, vlevel, extra_check_functions=[]): - """Does google-lint on a single file. - - Args: - filename: The name of the file to parse. - - vlevel: The level of errors to report. Every error of confidence - >= verbose_level will be reported. 0 is a good default. - - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - - _SetVerboseLevel(vlevel) - _BackupFilters() - - if not ProcessConfigOverrides(filename): - _RestoreFilters() - return - - lf_lines = [] - crlf_lines = [] - try: - # Support the UNIX convention of using "-" for stdin. Note that - # we are not opening the file with universal newline support - # (which codecs doesn't support anyway), so the resulting lines do - # contain trailing '\r' characters if we are reading a file that - # has CRLF endings. - # If after the split a trailing '\r' is present, it is removed - # below. - if filename == '-': - lines = codecs.StreamReaderWriter(sys.stdin, - codecs.getreader('utf8'), - codecs.getwriter('utf8'), - 'replace').read().split('\n') - else: - lines = codecs.open(filename, 'r', 'utf8', 'replace').read().split('\n') - - # Remove trailing '\r'. - # The -1 accounts for the extra trailing blank line we get from split() - for linenum in range(len(lines) - 1): - if lines[linenum].endswith('\r'): - lines[linenum] = lines[linenum].rstrip('\r') - crlf_lines.append(linenum + 1) - else: - lf_lines.append(linenum + 1) - - except IOError: - sys.stderr.write( - "Skipping input '%s': Can't open for reading\n" % filename) - _RestoreFilters() - return - - # Note, if no dot is found, this will give the entire filename as the ext. - file_extension = filename[filename.rfind('.') + 1:] - - # When reading from stdin, the extension is unknown, so no cpplint tests - # should rely on the extension. - if filename != '-' and file_extension not in _valid_extensions: - sys.stderr.write('Ignoring %s; not a valid file name ' - '(%s)\n' % (filename, ', '.join(_valid_extensions))) - else: - ProcessFileData(filename, file_extension, lines, Error, - extra_check_functions) - - # If end-of-line sequences are a mix of LF and CR-LF, issue - # warnings on the lines with CR. - # - # Don't issue any warnings if all lines are uniformly LF or CR-LF, - # since critique can handle these just fine, and the style guide - # doesn't dictate a particular end of line sequence. - # - # We can't depend on os.linesep to determine what the desired - # end-of-line sequence should be, since that will return the - # server-side end-of-line sequence. - if lf_lines and crlf_lines: - # Warn on every line with CR. An alternative approach might be to - # check whether the file is mostly CRLF or just LF, and warn on the - # minority, we bias toward LF here since most tools prefer LF. - for linenum in crlf_lines: - Error(filename, linenum, 'whitespace/newline', 1, - 'Unexpected \\r (^M) found; better to use only \\n') - - sys.stdout.write('Done processing %s\n' % filename) - _RestoreFilters() - - -def PrintUsage(message): - """Prints a brief usage string and exits, optionally with an error message. - - Args: - message: The optional error message. - """ - sys.stderr.write(_USAGE) - if message: - sys.exit('\nFATAL ERROR: ' + message) - else: - sys.exit(1) - - -def PrintCategories(): - """Prints a list of all the error-categories used by error messages. - - These are the categories used to filter messages via --filter. - """ - sys.stderr.write(''.join(' %s\n' % cat for cat in _ERROR_CATEGORIES)) - sys.exit(0) - - -def ParseArguments(args): - """Parses the command line arguments. - - This may set the output format and verbosity level as side-effects. - - Args: - args: The command line arguments: - - Returns: - The list of filenames to lint. - """ - try: - (opts, filenames) = getopt.getopt(args, '', ['help', 'output=', 'verbose=', - 'counting=', - 'filter=', - 'root=', - 'linelength=', - 'extensions=', - 'headers=']) - except getopt.GetoptError: - PrintUsage('Invalid arguments.') - - verbosity = _VerboseLevel() - output_format = _OutputFormat() - filters = '' - counting_style = '' - - for (opt, val) in opts: - if opt == '--help': - PrintUsage(None) - elif opt == '--output': - if val not in ('emacs', 'vs7', 'eclipse'): - PrintUsage('The only allowed output formats are emacs, vs7 and eclipse.') - output_format = val - elif opt == '--verbose': - verbosity = int(val) - elif opt == '--filter': - filters = val - if not filters: - PrintCategories() - elif opt == '--counting': - if val not in ('total', 'toplevel', 'detailed'): - PrintUsage('Valid counting options are total, toplevel, and detailed') - counting_style = val - elif opt == '--root': - global _root - _root = val - elif opt == '--linelength': - global _line_length - try: - _line_length = int(val) - except ValueError: - PrintUsage('Line length must be digits.') - elif opt == '--extensions': - global _valid_extensions - try: - _valid_extensions = set(val.split(',')) - except ValueError: - PrintUsage('Extensions must be comma seperated list.') - elif opt == '--headers': - ProcessHppHeadersOption(val) - - if not filenames: - PrintUsage('No files were specified.') - - _SetOutputFormat(output_format) - _SetVerboseLevel(verbosity) - _SetFilters(filters) - _SetCountingStyle(counting_style) - - return filenames - - -def main(): - filenames = ParseArguments(sys.argv[1:]) - - # Change stderr to write with replacement characters so we don't die - # if we try to print something containing non-ASCII characters. - sys.stderr = codecs.StreamReaderWriter(sys.stderr, - codecs.getreader('utf8'), - codecs.getwriter('utf8'), - 'replace') - - _cpplint_state.ResetErrorCounts() - for filename in filenames: - ProcessFile(filename, _cpplint_state.verbose_level) - _cpplint_state.PrintErrorCounts() - - sys.exit(_cpplint_state.error_count > 0) - - -if __name__ == '__main__': - main() diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/cpplint.sh b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/cpplint.sh deleted file mode 100644 index daf45aa2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/cpplint.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -export PATH=/cygdrive/c/Python27:/cygdrive/c/Python27/DLLs:/cygdrive/c/Python27/Scripts:$PATH -echo $PATH -python cpplint.py --filter=-build/include,-runtime/references,-build/header_guard ../src/*.* ../src/*/*.* 2>cpplint.txt \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/cpplint.txt b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/cpplint.txt deleted file mode 100644 index 696803d1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/cpplint.txt +++ /dev/null @@ -1 +0,0 @@ -../src/FatLib/FatLibConfig.h:137: Lines should be <= 80 characters long [whitespace/line_length] [2] diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h.html deleted file mode 100644 index df89b2fc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/ArduinoFiles.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
ArduinoFiles.h File Reference
-
-
- -

PrintFile class. -More...

-
#include "FatLibConfig.h"
-#include "FatFile.h"
-#include <limits.h>
-
-Include dependency graph for ArduinoFiles.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
- - - - - - - -

-Classes

class  File
 Arduino SD.h style File API. More...
 
class  PrintFile
 FatFile with Print. More...
 
- - - - - -

-Macros

#define FILE_READ   O_RDONLY
 
#define FILE_WRITE   (O_RDWR | O_CREAT | O_AT_END)
 
-

Detailed Description

-

PrintFile class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ FILE_READ

- -
-
- - - - -
#define FILE_READ   O_RDONLY
-
-

Arduino SD.h style flag for open for read.

- -
-
- -

◆ FILE_WRITE

- -
-
- - - - -
#define FILE_WRITE   (O_RDWR | O_CREAT | O_AT_END)
-
-

Arduino SD.h style flag for open at EOF for read/write with create.

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h__dep__incl.png deleted file mode 100644 index 6e72f2d9..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h__incl.png deleted file mode 100644 index 7dd58c58..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_files_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h.html deleted file mode 100644 index c718605c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/ArduinoStream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
ArduinoStream.h File Reference
-
-
- -

ArduinoInStream and ArduinoOutStream classes. -More...

-
#include "FatLibConfig.h"
-#include "bufstream.h"
-
-Include dependency graph for ArduinoStream.h:
-
-
- - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
- - - - - - - -

-Classes

class  ArduinoInStream
 Input stream for Arduino Stream objects. More...
 
class  ArduinoOutStream
 Output stream for Arduino Print objects. More...
 
-

Detailed Description

-

ArduinoInStream and ArduinoOutStream classes.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h__dep__incl.png deleted file mode 100644 index c510f4c5..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h__incl.png deleted file mode 100644 index d780e459..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_arduino_stream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h.html deleted file mode 100644 index 750aa630..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/BlockDriver.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
BlockDriver.h File Reference
-
-
- -

Define block driver. -More...

-
#include "FatLib/BaseBlockDriver.h"
-#include "SdCard/SdSpiCard.h"
-
-Include dependency graph for BlockDriver.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - -
-
- - - -

-Typedefs

typedef SdSpiCard BlockDriver
 
-

Detailed Description

-

Define block driver.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Typedef Documentation

- -

◆ BlockDriver

- -
-
- - - - -
typedef SdSpiCard BlockDriver
-
-

typedef for BlockDriver

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h__dep__incl.png deleted file mode 100644 index b12fc564..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h__incl.png deleted file mode 100644 index bd829946..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_block_driver_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h.html deleted file mode 100644 index 3402ced6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatFile.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatFile.h File Reference
-
-
- -

FatFile class. -More...

-
#include <string.h>
-#include <stddef.h>
-#include <limits.h>
-#include "FatLibConfig.h"
-#include "FatApiConstants.h"
-#include "FatStructs.h"
-#include "FatVolume.h"
-
-Include dependency graph for FatFile.h:
-
-
- - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - -
-
- - - - - - - - - - -

-Classes

class  FatFile
 Basic file class. More...
 
struct  FatPos_t
 Internal type for file position - do not use in user apps. More...
 
struct  fname_t
 Internal type for Short File Name - do not use in user apps. More...
 
- - - - - - - - - - - -

-Macros

#define isDirSeparator(c)   ((c) == '/')
 
#define pgm_read_byte(addr)   (*(const unsigned char*)(addr))
 
#define pgm_read_word(addr)   (*(const uint16_t*)(addr))
 
#define PROGMEM
 
#define PSTR(x)   (x)
 
- - - - - - - - - - - -

-Variables

const uint8_t FNAME_FLAG_LC_BASE = DIR_NT_LC_BASE
 
const uint8_t FNAME_FLAG_LC_EXT = DIR_NT_LC_EXT
 
const uint8_t FNAME_FLAG_LOST_CHARS = 0X01
 
const uint8_t FNAME_FLAG_MIXED_CASE = 0X02
 
const uint8_t FNAME_FLAG_NEED_LFN
 
-

Detailed Description

-

FatFile class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ isDirSeparator

- -
-
- - - - - - - - -
#define isDirSeparator( c)   ((c) == '/')
-
-

Expression for path name separator.

- -
-
- -

◆ pgm_read_byte

- -
-
- - - - - - - - -
#define pgm_read_byte( addr)   (*(const unsigned char*)(addr))
-
-

read 8-bits from flash for ARM

- -
-
- -

◆ pgm_read_word

- -
-
- - - - - - - - -
#define pgm_read_word( addr)   (*(const uint16_t*)(addr))
-
-

read 16-bits from flash for ARM

- -
-
- -

◆ PROGMEM

- -
-
- - - - -
#define PROGMEM
-
-

store in flash for ARM

- -
-
- -

◆ PSTR

- -
-
- - - - - - - - -
#define PSTR( x)   (x)
-
-

store literal string in flash for ARM

- -
-
-

Variable Documentation

- -

◆ FNAME_FLAG_LC_BASE

- -
-
- - - - -
const uint8_t FNAME_FLAG_LC_BASE = DIR_NT_LC_BASE
-
-

Filename base-name is all lower case

- -
-
- -

◆ FNAME_FLAG_LC_EXT

- -
-
- - - - -
const uint8_t FNAME_FLAG_LC_EXT = DIR_NT_LC_EXT
-
-

Filename extension is all lower case.

- -
-
- -

◆ FNAME_FLAG_LOST_CHARS

- -
-
- - - - -
const uint8_t FNAME_FLAG_LOST_CHARS = 0X01
-
-

Derived from a LFN with loss or conversion of characters.

- -
-
- -

◆ FNAME_FLAG_MIXED_CASE

- -
-
- - - - -
const uint8_t FNAME_FLAG_MIXED_CASE = 0X02
-
-

Base-name or extension has mixed case.

- -
-
- -

◆ FNAME_FLAG_NEED_LFN

- -
-
- - - - -
const uint8_t FNAME_FLAG_NEED_LFN
-
-Initial value:
=
const uint8_t FNAME_FLAG_MIXED_CASE
Definition: FatFile.h:97
-
const uint8_t FNAME_FLAG_LOST_CHARS
Definition: FatFile.h:95
-

LFN entries are required for file name.

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h__dep__incl.png deleted file mode 100644 index 82fa8871..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h__incl.png deleted file mode 100644 index d7558619..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_system_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_system_8h.html deleted file mode 100644 index 3083e800..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_system_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatFileSystem.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatFileSystem.h File Reference
-
-
- -

FatFileSystem class. -More...

-
#include "FatVolume.h"
-#include "FatFile.h"
-#include "ArduinoFiles.h"
-
-Include dependency graph for FatFileSystem.h:
-
-
- - - - - - - - - - - -
-
- - - - -

-Classes

class  FatFileSystem
 Integration class for the FatLib library. More...
 
-

Detailed Description

-

FatFileSystem class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_system_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_system_8h__incl.png deleted file mode 100644 index 7c830bc9..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_file_system_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h.html deleted file mode 100644 index ecf5feb2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatLibConfig.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatLibConfig.h File Reference
-
-
- -

configuration definitions -More...

-
#include <stdint.h>
-#include "SdFatConfig.h"
-#include <Arduino.h>
-
-Include dependency graph for FatLibConfig.h:
-
-
- - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - -

-Macros

#define DESTRUCTOR_CLOSES_FILE   0
 
#define ENABLE_ARDUINO_FEATURES   1
 
#define ENDL_CALLS_FLUSH   0
 
#define FAT12_SUPPORT   0
 
#define MAINTAIN_FREE_CLUSTER_COUNT   0
 
#define USE_LONG_FILE_NAMES   1
 
#define USE_MULTI_BLOCK_IO   1
 
#define USE_SEPARATE_FAT_CACHE   0
 
-

Detailed Description

-

configuration definitions

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ DESTRUCTOR_CLOSES_FILE

- -
-
- - - - -
#define DESTRUCTOR_CLOSES_FILE   0
-
-

Set DESTRUCTOR_CLOSES_FILE non-zero to close a file in its destructor.

-

Causes use of lots of heap in ARM.

- -
-
- -

◆ ENABLE_ARDUINO_FEATURES

- -
-
- - - - -
#define ENABLE_ARDUINO_FEATURES   1
-
-

Enable Extra features for Arduino.

- -
-
- -

◆ ENDL_CALLS_FLUSH

- -
-
- - - - -
#define ENDL_CALLS_FLUSH   0
-
-

Call flush for endl if ENDL_CALLS_FLUSH is non-zero

-

The standard for iostreams is to call flush. This is very costly for SdFat. Each call to flush causes 2048 bytes of I/O to the SD.

-

SdFat has a single 512 byte buffer for I/O so it must write the current data block to the SD, read the directory block from the SD, update the directory entry, write the directory block to the SD and read the data block back into the buffer.

-

The SD flash memory controller is not designed for this many rewrites so performance may be reduced by more than a factor of 100.

-

If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force all data to be written to the SD.

- -
-
- -

◆ FAT12_SUPPORT

- -
-
- - - - -
#define FAT12_SUPPORT   0
-
-

Allow FAT12 volumes if FAT12_SUPPORT is non-zero. FAT12 has not been well tested.

- -
-
- -

◆ MAINTAIN_FREE_CLUSTER_COUNT

- -
-
- - - - -
#define MAINTAIN_FREE_CLUSTER_COUNT   0
-
-

Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters updated. This will increase the speed of the freeClusterCount() call after the first call. Extra flash will be required.

- -
-
- -

◆ USE_LONG_FILE_NAMES

- -
-
- - - - -
#define USE_LONG_FILE_NAMES   1
-
-

Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). Long File Name are limited to a maximum length of 255 characters.

-

This implementation allows 7-bit characters in the range 0X20 to 0X7E. The following characters are not allowed:

-

< (less than)

-

(greater than)

-
-

: (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark)

    -
  • (asterisk)
  • -
- -
-
- -

◆ USE_MULTI_BLOCK_IO

- -
-
- - - - -
#define USE_MULTI_BLOCK_IO   1
-
-

Set USE_MULTI_BLOCK_IO non-zero to use multi-block SD read/write.

-

Don't use mult-block read/write on small AVR boards.

- -
-
- -

◆ USE_SEPARATE_FAT_CACHE

- -
-
- - - - -
#define USE_SEPARATE_FAT_CACHE   0
-
-

Set USE_SEPARATE_FAT_CACHE non-zero to use a second 512 byte cache for FAT table entries. Improves performance for large writes that are not a multiple of 512 bytes.

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h__dep__incl.png deleted file mode 100644 index e0f6c08c..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h__incl.png deleted file mode 100644 index 630dabfa..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_lib_config_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_structs_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_structs_8h.html deleted file mode 100644 index fdab6f66..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_structs_8h.html +++ /dev/null @@ -1,1379 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatStructs.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatStructs.h File Reference
-
-
- -

FAT file structures. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  biosParmBlock
 BIOS parameter block. More...
 
struct  directoryEntry
 FAT short directory entry. More...
 
struct  fat32_boot
 Boot sector for a FAT32 volume. More...
 
struct  fat32_fsinfo
 FSINFO sector for a FAT32 volume. More...
 
struct  fat_boot
 Boot sector for a FAT12/FAT16 volume. More...
 
struct  longDirectoryEntry
 FAT long directory entry. More...
 
struct  masterBootRecord
 Master Boot Record. More...
 
struct  partitionTable
 MBR partition table entry. More...
 
- - - - - - - - - - - - - - - - - -

-Typedefs

typedef struct biosParmBlock bpb_t
 
typedef struct directoryEntry dir_t
 
typedef struct fat32_boot fat32_boot_t
 
typedef struct fat32_fsinfo fat32_fsinfo_t
 
typedef struct fat_boot fat_boot_t
 
typedef struct longDirectoryEntry ldir_t
 
typedef struct masterBootRecord mbr_t
 
typedef struct partitionTable part_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

static uint8_t DIR_IS_FILE (const dir_t *dir)
 
static uint8_t DIR_IS_FILE_OR_SUBDIR (const dir_t *dir)
 
static uint8_t DIR_IS_HIDDEN (const dir_t *dir)
 
static uint8_t DIR_IS_LONG_NAME (const dir_t *dir)
 
static uint8_t DIR_IS_SUBDIR (const dir_t *dir)
 
static uint8_t DIR_IS_SYSTEM (const dir_t *dir)
 
static uint16_t FAT_DATE (uint16_t year, uint8_t month, uint8_t day)
 
static uint8_t FAT_DAY (uint16_t fatDate)
 
static uint8_t FAT_HOUR (uint16_t fatTime)
 
static uint8_t FAT_MINUTE (uint16_t fatTime)
 
static uint8_t FAT_MONTH (uint16_t fatDate)
 
static uint8_t FAT_SECOND (uint16_t fatTime)
 
static uint16_t FAT_TIME (uint8_t hour, uint8_t minute, uint8_t second)
 
static uint16_t FAT_YEAR (uint16_t fatDate)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

const uint8_t BOOTSIG0 = 0X55
 
const uint8_t BOOTSIG1 = 0XAA
 
const uint8_t DIR_ATT_ARCHIVE = 0X20
 
const uint8_t DIR_ATT_DEFINED_BITS = 0X3F
 
const uint8_t DIR_ATT_DIRECTORY = 0X10
 
const uint8_t DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY)
 
const uint8_t DIR_ATT_HIDDEN = 0X02
 
const uint8_t DIR_ATT_LONG_NAME = 0X0F
 
const uint8_t DIR_ATT_LONG_NAME_MASK = 0X3F
 
const uint8_t DIR_ATT_READ_ONLY = 0X01
 
const uint8_t DIR_ATT_SYSTEM = 0X04
 
const uint8_t DIR_ATT_VOLUME_ID = 0X08
 
const uint8_t DIR_NAME_0XE5 = 0X05
 
const uint8_t DIR_NAME_DELETED = 0XE5
 
const uint8_t DIR_NAME_FREE = 0X00
 
const uint8_t DIR_NT_LC_BASE = 0X08
 
const uint8_t DIR_NT_LC_EXT = 0X10
 
const uint8_t EXTENDED_BOOT_SIG = 0X29
 
const uint16_t FAT12EOC = 0XFFF
 
const uint16_t FAT12EOC_MIN = 0XFF8
 
const uint16_t FAT16EOC = 0XFFFF
 
const uint16_t FAT16EOC_MIN = 0XFFF8
 
const uint32_t FAT32EOC = 0X0FFFFFFF
 
const uint32_t FAT32EOC_MIN = 0X0FFFFFF8
 
const uint32_t FAT32MASK = 0X0FFFFFFF
 
const uint16_t FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1
 
const uint16_t FAT_DEFAULT_TIME = (1 << 11)
 
const uint32_t FSINFO_LEAD_SIG = 0x41615252
 
const uint32_t FSINFO_STRUCT_SIG = 0x61417272
 
const uint8_t LDIR_NAME1_DIM = 5
 
const uint8_t LDIR_NAME2_DIM = 6
 
const uint8_t LDIR_NAME3_DIM = 2
 
const uint8_t LDIR_ORD_LAST_LONG_ENTRY = 0X40
 
-

Detailed Description

-

FAT file structures.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Typedef Documentation

- -

◆ bpb_t

- -
-
- - - - -
typedef struct biosParmBlock bpb_t
-
-

Type name for biosParmBlock

- -
-
- -

◆ dir_t

- -
-
- - - - -
typedef struct directoryEntry dir_t
-
-

Type name for directoryEntry

- -
-
- -

◆ fat32_boot_t

- -
-
- - - - -
typedef struct fat32_boot fat32_boot_t
-
-

Type name for FAT32 Boot Sector

- -
-
- -

◆ fat32_fsinfo_t

- -
-
- - - - -
typedef struct fat32_fsinfo fat32_fsinfo_t
-
-

Type name for FAT32 FSINFO Sector

- -
-
- -

◆ fat_boot_t

- -
-
- - - - -
typedef struct fat_boot fat_boot_t
-
-

Type name for FAT Boot Sector

- -
-
- -

◆ ldir_t

- -
-
- - - - -
typedef struct longDirectoryEntry ldir_t
-
-

Type name for longDirectoryEntry

- -
-
- -

◆ mbr_t

- -
-
- - - - -
typedef struct masterBootRecord mbr_t
-
-

Type name for masterBootRecord

- -
-
- -

◆ part_t

- -
-
- - - - -
typedef struct partitionTable part_t
-
-

Type name for partitionTable

- -
-
-

Function Documentation

- -

◆ DIR_IS_FILE()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_FILE (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is for a file

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for a normal file else false.
- -
-
- -

◆ DIR_IS_FILE_OR_SUBDIR()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_FILE_OR_SUBDIR (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is for a file or subdirectory

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for a normal file or subdirectory else false.
- -
-
- -

◆ DIR_IS_HIDDEN()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_HIDDEN (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is hidden

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is hidden else false.
- -
-
- -

◆ DIR_IS_LONG_NAME()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_LONG_NAME (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is part of a long name

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for part of a long name else false.
- -
-
- -

◆ DIR_IS_SUBDIR()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_SUBDIR (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is for a subdirectory

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for a subdirectory else false.
- -
-
- -

◆ DIR_IS_SYSTEM()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_SYSTEM (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is system type

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is system else false.
- -
-
- -

◆ FAT_DATE()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static uint16_t FAT_DATE (uint16_t year,
uint8_t month,
uint8_t day 
)
-
-inlinestatic
-
-

date field for FAT directory entry

Parameters
- - - - -
[in]year[1980,2107]
[in]month[1,12]
[in]day[1,31]
-
-
-
Returns
Packed date for dir_t entry.
- -
-
- -

◆ FAT_DAY()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_DAY (uint16_t fatDate)
-
-inlinestatic
-
-

day part of FAT directory date field

Parameters
- - -
[in]fatDateDate in packed dir format.
-
-
-
Returns
Extracted day [1,31]
- -
-
- -

◆ FAT_HOUR()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_HOUR (uint16_t fatTime)
-
-inlinestatic
-
-

hour part of FAT directory time field

Parameters
- - -
[in]fatTimeTime in packed dir format.
-
-
-
Returns
Extracted hour [0,23]
- -
-
- -

◆ FAT_MINUTE()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_MINUTE (uint16_t fatTime)
-
-inlinestatic
-
-

minute part of FAT directory time field

Parameters
- - -
[in]fatTimeTime in packed dir format.
-
-
-
Returns
Extracted minute [0,59]
- -
-
- -

◆ FAT_MONTH()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_MONTH (uint16_t fatDate)
-
-inlinestatic
-
-

month part of FAT directory date field

Parameters
- - -
[in]fatDateDate in packed dir format.
-
-
-
Returns
Extracted month [1,12]
- -
-
- -

◆ FAT_SECOND()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_SECOND (uint16_t fatTime)
-
-inlinestatic
-
-

second part of FAT directory time field Note second/2 is stored in packed time.

-
Parameters
- - -
[in]fatTimeTime in packed dir format.
-
-
-
Returns
Extracted second [0,58]
- -
-
- -

◆ FAT_TIME()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static uint16_t FAT_TIME (uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inlinestatic
-
-

time field for FAT directory entry

Parameters
- - - - -
[in]hour[0,23]
[in]minute[0,59]
[in]second[0,59]
-
-
-
Returns
Packed time for dir_t entry.
- -
-
- -

◆ FAT_YEAR()

- -
-
- - - - - -
- - - - - - - - -
static uint16_t FAT_YEAR (uint16_t fatDate)
-
-inlinestatic
-
-

year part of FAT directory date field

Parameters
- - -
[in]fatDateDate in packed dir format.
-
-
-
Returns
Extracted year [1980,2107]
- -
-
-

Variable Documentation

- -

◆ BOOTSIG0

- -
-
- - - - -
const uint8_t BOOTSIG0 = 0X55
-
-

Value for byte 510 of boot block or MBR

- -
-
- -

◆ BOOTSIG1

- -
-
- - - - -
const uint8_t BOOTSIG1 = 0XAA
-
-

Value for byte 511 of boot block or MBR

- -
-
- -

◆ DIR_ATT_ARCHIVE

- -
-
- - - - -
const uint8_t DIR_ATT_ARCHIVE = 0X20
-
-

Old DOS archive bit for backup support

- -
-
- -

◆ DIR_ATT_DEFINED_BITS

- -
-
- - - - -
const uint8_t DIR_ATT_DEFINED_BITS = 0X3F
-
-

defined attribute bits

- -
-
- -

◆ DIR_ATT_DIRECTORY

- -
-
- - - - -
const uint8_t DIR_ATT_DIRECTORY = 0X10
-
-

Entry is for a directory

- -
-
- -

◆ DIR_ATT_FILE_TYPE_MASK

- -
-
- - - - -
const uint8_t DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY)
-
-

Mask for file/subdirectory tests

- -
-
- -

◆ DIR_ATT_HIDDEN

- -
-
- - - - -
const uint8_t DIR_ATT_HIDDEN = 0X02
-
-

File should e hidden in directory listings

- -
-
- -

◆ DIR_ATT_LONG_NAME

- -
-
- - - - -
const uint8_t DIR_ATT_LONG_NAME = 0X0F
-
-

Test value for long name entry. Test is (d->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME.

- -
-
- -

◆ DIR_ATT_LONG_NAME_MASK

- -
-
- - - - -
const uint8_t DIR_ATT_LONG_NAME_MASK = 0X3F
-
-

Test mask for long name entry

- -
-
- -

◆ DIR_ATT_READ_ONLY

- -
-
- - - - -
const uint8_t DIR_ATT_READ_ONLY = 0X01
-
-

file is read-only

- -
-
- -

◆ DIR_ATT_SYSTEM

- -
-
- - - - -
const uint8_t DIR_ATT_SYSTEM = 0X04
-
-

Entry is for a system file

- -
-
- -

◆ DIR_ATT_VOLUME_ID

- -
-
- - - - -
const uint8_t DIR_ATT_VOLUME_ID = 0X08
-
-

Directory entry contains the volume label

- -
-
- -

◆ DIR_NAME_0XE5

- -
-
- - - - -
const uint8_t DIR_NAME_0XE5 = 0X05
-
-

escape for name[0] = 0XE5

- -
-
- -

◆ DIR_NAME_DELETED

- -
-
- - - - -
const uint8_t DIR_NAME_DELETED = 0XE5
-
-

name[0] value for entry that is free after being "deleted"

- -
-
- -

◆ DIR_NAME_FREE

- -
-
- - - - -
const uint8_t DIR_NAME_FREE = 0X00
-
-

name[0] value for entry that is free and no allocated entries follow

- -
-
- -

◆ DIR_NT_LC_BASE

- -
-
- - - - -
const uint8_t DIR_NT_LC_BASE = 0X08
-
-

Filename base-name is all lower case

- -
-
- -

◆ DIR_NT_LC_EXT

- -
-
- - - - -
const uint8_t DIR_NT_LC_EXT = 0X10
-
-

Filename extension is all lower case.

- -
-
- -

◆ EXTENDED_BOOT_SIG

- -
-
- - - - -
const uint8_t EXTENDED_BOOT_SIG = 0X29
-
-

Value for bootSignature field int FAT/FAT32 boot sector

- -
-
- -

◆ FAT12EOC

- -
-
- - - - -
const uint16_t FAT12EOC = 0XFFF
-
-

FAT12 end of chain value used by Microsoft.

- -
-
- -

◆ FAT12EOC_MIN

- -
-
- - - - -
const uint16_t FAT12EOC_MIN = 0XFF8
-
-

Minimum value for FAT12 EOC. Use to test for EOC.

- -
-
- -

◆ FAT16EOC

- -
-
- - - - -
const uint16_t FAT16EOC = 0XFFFF
-
-

FAT16 end of chain value used by Microsoft.

- -
-
- -

◆ FAT16EOC_MIN

- -
-
- - - - -
const uint16_t FAT16EOC_MIN = 0XFFF8
-
-

Minimum value for FAT16 EOC. Use to test for EOC.

- -
-
- -

◆ FAT32EOC

- -
-
- - - - -
const uint32_t FAT32EOC = 0X0FFFFFFF
-
-

FAT32 end of chain value used by Microsoft.

- -
-
- -

◆ FAT32EOC_MIN

- -
-
- - - - -
const uint32_t FAT32EOC_MIN = 0X0FFFFFF8
-
-

Minimum value for FAT32 EOC. Use to test for EOC.

- -
-
- -

◆ FAT32MASK

- -
-
- - - - -
const uint32_t FAT32MASK = 0X0FFFFFFF
-
-

Mask a for FAT32 entry. Entries are 28 bits.

- -
-
- -

◆ FAT_DEFAULT_DATE

- -
-
- - - - -
const uint16_t FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1
-
-

Default date for file timestamps is 1 Jan 2000

- -
-
- -

◆ FAT_DEFAULT_TIME

- -
-
- - - - -
const uint16_t FAT_DEFAULT_TIME = (1 << 11)
-
-

Default time for file timestamp is 1 am

- -
-
- -

◆ FSINFO_LEAD_SIG

- -
-
- - - - -
const uint32_t FSINFO_LEAD_SIG = 0x41615252
-
-

Lead signature for a FSINFO sector

- -
-
- -

◆ FSINFO_STRUCT_SIG

- -
-
- - - - -
const uint32_t FSINFO_STRUCT_SIG = 0x61417272
-
-

Struct signature for a FSINFO sector

- -
-
- -

◆ LDIR_NAME1_DIM

- -
-
- - - - -
const uint8_t LDIR_NAME1_DIM = 5
-
-

Dimension of first name field in long directory entry

- -
-
- -

◆ LDIR_NAME2_DIM

- -
-
- - - - -
const uint8_t LDIR_NAME2_DIM = 6
-
-

Dimension of first name field in long directory entry

- -
-
- -

◆ LDIR_NAME3_DIM

- -
-
- - - - -
const uint8_t LDIR_NAME3_DIM = 2
-
-

Dimension of first name field in long directory entry

- -
-
- -

◆ LDIR_ORD_LAST_LONG_ENTRY

- -
-
- - - - -
const uint8_t LDIR_ORD_LAST_LONG_ENTRY = 0X40
-
-

Ord mast that indicates the entry is the last long dir entry in a set of long dir entries. All valid sets of long dir entries must begin with an entry having this mask.

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_structs_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_structs_8h__dep__incl.png deleted file mode 100644 index ca4de392..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_structs_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h.html deleted file mode 100644 index a3805ad1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatVolume.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatVolume.h File Reference
-
-
- -

FatVolume class. -More...

-
#include <stddef.h>
-#include "FatLibConfig.h"
-#include "FatStructs.h"
-#include "BlockDriver.h"
-
-Include dependency graph for FatVolume.h:
-
-
- - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - -
-
- - - - - - - - - - -

-Classes

union  cache_t
 Cache for an raw data block. More...
 
class  FatCache
 Block cache. More...
 
class  FatVolume
 Access FAT16 and FAT32 volumes on raw file devices. More...
 
- - - -

-Typedefs

typedef Print print_t
 
-

Detailed Description

-

FatVolume class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Typedef Documentation

- -

◆ print_t

- -
-
- - - - -
typedef Print print_t
-
-

Use Print for Arduino

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h__dep__incl.png deleted file mode 100644 index 0a31b33a..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h__incl.png deleted file mode 100644 index 04bb7313..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_fat_volume_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_free_stack_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_free_stack_8h.html deleted file mode 100644 index 0c0ea7e0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_free_stack_8h.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FreeStack.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FreeStack.h File Reference
-
-
- -

FreeStack() function. -More...

- - - - -

-Functions

static int FreeStack ()
 
- - - - - -

-Variables

char * __brkval
 
char __bss_end
 
-

Detailed Description

-

FreeStack() function.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Function Documentation

- -

◆ FreeStack()

- -
-
- - - - - -
- - - - - - - -
static int FreeStack ()
-
-static
-
-

Amount of free stack space.

Returns
The number of free bytes.
- -
-
-

Variable Documentation

- -

◆ __brkval

- -
-
- - - - -
char* __brkval
-
-

boundary between stack and heap.

- -
-
- -

◆ __bss_end

- -
-
- - - - -
char __bss_end
-
-

End of bss section.

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_minimum_serial_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_minimum_serial_8h.html deleted file mode 100644 index 8611e5a0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_minimum_serial_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/MinimumSerial.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
MinimumSerial.h File Reference
-
-
- -

Minimal AVR Serial driver. -More...

-
#include "SysCall.h"
-
-Include dependency graph for MinimumSerial.h:
-
-
- - - -
-
- - - - -

-Classes

class  MinimumSerial
 mini serial class for the SdFat library. More...
 
-

Detailed Description

-

Minimal AVR Serial driver.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_minimum_serial_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_minimum_serial_8h__incl.png deleted file mode 100644 index b7fe5cb8..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_minimum_serial_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_8h.html deleted file mode 100644 index a5954009..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_8h.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdFat.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SdFat.h File Reference
-
-
- -

SdFat class. -More...

-
#include "SysCall.h"
-#include "BlockDriver.h"
-#include "FatLib/FatLib.h"
-#include "SdCard/SdioCard.h"
-
-Include dependency graph for SdFat.h:
-
-
- - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

class  Sd2Card
 Raw access to SD and SDHC card using default SPI library. More...
 
class  SdBaseFile
 Class for backward compatibility. More...
 
class  SdFat
 Main file system class for SdFat library. More...
 
class  SdFatEX
 SdFat class with extended SD I/O. More...
 
class  SdFatSdio
 SdFat class using SDIO. More...
 
class  SdFatSdioEX
 SdFat class using SDIO. More...
 
class  SdFatSoftSpi< MisoPin, MosiPin, SckPin >
 SdFat class using software SPI. More...
 
class  SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >
 SdFat class using software SPI and extended SD I/O. More...
 
class  SdFile
 Class for backward compatibility. More...
 
class  SdFileSystem< SdDriverClass >
 Virtual base class for SdFat library. More...
 
- - - -

-Macros

#define SD_FAT_VERSION   "1.0.11"
 
-

Detailed Description

-

SdFat class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ SD_FAT_VERSION

- -
-
- - - - -
#define SD_FAT_VERSION   "1.0.11"
-
-

SdFat version

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_8h__incl.png deleted file mode 100644 index e5f56148..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h.html deleted file mode 100644 index 7f47cf79..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdFatConfig.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SdFatConfig.h File Reference
-
-
- -

configuration definitions -More...

-
#include <Arduino.h>
-#include <stdint.h>
-
-Include dependency graph for SdFatConfig.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

#define CHECK_FLASH_PROGRAMMING   1
 
#define DESTRUCTOR_CLOSES_FILE   0
 
#define ENABLE_EXTENDED_TRANSFER_CLASS   0
 
#define ENABLE_SDIO_CLASS   0
 
#define ENABLE_SOFTWARE_SPI_CLASS   0
 
#define ENDL_CALLS_FLUSH   0
 
#define FAT12_SUPPORT   0
 
#define IMPLEMENT_SPI_PORT_SELECTION   0
 
#define INCLUDE_SDIOS   1
 
#define MAINTAIN_FREE_CLUSTER_COUNT   0
 
#define SD_HAS_CUSTOM_SPI   0
 
#define USE_FCNTL_H   0
 
#define USE_LONG_FILE_NAMES   1
 
#define USE_MULTI_BLOCK_IO   1
 
#define USE_SD_CRC   0
 
#define USE_SEPARATE_FAT_CACHE   0
 
#define USE_STANDARD_SPI_LIBRARY   0
 
#define WDT_YIELD_TIME_MICROS   0
 
-

Detailed Description

-

configuration definitions

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ CHECK_FLASH_PROGRAMMING

- -
-
- - - - -
#define CHECK_FLASH_PROGRAMMING   1
-
-

If CHECK_FLASH_PROGRAMMING is zero, overlap of single sector flash programming and other operations will be allowed for faster write performance.

-

Some cards will not sleep in low power mode unless CHECK_FLASH_PROGRAMMING is non-zero.

- -
-
- -

◆ DESTRUCTOR_CLOSES_FILE

- -
-
- - - - -
#define DESTRUCTOR_CLOSES_FILE   0
-
-

Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor.

-

Causes use of lots of heap in ARM.

- -
-
- -

◆ ENABLE_EXTENDED_TRANSFER_CLASS

- -
-
- - - - -
#define ENABLE_EXTENDED_TRANSFER_CLASS   0
-
-

If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, the class SdFatSoftSpiEX will be defined.

-

These classes used extended multi-block SD I/O for better performance. the SPI bus may not be shared with other devices in this mode.

- -
-
- -

◆ ENABLE_SDIO_CLASS

- -
-
- - - - -
#define ENABLE_SDIO_CLASS   0
-
-

Enable SDIO driver if available.

- -
-
- -

◆ ENABLE_SOFTWARE_SPI_CLASS

- -
-
- - - - -
#define ENABLE_SOFTWARE_SPI_CLASS   0
-
-

If the symbol ENABLE_SOFTWARE_SPI_CLASS is nonzero, the class SdFatSoftSpi will be defined. If ENABLE_EXTENDED_TRANSFER_CLASS is also nonzero, the class SdFatSoftSpiEX will be defined.

- -
-
- -

◆ ENDL_CALLS_FLUSH

- -
-
- - - - -
#define ENDL_CALLS_FLUSH   0
-
-

Call flush for endl if ENDL_CALLS_FLUSH is nonzero

-

The standard for iostreams is to call flush. This is very costly for SdFat. Each call to flush causes 2048 bytes of I/O to the SD.

-

SdFat has a single 512 byte buffer for SD I/O so it must write the current data block to the SD, read the directory block from the SD, update the directory entry, write the directory block to the SD and read the data block back into the buffer.

-

The SD flash memory controller is not designed for this many rewrites so performance may be reduced by more than a factor of 100.

-

If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force all data to be written to the SD.

- -
-
- -

◆ FAT12_SUPPORT

- -
-
- - - - -
#define FAT12_SUPPORT   0
-
-

Set FAT12_SUPPORT nonzero to enable use if FAT12 volumes. FAT12 has not been well tested and requires additional flash.

- -
-
- -

◆ IMPLEMENT_SPI_PORT_SELECTION

- -
-
- - - - -
#define IMPLEMENT_SPI_PORT_SELECTION   0
-
-

Check if API to select HW SPI port is needed.

- -
-
- -

◆ INCLUDE_SDIOS

- -
-
- - - - -
#define INCLUDE_SDIOS   1
-
-

Set INCLUDE_SDIOS nonzero to include sdios.h in SdFat.h. sdios.h provides C++ style IO Streams.

- -
-
- -

◆ MAINTAIN_FREE_CLUSTER_COUNT

- -
-
- - - - -
#define MAINTAIN_FREE_CLUSTER_COUNT   0
-
-

Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters updated. This will increase the speed of the freeClusterCount() call after the first call. Extra flash will be required.

- -
-
- -

◆ SD_HAS_CUSTOM_SPI

- -
-
- - - - -
#define SD_HAS_CUSTOM_SPI   0
-
-

Determine the default SPI configuration.

- -
-
- -

◆ USE_FCNTL_H

- -
-
- - - - -
#define USE_FCNTL_H   0
-
-

If the symbol USE_FCNTL_H is nonzero, open flags for access modes O_RDONLY, O_WRONLY, O_RDWR and the open modifiers O_APPEND, O_CREAT, O_EXCL, O_SYNC will be defined by including the system file fcntl.h.

- -
-
- -

◆ USE_LONG_FILE_NAMES

- -
-
- - - - -
#define USE_LONG_FILE_NAMES   1
-
-

Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). Long File Name are limited to a maximum length of 255 characters.

-

This implementation allows 7-bit characters in the range 0X20 to 0X7E except the following characters are not allowed:

-

< (less than)

-

(greater than)

-
-

: (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark)

    -
  • (asterisk)
  • -
- -
-
- -

◆ USE_MULTI_BLOCK_IO

- -
-
- - - - -
#define USE_MULTI_BLOCK_IO   1
-
-

Set USE_MULTI_BLOCK_IO nonzero to use multi-block SD read/write.

-

Don't use mult-block read/write on small AVR boards.

- -
-
- -

◆ USE_SD_CRC

- -
-
- - - - -
#define USE_SD_CRC   0
-
-

To enable SD card CRC checking set USE_SD_CRC nonzero.

-

Set USE_SD_CRC to 1 to use a smaller CRC-CCITT function. This function is slower for AVR but may be fast for ARM and other processors.

-

Set USE_SD_CRC to 2 to used a larger table driven CRC-CCITT function. This function is faster for AVR but may be slower for ARM and other processors.

- -
-
- -

◆ USE_SEPARATE_FAT_CACHE

- -
-
- - - - -
#define USE_SEPARATE_FAT_CACHE   0
-
-

Set USE_SEPARATE_FAT_CACHE nonzero to use a second 512 byte cache for FAT table entries. This improves performance for large writes that are not a multiple of 512 bytes.

- -
-
- -

◆ USE_STANDARD_SPI_LIBRARY

- -
-
- - - - -
#define USE_STANDARD_SPI_LIBRARY   0
-
-

If the symbol USE_STANDARD_SPI_LIBRARY is zero, an optimized custom SPI driver is used if it exists. If the symbol USE_STANDARD_SPI_LIBRARY is one, the standard Arduino SPI.h library is used with SPI. If the symbol USE_STANDARD_SPI_LIBRARY is two, the SPI port can be selected with the constructors SdFat(SPIClass* spiPort) and SdFatEX(SPIClass* spiPort).

- -
-
- -

◆ WDT_YIELD_TIME_MICROS

- -
-
- - - - -
#define WDT_YIELD_TIME_MICROS   0
-
-

Handle Watchdog Timer for WiFi modules.

-

Yield will be called before accessing the SPI bus if it has been more than WDT_YIELD_TIME_MICROS microseconds since the last yield call by SdFat.

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h__dep__incl.png deleted file mode 100644 index 5089a571..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h__incl.png deleted file mode 100644 index 56191eb4..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_fat_config_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h.html deleted file mode 100644 index 5052ce60..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SdSpiCard.h File Reference
-
-
- -

SdSpiCard class for V2 SD/SDHC cards. -More...

-
#include <stddef.h>
-#include "SysCall.h"
-#include "SdInfo.h"
-#include "../FatLib/BaseBlockDriver.h"
-#include "../SpiDriver/SdSpiDriver.h"
-
-Include dependency graph for SdSpiCard.h:
-
-
- - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - -
-
- - - - - - - -

-Classes

class  SdSpiCard
 Raw access to SD and SDHC flash memory cards via SPI protocol. More...
 
class  SdSpiCardEX
 Extended SD I/O block driver. More...
 
-

Detailed Description

-

SdSpiCard class for V2 SD/SDHC cards.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h__dep__incl.png deleted file mode 100644 index 9c2895d1..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h__incl.png deleted file mode 100644 index 5ae683e0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sd_spi_card_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_stdio_stream_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_stdio_stream_8h.html deleted file mode 100644 index fedd9e20..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_stdio_stream_8h.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/StdioStream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
StdioStream.h File Reference
-
-
- -

StdioStream class. -More...

-
#include <limits.h>
-#include "FatFile.h"
-#include <stdio.h>
-
-Include dependency graph for StdioStream.h:
-
-
- - - - - - - - - - -
-
- - - - -

-Classes

class  StdioStream
 StdioStream implements a minimal stdio stream. More...
 
- - - - - - - - - - - -

-Macros

#define EOF   (-1)
 
#define NULL   0
 
#define SEEK_CUR   1
 
#define SEEK_END   2
 
#define SEEK_SET   0
 
- - - - - -

-Variables

const uint8_t STREAM_BUF_SIZE = 64
 
const uint8_t UNGETC_BUF_SIZE = 2
 
-

Detailed Description

-

StdioStream class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ EOF

- -
-
- - - - -
#define EOF   (-1)
-
-

End-of-file return value.

- -
-
- -

◆ NULL

- -
-
- - - - -
#define NULL   0
-
-

Null pointer

- -
-
- -

◆ SEEK_CUR

- -
-
- - - - -
#define SEEK_CUR   1
-
-

Seek relative to current position.

- -
-
- -

◆ SEEK_END

- -
-
- - - - -
#define SEEK_END   2
-
-

Seek relative to end-of-file.

- -
-
- -

◆ SEEK_SET

- -
-
- - - - -
#define SEEK_SET   0
-
-

Seek relative to start-of-file.

- -
-
-

Variable Documentation

- -

◆ STREAM_BUF_SIZE

- -
-
- - - - -
const uint8_t STREAM_BUF_SIZE = 64
-
-

Total size of stream buffer. The entire buffer is used for output. During input UNGETC_BUF_SIZE of this space is reserved for ungetc.

- -
-
- -

◆ UNGETC_BUF_SIZE

- -
-
- - - - -
const uint8_t UNGETC_BUF_SIZE = 2
-
-

Amount of buffer allocated for ungetc during input.

- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_stdio_stream_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_stdio_stream_8h__incl.png deleted file mode 100644 index 83514f2c..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_stdio_stream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sys_call_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sys_call_8h.html deleted file mode 100644 index 55d63105..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sys_call_8h.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SysCall.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SysCall.h File Reference
-
-
- -

SysCall class. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - -
-
- - - - -

-Classes

class  SysCall
 SysCall - Class to wrap system calls. More...
 
- - - -

-Macros

#define F(str)   (str)
 
- - - -

-Functions

uint16_t curTimeMS ()
 
-

Detailed Description

-

SysCall class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ F

- -
-
- - - - - - - - -
#define F( str)   (str)
-
-

Define macro for strings stored in flash.

- -
-
-

Function Documentation

- -

◆ curTimeMS()

- -
-
- - - - - -
- - - - - - - -
uint16_t curTimeMS ()
-
-inline
-
-
Returns
the time in milliseconds.
- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sys_call_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sys_call_8h__dep__incl.png deleted file mode 100644 index a1b8d244..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/_sys_call_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/annotated.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/annotated.html deleted file mode 100644 index 53a0efaf..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/annotated.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -SdFat: Class List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 CArduinoInStreamInput stream for Arduino Stream objects
 CArduinoOutStreamOutput stream for Arduino Print objects
 CBaseBlockDriverBase block driver
 CbiosParmBlockBIOS parameter block
 Ccache_tCache for an raw data block
 CdirectoryEntryFAT short directory entry
 Cfat32_bootBoot sector for a FAT32 volume
 Cfat32_fsinfoFSINFO sector for a FAT32 volume
 Cfat_bootBoot sector for a FAT12/FAT16 volume
 CFatCacheBlock cache
 CFatFileBasic file class
 CFatFileSystemIntegration class for the FatLib library
 CFatPos_tInternal type for file position - do not use in user apps
 CFatStreamBaseBase class for C++ style streams
 CFatVolumeAccess FAT16 and FAT32 volumes on raw file devices
 CFileArduino SD.h style File API
 Cfname_tInternal type for Short File Name - do not use in user apps
 CfstreamFile input/output stream
 CibufstreamParse a char string
 CifstreamFile input stream
 CiosError and state information for all streams
 Cios_baseBase class for all streams
 CiostreamInput/Output stream
 CistreamInput Stream
 ClongDirectoryEntryFAT long directory entry
 CmasterBootRecordMaster Boot Record
 CMinimumSerialMini serial class for the SdFat library
 CobufstreamFormat a char string
 CofstreamFile output stream
 CostreamOutput Stream
 CpartitionTableMBR partition table entry
 CPrintFileFatFile with Print
 CSd2CardRaw access to SD and SDHC card using default SPI library
 CSdBaseFileClass for backward compatibility
 CSdFatMain file system class for SdFat library
 CSdFatEXSdFat class with extended SD I/O
 CSdFatSdioSdFat class using SDIO
 CSdFatSdioEXSdFat class using SDIO
 CSdFatSoftSpiSdFat class using software SPI
 CSdFatSoftSpiEXSdFat class using software SPI and extended SD I/O
 CSdFileClass for backward compatibility
 CSdFileSystemVirtual base class for SdFat library
 CSdioCardRaw SDIO access to SD and SDHC flash memory cards
 CSdioCardEXExtended SD I/O block driver
 CSdSpiCardRaw access to SD and SDHC flash memory cards via SPI protocol
 CSdSpiCardEXExtended SD I/O block driver
 CsetfillType for setfill manipulator
 CsetprecisionType for setprecision manipulator
 CsetwType for setw manipulator
 CStdioStreamStdioStream implements a minimal stdio stream
 CSysCallSysCall - Class to wrap system calls
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bc_s.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bc_s.png deleted file mode 100644 index 224b29aa..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bc_s.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bdwn.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bdwn.png deleted file mode 100644 index 940a0b95..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bdwn.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h.html deleted file mode 100644 index 0e708635..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/bufstream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
bufstream.h File Reference
-
-
- -

ibufstream and obufstream classes -More...

-
#include <string.h>
-#include "iostream.h"
-
-Include dependency graph for bufstream.h:
-
-
- - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
- - - - - - - -

-Classes

class  ibufstream
 parse a char string More...
 
class  obufstream
 format a char string More...
 
-

Detailed Description

-

ibufstream and obufstream classes

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h__dep__incl.png deleted file mode 100644 index d7642282..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h__incl.png deleted file mode 100644 index e7e79d65..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/bufstream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream-members.html deleted file mode 100644 index 75a36ce0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream-members.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ArduinoInStream Member List
-
-
- -

This is the complete list of members for ArduinoInStream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ArduinoInStream(Stream &hws, char *buf, size_t size)ArduinoInStreaminline
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ibufstream()ibufstreaminline
ibufstream(const char *str)ibufstreaminlineexplicit
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
init(const char *str)ibufstreaminline
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
readline()ArduinoInStreaminline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream.html deleted file mode 100644 index d3aedfa1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream.html +++ /dev/null @@ -1,2754 +0,0 @@ - - - - - - - -SdFat: ArduinoInStream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
ArduinoInStream Class Reference
-
-
- -

Input stream for Arduino Stream objects. - More...

- -

#include <ArduinoStream.h>

-
-Inheritance diagram for ArduinoInStream:
-
-
Inheritance graph
- - - - - - -
[legend]
-
-Collaboration diagram for ArduinoInStream:
-
-
Collaboration graph
- - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArduinoInStream (Stream &hws, char *buf, size_t size)
 
bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
void init (const char *str)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
void readline ()
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Input stream for Arduino Stream objects.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ArduinoInStream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
ArduinoInStream::ArduinoInStream (Stream & hws,
char * buf,
size_t size 
)
-
-inline
-
-

Constructor

Parameters
- - - - -
[in]hwshardware stream
[in]bufbuffer for input line
[in]sizesize of input buffer
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - -
void ibufstream::init (const char * str)
-
-inlineinherited
-
-

Initialize an ibufstream

Parameters
- - -
[in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
-
-
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ readline()

- -
-
- - - - - -
- - - - - - - -
void ArduinoInStream::readline ()
-
-inline
-
-

read a line.

- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream__coll__graph.png deleted file mode 100644 index 0d8855be..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream__inherit__graph.png deleted file mode 100644 index 0d8855be..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_in_stream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream-members.html deleted file mode 100644 index bba93a65..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream-members.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ArduinoOutStream Member List
-
-
- -

This is the complete list of members for ArduinoOutStream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ArduinoOutStream(Print &pr)ArduinoOutStreaminlineexplicit
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream.html deleted file mode 100644 index 2e6d110f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream.html +++ /dev/null @@ -1,2423 +0,0 @@ - - - - - - - -SdFat: ArduinoOutStream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
ArduinoOutStream Class Reference
-
-
- -

Output stream for Arduino Print objects. - More...

- -

#include <ArduinoStream.h>

-
-Inheritance diagram for ArduinoOutStream:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for ArduinoOutStream:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArduinoOutStream (Print &pr)
 
bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Output stream for Arduino Print objects.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ArduinoOutStream()

- -
-
- - - - - -
- - - - - - - - -
ArduinoOutStream::ArduinoOutStream (Print & pr)
-
-inlineexplicit
-
-

constructor

-
Parameters
- - -
[in]prPrint object for this ArduinoOutStream.
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream__coll__graph.png deleted file mode 100644 index 971f0527..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream__inherit__graph.png deleted file mode 100644 index 971f0527..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_arduino_out_stream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver-members.html deleted file mode 100644 index 47e33bfc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
BaseBlockDriver Member List
-
-
- -

This is the complete list of members for BaseBlockDriver, including all inherited members.

- - - - - - -
readBlock(uint32_t block, uint8_t *dst)=0BaseBlockDriverpure virtual
readBlocks(uint32_t block, uint8_t *dst, size_t nb)=0BaseBlockDriverpure virtual
syncBlocks()=0BaseBlockDriverpure virtual
writeBlock(uint32_t block, const uint8_t *src)=0BaseBlockDriverpure virtual
writeBlocks(uint32_t block, const uint8_t *src, size_t nb)=0BaseBlockDriverpure virtual
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver.html deleted file mode 100644 index b02f5cc7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - -SdFat: BaseBlockDriver Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
BaseBlockDriver Class Referenceabstract
-
-
- -

Base block driver. - More...

- -

#include <BaseBlockDriver.h>

-
-Inheritance diagram for BaseBlockDriver:
-
-
Inheritance graph
- - - - -
[legend]
- - - - - - - - - - - - -

-Public Member Functions

virtual bool readBlock (uint32_t block, uint8_t *dst)=0
 
virtual bool readBlocks (uint32_t block, uint8_t *dst, size_t nb)=0
 
virtual bool syncBlocks ()=0
 
virtual bool writeBlock (uint32_t block, const uint8_t *src)=0
 
virtual bool writeBlocks (uint32_t block, const uint8_t *src, size_t nb)=0
 
-

Detailed Description

-

Base block driver.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Member Function Documentation

- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::readBlock (uint32_t block,
uint8_t * dst 
)
-
-pure virtual
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]blockLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::readBlocks (uint32_t block,
uint8_t * dst,
size_t nb 
)
-
-pure virtual
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
virtual bool BaseBlockDriver::syncBlocks ()
-
-pure virtual
-
-

End multi-block transfer and go to idle state.

Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::writeBlock (uint32_t block,
const uint8_t * src 
)
-
-pure virtual
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]blockLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::writeBlocks (uint32_t block,
const uint8_t * src,
size_t nb 
)
-
-pure virtual
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/BaseBlockDriver.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver__inherit__graph.png deleted file mode 100644 index 3b26755a..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_base_block_driver__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_cache-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_cache-members.html deleted file mode 100644 index d543b251..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_cache-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatCache Member List
-
-
- -

This is the complete list of members for FatCache, including all inherited members.

- - - - - - - - - - - - - - - - -
block()FatCacheinline
CACHE_FOR_READFatCachestatic
CACHE_FOR_WRITEFatCachestatic
CACHE_OPTION_NO_READFatCachestatic
CACHE_RESERVE_FOR_WRITEFatCachestatic
CACHE_STATUS_DIRTYFatCachestatic
CACHE_STATUS_MASKFatCachestatic
CACHE_STATUS_MIRROR_FATFatCachestatic
dirty()FatCacheinline
init(FatVolume *vol)FatCacheinline
invalidate()FatCacheinline
isDirty()FatCacheinline
lbn()FatCacheinline
read(uint32_t lbn, uint8_t option)FatCache
sync()FatCache
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_cache.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_cache.html deleted file mode 100644 index c90823ca..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_cache.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - -SdFat: FatCache Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Block cache. - More...

- -

#include <FatVolume.h>

- - - - - - - - - - - - - - - - - - -

-Public Member Functions

cache_tblock ()
 
void dirty ()
 
void init (FatVolume *vol)
 
void invalidate ()
 
bool isDirty ()
 
uint32_t lbn ()
 
cache_tread (uint32_t lbn, uint8_t option)
 
bool sync ()
 
- - - - - - - - - - - - - - - -

-Static Public Attributes

static const uint8_t CACHE_FOR_READ = 0
 
static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
 
static const uint8_t CACHE_OPTION_NO_READ = 4
 
static const uint8_t CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
 
static const uint8_t CACHE_STATUS_DIRTY = 1
 
static const uint8_t CACHE_STATUS_MASK = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT
 
static const uint8_t CACHE_STATUS_MIRROR_FAT = 2
 
-

Detailed Description

-

Block cache.

-

Member Function Documentation

- -

◆ block()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatCache::block ()
-
-inline
-
-
Returns
Cache block address.
- -
-
- -

◆ dirty()

- -
-
- - - - - -
- - - - - - - -
void FatCache::dirty ()
-
-inline
-
-

Set current block dirty.

- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - -
void FatCache::init (FatVolumevol)
-
-inline
-
-

Initialize the cache.

Parameters
- - -
[in]volFatVolume that owns this FatCache.
-
-
- -
-
- -

◆ invalidate()

- -
-
- - - - - -
- - - - - - - -
void FatCache::invalidate ()
-
-inline
-
-

Invalidate current cache block.

- -
-
- -

◆ isDirty()

- -
-
- - - - - -
- - - - - - - -
bool FatCache::isDirty ()
-
-inline
-
-
Returns
dirty status
- -
-
- -

◆ lbn()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatCache::lbn ()
-
-inline
-
-
Returns
Logical block number for cached block.
- -
-
- -

◆ read()

- -
-
- - - - - - - - - - - - - - - - - - -
cache_t * FatCache::read (uint32_t lbn,
uint8_t option 
)
-
-

Read a block into the cache.

Parameters
- - - -
[in]lbnBlock to read.
[in]optionmode for cached block.
-
-
-
Returns
Address of cached block.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ sync()

- -
-
- - - - - - - -
bool FatCache::sync ()
-
-

Write current block if dirty.

Returns
true for success else false.
- -
-
-

Member Data Documentation

- -

◆ CACHE_FOR_READ

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_FOR_READ = 0
-
-static
-
-

Cache block for read.

- -
-
- -

◆ CACHE_FOR_WRITE

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
-
-static
-
-

Cache block for write.

- -
-
- -

◆ CACHE_OPTION_NO_READ

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_OPTION_NO_READ = 4
-
-static
-
-

Sync existing block but do not read new block.

- -
-
- -

◆ CACHE_RESERVE_FOR_WRITE

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
-
-static
-
-

Reserve cache block for write - do not read from block device.

- -
-
- -

◆ CACHE_STATUS_DIRTY

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_STATUS_DIRTY = 1
-
-static
-
-

Cached block is dirty

- -
-
- -

◆ CACHE_STATUS_MASK

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_STATUS_MASK = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT
-
-static
-
-

Cache block status bits

- -
-
- -

◆ CACHE_STATUS_MIRROR_FAT

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_STATUS_MIRROR_FAT = 2
-
-static
-
-

Cashed block is FAT entry and must be mirrored in second FAT.

- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file-members.html deleted file mode 100644 index ef4d223c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file-members.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatFile Member List
-
-
- -

This is the complete list of members for FatFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()FatFileinline
clearError()FatFileinline
clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()FatFile
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()FatFileinline
read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(const char *str)FatFileinline
write(uint8_t b)FatFileinline
write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file.html deleted file mode 100644 index 4cb59424..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file.html +++ /dev/null @@ -1,3140 +0,0 @@ - - - - - - - -SdFat: FatFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Basic file class. - More...

- -

#include <FatFile.h>

-
-Inheritance diagram for FatFile:
-
-
Inheritance graph
- - - - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
 FatFile ()
 
 FatFile (const char *path, oflag_t oflag)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Basic file class.

-

Constructor & Destructor Documentation

- -

◆ FatFile() [1/2]

- -
-
- - - - - -
- - - - - - - -
FatFile::FatFile ()
-
-inline
-
-

Create an instance.

- -
-
- -

◆ FatFile() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
FatFile::FatFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::available ()
-
-inline
-
-
Returns
The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inline
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inline
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - - - -
bool FatFile::close ()
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inline
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inline
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inline
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestatic
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestatic
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestatic
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inline
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-static
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inline
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inline
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inline
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inline
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inline
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inline
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inline
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inline
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inline
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inline
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inline
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inline
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inline
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inline
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inline
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inline
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inline
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inline
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestatic
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inline
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inline
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - - - -
int FatFile::peek ()
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestatic
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-static
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestatic
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-static
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inline
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/2]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - - - -
bool FatFile::remove ()
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-static
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inline
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - - - -
bool FatFile::rmdir ()
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - - - -
bool FatFile::rmRfStar ()
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inline
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inline
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestatic
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - - - -
bool FatFile::sync ()
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inline
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inline
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [2/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (uint8_t b)
-
-inline
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [3/3]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.cpp
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFileLFN.cpp
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFilePrint.cpp
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFileSFN.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file__inherit__graph.png deleted file mode 100644 index 6e13b3ca..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system-members.html deleted file mode 100644 index 07f50dad..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatFileSystem Member List
-
-
- -

This is the complete list of members for FatFileSystem, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system.html deleted file mode 100644 index 59c85963..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - - - -SdFat: FatFileSystem Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
FatFileSystem Class Reference
-
-
- -

Integration class for the FatLib library. - More...

- -

#include <FatFileSystem.h>

-
-Inheritance diagram for FatFileSystem:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
-
-Collaboration diagram for FatFileSystem:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

Integration class for the FatLib library.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inline
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inline
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inline
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inline
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inline
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inline
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inline
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inline
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inline
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inline
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inline
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inline
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inline
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inline
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inline
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inline
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inline
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inline
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inline
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system__coll__graph.png deleted file mode 100644 index dcaf8f81..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system__inherit__graph.png deleted file mode 100644 index a660a353..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_file_system__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base-members.html deleted file mode 100644 index e4c20a03..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base-members.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatStreamBase Member List
-
-
- -

This is the complete list of members for FatStreamBase, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
available()FatFileinlineprivate
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
clearError()FatFileinlineprivate
clearWriteError()FatFileinlineprivate
close()FatFileprivate
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFileprivate
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFileprivate
createContiguous(const char *path, uint32_t size)FatFileinlineprivate
cur enum valueios_base
curCluster() constFatFileinlineprivate
curPosition() constFatFileinlineprivate
cwd()FatFileinlineprivatestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlineprivatestatic
dateTimeCallbackCancel()FatFileinlineprivatestatic
decios_basestatic
dirEntry(dir_t *dir)FatFileprivate
dirIndex()FatFileinlineprivate
dirName(const dir_t *dir, char *name)FatFileprivatestatic
dirSize()FatFileprivate
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFileprivate
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
exists(const char *path)FatFileinlineprivate
fail() constiosinline
failbitios_basestatic
FatFile()FatFileinlineprivate
FatFile(const char *path, oflag_t oflag)FatFileinlineprivate
fgets(char *str, int16_t num, char *delim=0)FatFileprivate
fileAttr() constFatFileinlineprivate
fileSize() constFatFileinlineprivate
fill()ios_baseinline
fill(char c)ios_baseinline
firstBlock()FatFileinlineprivate
firstCluster() constFatFileinlineprivate
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
getError()FatFileinlineprivate
getName(char *name, size_t size)FatFileprivate
getpos(FatPos_t *pos)FatFileprivate
getSFN(char *name)FatFileprivate
getWriteError()FatFileinlineprivate
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
isDir() constFatFileinlineprivate
isFile() constFatFileinlineprivate
isHidden() constFatFileinlineprivate
isLFN() constFatFileinlineprivate
isOpen() constFatFileinlineprivate
isReadOnly() constFatFileinlineprivate
isRoot() constFatFileinlineprivate
isRoot32() constFatFileinlineprivate
isRootFixed() constFatFileinlineprivate
isSubDir() constFatFileinlineprivate
isSystem() constFatFileinlineprivate
leftios_basestatic
legal83Char(uint8_t c)FatFileinlineprivatestatic
ls(uint8_t flags=0)FatFileinlineprivate
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFileprivate
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFileprivate
octios_basestatic
off_type typedefios_base
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinlineprivate
openmode typedefios_base
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFileprivate
openRoot(FatVolume *vol)FatFileprivate
operator const void *() constiosinline
operator!() constiosinline
outios_basestatic
peek()FatFileprivate
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
printCreateDateTime(print_t *pr)FatFileprivate
printFatDate(uint16_t fatDate)FatFileinlineprivatestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFileprivatestatic
printFatTime(uint16_t fatTime)FatFileinlineprivatestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFileprivatestatic
printField(float value, char term, uint8_t prec=2)FatFileprivate
printField(int16_t value, char term)FatFileprivate
printField(uint16_t value, char term)FatFileprivate
printField(int32_t value, char term)FatFileprivate
printField(uint32_t value, char term)FatFileprivate
printFileSize(print_t *pr)FatFileprivate
printModifyDateTime(print_t *pr)FatFileprivate
printName()FatFileinlineprivate
printName(print_t *pr)FatFileprivate
printSFN(print_t *pr)FatFileprivate
rdstate() constiosinline
read()FatFileinlineprivate
read(void *buf, size_t nbyte)FatFileprivate
readDir(dir_t *dir)FatFileprivate
remove()FatFileprivate
remove(FatFile *dirFile, const char *path)FatFileprivatestatic
rename(FatFile *dirFile, const char *newPath)FatFileprivate
rewind()FatFileinlineprivate
rightios_basestatic
rmdir()FatFileprivate
rmRfStar()FatFileprivate
seekCur(int32_t offset)FatFileinlineprivate
seekdir enum nameios_base
seekEnd(int32_t offset=0)FatFileinlineprivate
seekSet(uint32_t pos)FatFileprivate
setCwd(FatFile *dir)FatFileinlineprivatestatic
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setpos(FatPos_t *pos)FatFileprivate
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
sync()FatFileprivate
timestamp(FatFile *file)FatFileprivate
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFileprivate
truncios_basestatic
truncate(uint32_t length)FatFileprivate
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
volume() constFatFileinlineprivate
width()ios_baseinline
width(unsigned n)ios_baseinline
write(const char *str)FatFileinlineprivate
write(uint8_t b)FatFileinlineprivate
write(const void *buf, size_t nbyte)FatFileprivate
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base.html deleted file mode 100644 index 843feb2e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base.html +++ /dev/null @@ -1,1732 +0,0 @@ - - - - - - - -SdFat: FatStreamBase Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Base class for C++ style streams. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for FatStreamBase:
-
-
Inheritance graph
- - - - - - - - -
[legend]
-
-Collaboration diagram for FatStreamBase:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
bool good () const
 
 operator const void * () const
 
bool operator! () const
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Private Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Private Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Base class for C++ style streams.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base__coll__graph.png deleted file mode 100644 index 4b13c436..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base__inherit__graph.png deleted file mode 100644 index 08e0c93d..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_stream_base__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume-members.html deleted file mode 100644 index 18e917e6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatVolume Member List
-
-
- -

This is the complete list of members for FatVolume, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - -
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
FatCache classFatVolumefriend
fatCount()FatVolumeinline
FatFile classFatVolumefriend
FatFileSystem classFatVolumefriend
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
volumeBlockCount() constFatVolumeinline
wipe(print_t *pr=0)FatVolume
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume.html deleted file mode 100644 index 10169664..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume.html +++ /dev/null @@ -1,647 +0,0 @@ - - - - - - - -SdFat: FatVolume Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
FatVolume Class Reference
-
-
- -

Access FAT16 and FAT32 volumes on raw file devices. - More...

- -

#include <FatVolume.h>

-
-Inheritance diagram for FatVolume:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
 FatVolume ()
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
uint32_t volumeBlockCount () const
 
bool wipe (print_t *pr=0)
 
- - - - - - - - - - -

-Friends

-class FatCache
 Allow access to FatVolume.
 
-class FatFile
 Allow access to FatVolume.
 
-class FatFileSystem
 Allow access to FatVolume.
 
-

Detailed Description

-

Access FAT16 and FAT32 volumes on raw file devices.

-

Constructor & Destructor Documentation

- -

◆ FatVolume()

- -
-
- - - - - -
- - - - - - - -
FatVolume::FatVolume ()
-
-inline
-
-

Create an instance of FatVolume

- -
-
-

Member Function Documentation

- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inline
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inline
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inline
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inline
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inline
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inline
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inline
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inline
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inline
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inline
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inline
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inline
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inline
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inline
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ wipe()

- -
-
- - - - - - - - -
bool FatVolume::wipe (print_tpr = 0)
-
-

Wipe all data from the volume.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume__inherit__graph.png deleted file mode 100644 index bec96573..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_fat_volume__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file-members.html deleted file mode 100644 index 94e57bdc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file-members.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
File Member List
-
-
- -

This is the complete list of members for File, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()Fileinline
clearError()FatFileinline
clearWriteError()Fileinline
FatFile::clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
File() (defined in File)Fileinline
File(const char *path, oflag_t oflag)Fileinline
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
flush()Fileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()Fileinline
FatFile::getWriteError()FatFileinline
isDir() constFatFileinline
isDirectory()Fileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
name() constFileinline
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openNextFile(oflag_t oflag=O_RDONLY)Fileinline
openRoot(FatVolume *vol)FatFile
operator bool()Fileinline
peek()Fileinline
position()Fileinline
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()Fileinline
read()Fileinline
read(void *buf, size_t nbyte)File
FatFile::read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rewindDirectory()Fileinline
rmdir()FatFile
rmRfStar()FatFile
seek(uint32_t pos)Fileinline
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
size()Fileinline
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(uint8_t b)Fileinline
write(const uint8_t *buf, size_t size)Fileinline
write(const char *str)Fileinline
write(uint8_t b)Fileinline
write(const void *buf, size_t nbyte)File
FatFile::write(const char *str)FatFileinline
FatFile::write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file.html deleted file mode 100644 index 0d033453..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file.html +++ /dev/null @@ -1,3943 +0,0 @@ - - - - - - - -SdFat: File Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Arduino SD.h style File API. - More...

- -

#include <ArduinoFiles.h>

-
-Inheritance diagram for File:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for File:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void clearError ()
 
void clearWriteError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
 File (const char *path, oflag_t oflag)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
void flush ()
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool getWriteError ()
 
bool isDir () const
 
bool isDirectory ()
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
const char * name () const
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
File openNextFile (oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
 operator bool ()
 
int peek ()
 
uint32_t position ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read (void *buf, size_t nbyte)
 
int read ()
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
void rewindDirectory ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seek (uint32_t pos)
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
uint32_t size ()
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
size_t write (uint8_t b)
 
size_t write (const uint8_t *buf, size_t size)
 
int write (const char *str)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Arduino SD.h style File API.

-

Constructor & Destructor Documentation

- -

◆ File()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File::File (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
int File::available ()
-
-inline
-
-
Returns
number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError() [1/2]

- -
-
- - - - - -
- - - - -
void FatFile::clearWriteError
-
-inline
-
-

Set writeError to zero

- -
-
- -

◆ clearWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
void File::flush ()
-
-inline
-
-

Ensure that any bytes written to the file are saved to the SD card.

- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError() [1/2]

- -
-
- - - - - -
- - - - -
bool FatFile::getWriteError
-
-inline
-
-
Returns
value of writeError
- -
-
- -

◆ getWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isDirectory()

- -
-
- - - - - -
- - - - - - - -
bool File::isDirectory ()
-
-inline
-
-

This function reports if the current file is a directory or not.

Returns
true if the file is a directory.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ name()

- -
-
- - - - - -
- - - - - - - -
const char* File::name () const
-
-inline
-
-

No longer implemented due to Long File Names.

-

Use getName(char* name, size_t size).

Returns
a pointer to replacement suggestion.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openNextFile()

- -
-
- - - - - -
- - - - - - - - -
File File::openNextFile (oflag_t oflag = O_RDONLY)
-
-inline
-
-

Opens the next file or folder in a directory.

-
Parameters
- - -
[in]oflagopen oflag flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ operator bool()

- -
-
- - - - - -
- - - - - - - -
File::operator bool ()
-
-inline
-
-

The parenthesis operator.

-
Returns
true if a file is open.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int File::peek ()
-
-inline
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ position()

- -
-
- - - - - -
- - - - - - - -
uint32_t File::position ()
-
-inline
-
-
Returns
the current file position.
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/4]

- -
-
- - - - -
int FatFile::read
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ read() [3/4]

- -
-
- - - - - -
- - - - - - - -
int File::read ()
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1.
- -
-
- -

◆ read() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rewindDirectory()

- -
-
- - - - - -
- - - - - - - -
void File::rewindDirectory ()
-
-inline
-
-

Rewind a file if it is a directory

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - -
bool File::seek (uint32_t pos)
-
-inline
-
-

Seek to a new position in the file, which must be between 0 and the size of the file (inclusive).

-
Parameters
- - -
[in]posthe new file position.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
uint32_t File::size ()
-
-inline
-
-
Returns
the file's size.
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [2/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [3/7]

- -
-
- - - - -
int FatFile::write
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [4/7]

- -
-
- - - - - -
- - - - - - - - -
size_t File::write (uint8_t b)
-
-inline
-
-

Write a byte to a file. Required by the Arduino Print class.

Parameters
- - -
[in]bthe byte to be written. Use getWriteError to check for errors.
-
-
-
Returns
1 for success and 0 for failure.
- -
-
- -

◆ write() [5/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t File::write (const uint8_t * buf,
size_t size 
)
-
-inline
-
-

Write data to an open file. Form required by Print.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]sizeNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [6/7]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [7/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file__coll__graph.png deleted file mode 100644 index b65001bc..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file__inherit__graph.png deleted file mode 100644 index b65001bc..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial-members.html deleted file mode 100644 index 1848ac0a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
MinimumSerial Member List
-
-
- -

This is the complete list of members for MinimumSerial, including all inherited members.

- - - - - - - -
available()MinimumSerial
begin(uint32_t baud)MinimumSerial
flush()MinimumSerial
operator bool()MinimumSerialinline
read()MinimumSerial
write(uint8_t b)MinimumSerial
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial.html deleted file mode 100644 index 96449046..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - -SdFat: MinimumSerial Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
MinimumSerial Class Reference
-
-
- -

mini serial class for the SdFat library. - More...

- -

#include <MinimumSerial.h>

-
-Inheritance diagram for MinimumSerial:
-
-
Inheritance graph
- - -
[legend]
-
-Collaboration diagram for MinimumSerial:
-
-
Collaboration graph
- - -
[legend]
- - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void begin (uint32_t baud)
 
void flush ()
 
 operator bool ()
 
int read ()
 
size_t write (uint8_t b)
 
-

Detailed Description

-

mini serial class for the SdFat library.

-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - - - -
int MinimumSerial::available ()
-
-
Returns
one if data is available.
- -
-
- -

◆ begin()

- -
-
- - - - - - - - -
void MinimumSerial::begin (uint32_t baud)
-
-

Set baud rate for serial port zero and enable in non interrupt mode. Do not call this function if you use another serial library.

Parameters
- - -
[in]baudrate
-
-
- -
-
- -

◆ flush()

- -
-
- - - - - - - -
void MinimumSerial::flush ()
-
-

Wait for write done.

- -
-
- -

◆ operator bool()

- -
-
- - - - - -
- - - - - - - -
MinimumSerial::operator bool ()
-
-inline
-
-
Returns
true for hardware serial
- -
-
- -

◆ read()

- -
-
- - - - - - - -
int MinimumSerial::read ()
-
-

Unbuffered read

Returns
-1 if no character is available or an available character.
- -
-
- -

◆ write()

- -
-
- - - - - - - - -
size_t MinimumSerial::write (uint8_t b)
-
-

Unbuffered write

-
Parameters
- - -
[in]bbyte to write.
-
-
-
Returns
1
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/MinimumSerial.h
  • -
  • Arduino/libraries/SdFat/src/MinimumSerial.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial__coll__graph.png deleted file mode 100644 index b5ad74f1..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial__inherit__graph.png deleted file mode 100644 index b5ad74f1..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_minimum_serial__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file-members.html deleted file mode 100644 index 1d101c1c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file-members.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
PrintFile Member List
-
-
- -

This is the complete list of members for PrintFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()PrintFileinline
clearError()FatFileinline
clearWriteError()PrintFileinline
FatFile::clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
flush()PrintFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()PrintFileinline
FatFile::getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()PrintFileinline
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
PrintFile() (defined in PrintFile)PrintFileinline
PrintFile(const char *path, oflag_t oflag)PrintFileinline
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()PrintFileinline
read(void *buf, size_t nbyte)PrintFile
FatFile::read()FatFileinline
FatFile::read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(uint8_t b)PrintFileinline
write(const uint8_t *buf, size_t size)PrintFileinline
write(const char *str)PrintFileinline
write(uint8_t b)PrintFileinline
write(const void *buf, size_t nbyte)PrintFile
FatFile::write(const char *str)FatFileinline
FatFile::write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file.html deleted file mode 100644 index 182bef34..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file.html +++ /dev/null @@ -1,3704 +0,0 @@ - - - - - - - -SdFat: PrintFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

FatFile with Print. - More...

- -

#include <ArduinoFiles.h>

-
-Inheritance diagram for PrintFile:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for PrintFile:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void clearError ()
 
void clearWriteError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
void flush ()
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
 PrintFile (const char *path, oflag_t oflag)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const void *buf, size_t nbyte)
 
int write (const char *str)
 
int write (uint8_t b)
 
size_t write (uint8_t b)
 
size_t write (const uint8_t *buf, size_t size)
 
int write (const char *str)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

FatFile with Print.

-

Constructor & Destructor Documentation

- -

◆ PrintFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
PrintFile::PrintFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::available ()
-
-inline
-
-
Returns
number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError() [1/2]

- -
-
- - - - - -
- - - - -
void FatFile::clearWriteError
-
-inline
-
-

Set writeError to zero

- -
-
- -

◆ clearWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
void PrintFile::flush ()
-
-inline
-
-

Ensure that any bytes written to the file are saved to the SD card.

- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError() [1/2]

- -
-
- - - - - -
- - - - -
bool FatFile::getWriteError
-
-inline
-
-
Returns
value of writeError
- -
-
- -

◆ getWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::peek ()
-
-inline
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/4]

- -
-
- - - - -
int FatFile::read
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ read() [2/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [3/4]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [2/7]

- -
-
- - - - -
int FatFile::write
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [3/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [4/7]

- -
-
- - - - - -
- - - - - - - - -
size_t PrintFile::write (uint8_t b)
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1. Write a byte to a file. Required by the Arduino Print class.
-
Parameters
- - -
[in]bthe byte to be written. Use getWriteError to check for errors.
-
-
-
Returns
1 for success and 0 for failure.
- -
-
- -

◆ write() [5/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t PrintFile::write (const uint8_t * buf,
size_t size 
)
-
-inline
-
-

Write data to an open file. Form required by Print.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]sizeNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [6/7]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [7/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file__coll__graph.png deleted file mode 100644 index 36319e92..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file__inherit__graph.png deleted file mode 100644 index 3706975d..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_print_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card-members.html deleted file mode 100644 index 242e6cb4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Sd2Card Member List
-
-
- -

This is the complete list of members for Sd2Card, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings settings=SD_SCK_MHZ(50))Sd2Cardinline
SdSpiCard::begin(SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)SdSpiCard
cardSize()SdSpiCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdSpiCard
eraseSingleBlockEnable()SdSpiCard
error(uint8_t code)SdSpiCardinline
errorCode() constSdSpiCardinline
errorData() constSdSpiCardinline
isBusy()SdSpiCard
readBlock(uint32_t lba, uint8_t *dst)SdSpiCard
readBlocks(uint32_t lba, uint8_t *dst, size_t nb)SdSpiCard
readCID(cid_t *cid)SdSpiCardinline
readCSD(csd_t *csd)SdSpiCardinline
readData(uint8_t *dst)SdSpiCard
readOCR(uint32_t *ocr)SdSpiCard
readStart(uint32_t blockNumber)SdSpiCard
readStatus(uint8_t *status)SdSpiCard
readStop()SdSpiCard
SdSpiCard()SdSpiCardinline
spiStart()SdSpiCard
spiStop()SdSpiCard
syncBlocks()SdSpiCardinline
type() constSdSpiCardinline
writeBlock(uint32_t lba, const uint8_t *src)SdSpiCard
writeBlocks(uint32_t lba, const uint8_t *src, size_t nb)SdSpiCard
writeData(const uint8_t *src)SdSpiCard
writeStart(uint32_t blockNumber)SdSpiCard
writeStart(uint32_t blockNumber, uint32_t eraseCount)SdSpiCard
writeStop()SdSpiCard
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card.html deleted file mode 100644 index 2cacb56c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card.html +++ /dev/null @@ -1,1142 +0,0 @@ - - - - - - - -SdFat: Sd2Card Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
Sd2Card Class Reference
-
-
- -

Raw access to SD and SDHC card using default SPI library. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for Sd2Card:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for Sd2Card:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)
 
bool begin (uint8_t csPin=SS, SPISettings settings=SD_SCK_MHZ(50))
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
bool eraseSingleBlockEnable ()
 
void error (uint8_t code)
 
int errorCode () const
 
int errorData () const
 
bool isBusy ()
 
bool readBlock (uint32_t lba, uint8_t *dst)
 
bool readBlocks (uint32_t lba, uint8_t *dst, size_t nb)
 
bool readCID (cid_t *cid)
 
bool readCSD (csd_t *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t blockNumber)
 
bool readStatus (uint8_t *status)
 
bool readStop ()
 
void spiStart ()
 
void spiStop ()
 
bool syncBlocks ()
 
int type () const
 
bool writeBlock (uint32_t lba, const uint8_t *src)
 
bool writeBlocks (uint32_t lba, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t blockNumber)
 
bool writeStart (uint32_t blockNumber, uint32_t eraseCount)
 
bool writeStop ()
 
-

Detailed Description

-

Raw access to SD and SDHC card using default SPI library.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::begin (SdSpiDriver * spi,
uint8_t csPin,
SPISettings spiSettings 
)
-
-inherited
-
-

Initialize the SD card.

Parameters
- - - - -
[in]spiSPI driver for card.
[in]csPincard chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ begin() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool Sd2Card::begin (uint8_t csPin = SS,
SPISettings settings = SD_SCK_MHZ(50) 
)
-
-inline
-
-

Initialize the SD card.

Parameters
- - - -
[in]csPinSD chip select pin.
[in]settingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ cardSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdSpiCard::cardSize ()
-
-inherited
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-inherited
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ eraseSingleBlockEnable()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::eraseSingleBlockEnable ()
-
-inherited
-
-

Determine if card supports single block erase.

-
Returns
true is returned if single block erase is supported. false is returned if single block erase is not supported.
- -
-
- -

◆ error()

- -
-
- - - - - -
- - - - - - - - -
void SdSpiCard::error (uint8_t code)
-
-inlineinherited
-
-

Set SD error code.

Parameters
- - -
[in]codevalue for error code.
-
-
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorCode () const
-
-inlineinherited
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorData () const
-
-inlineinherited
-
-
Returns
error data for last error.
- -
-
- -

◆ isBusy()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::isBusy ()
-
-inherited
-
-

Check for busy. MISO low indicates the card is busy.

-
Returns
true if busy else false.
- -
-
- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlock (uint32_t lba,
uint8_t * dst 
)
-
-inherited
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlocks (uint32_t lba,
uint8_t * dst,
size_t nb 
)
-
-inherited
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCID (cid_t * cid)
-
-inlineinherited
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCSD (csd_t * csd)
-
-inlineinherited
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readData (uint8_t * dst)
-
-inherited
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readOCR (uint32_t * ocr)
-
-inherited
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStart (uint32_t blockNumber)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStatus()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStatus (uint8_t * status)
-
-inherited
-
-

Return the 64 byte card status

Parameters
- - -
[out]statuslocation for 64 status bytes.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::readStop ()
-
-inherited
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ spiStart()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStart ()
-
-inherited
-
-

Set CS low and activate the card.

- -
-
- -

◆ spiStop()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStop ()
-
-inherited
-
-

Set CS high and deactivate the card.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::syncBlocks ()
-
-inlineinherited
-
-
Returns
success if sync successful. Not for user apps.
- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::type () const
-
-inlineinherited
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlock (uint32_t lba,
const uint8_t * src 
)
-
-inherited
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlocks (uint32_t lba,
const uint8_t * src,
size_t nb 
)
-
-inherited
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeData (const uint8_t * src)
-
-inherited
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber,
uint32_t eraseCount 
)
-
-inherited
-
-

Start a write multiple blocks sequence with pre-erase.

-
Parameters
- - - -
[in]blockNumberAddress of first block in sequence.
[in]eraseCountThe number of blocks to be pre-erased.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::writeStop ()
-
-inherited
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card__coll__graph.png deleted file mode 100644 index 023d327e..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card__inherit__graph.png deleted file mode 100644 index 023d327e..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd2_card__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file-members.html deleted file mode 100644 index 388a6f86..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file-members.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdBaseFile Member List
-
-
- -

This is the complete list of members for SdBaseFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()FatFileinline
clearError()FatFileinline
clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()FatFile
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()FatFileinline
read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
SdBaseFile() (defined in SdBaseFile)SdBaseFileinline
SdBaseFile(const char *path, oflag_t oflag)SdBaseFileinline
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(const char *str)FatFileinline
write(uint8_t b)FatFileinline
write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file.html deleted file mode 100644 index 8379d9ed..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file.html +++ /dev/null @@ -1,3436 +0,0 @@ - - - - - - - -SdFat: SdBaseFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for backward compatibility. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdBaseFile:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for SdBaseFile:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
 SdBaseFile (const char *path, oflag_t oflag)
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Class for backward compatibility.

-

Constructor & Destructor Documentation

- -

◆ SdBaseFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
SdBaseFile::SdBaseFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::available ()
-
-inlineinherited
-
-
Returns
The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int FatFile::peek ()
-
-inherited
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/2]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [2/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (uint8_t b)
-
-inlineinherited
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file__coll__graph.png deleted file mode 100644 index 6337c9e1..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file__inherit__graph.png deleted file mode 100644 index 6337c9e1..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_base_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat-members.html deleted file mode 100644 index 33403afc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat-members.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFat Member List
-
-
- -

This is the complete list of members for SdFat, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatinline
SdFileSystem< SdSpiCard >::begin()SdFileSystem< SdSpiCard >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCard >inline
cardBegin(uint8_t csPin=SS, SPISettings settings=SPI_FULL_SPEED)SdFatinline
cardErrorCode()SdFileSystem< SdSpiCard >inline
cardErrorData()SdFileSystem< SdSpiCard >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint()SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
fsBegin()SdFatinline
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint()SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
SdFat() (defined in SdFat)SdFatinline
SdFat(SPIClass *spiPort)SdFatinlineexplicit
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat.html deleted file mode 100644 index cfe155af..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat.html +++ /dev/null @@ -1,2550 +0,0 @@ - - - - - - - -SdFat: SdFat Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFat Class Reference
-
-
- -

Main file system class for SdFat library. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFat:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFat:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardcard ()
 
bool cardBegin (uint8_t csPin=SS, SPISettings settings=SPI_FULL_SPEED)
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool fsBegin ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
 SdFat (SPIClass *spiPort)
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

Main file system class for SdFat library.

-

Constructor & Destructor Documentation

- -

◆ SdFat()

- -
-
- - - - - -
- - - - - - - - -
SdFat::SdFat (SPIClass * spiPort)
-
-inlineexplicit
-
-

Constructor with SPI port selection.

Parameters
- - -
[in]spiPortSPI port number.
-
-
- -
-
-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCard >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFat::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCard * SdFileSystem< SdSpiCard >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardBegin()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFat::cardBegin (uint8_t csPin = SS,
SPISettings settings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card for diagnostic use only.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]settingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCard >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCard >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ fsBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFat::fsBegin ()
-
-inline
-
-

Initialize file system for diagnostic use only.

Returns
true for success else false.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat__coll__graph.png deleted file mode 100644 index 323a75e0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat__inherit__graph.png deleted file mode 100644 index 323a75e0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x-members.html deleted file mode 100644 index 116bda77..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x-members.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatEX Member List
-
-
- -

This is the complete list of members for SdFatEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatEXinline
SdFileSystem< SdSpiCardEX >::begin()SdFileSystem< SdSpiCardEX >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCardEX >inline
cardErrorCode()SdFileSystem< SdSpiCardEX >inline
cardErrorData()SdFileSystem< SdSpiCardEX >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint()SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint()SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
SdFatEX() (defined in SdFatEX)SdFatEXinline
SdFatEX(SPIClass *spiPort)SdFatEXinlineexplicit
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x.html deleted file mode 100644 index e51b2b88..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x.html +++ /dev/null @@ -1,2475 +0,0 @@ - - - - - - - -SdFat: SdFatEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatEX Class Reference
-
-
- -

SdFat class with extended SD I/O. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatEX:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatEX:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardEXcard ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
 SdFatEX (SPIClass *spiPort)
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

SdFat class with extended SD I/O.

-

Constructor & Destructor Documentation

- -

◆ SdFatEX()

- -
-
- - - - - -
- - - - - - - - -
SdFatEX::SdFatEX (SPIClass * spiPort)
-
-inlineexplicit
-
-

Constructor with SPI port selection.

Parameters
- - -
[in]spiPortSPI port number.
-
-
- -
-
-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCardEX >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFatEX::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCardEX * SdFileSystem< SdSpiCardEX >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCardEX >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCardEX >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x__coll__graph.png deleted file mode 100644 index 4a85bc64..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x__inherit__graph.png deleted file mode 100644 index 4a85bc64..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio-members.html deleted file mode 100644 index d524f8f9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio-members.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSdio Member List
-
-
- -

This is the complete list of members for SdFatSdio, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdFatSdioinline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdioCard >inline
cardBegin()SdFatSdioinline
cardErrorCode()SdFileSystem< SdioCard >inline
cardErrorData()SdFileSystem< SdioCard >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdioCard >inline
errorHalt(Print *pr)SdFileSystem< SdioCard >inline
errorHalt(char const *msg)SdFileSystem< SdioCard >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
errorPrint()SdFileSystem< SdioCard >inline
errorPrint(Print *pr)SdFileSystem< SdioCard >inline
errorPrint(const char *msg)SdFileSystem< SdioCard >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
fsBegin()SdFatSdioinline
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdioCard >inline
initErrorHalt(Print *pr)SdFileSystem< SdioCard >inline
initErrorHalt(char const *msg)SdFileSystem< SdioCard >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
initErrorPrint()SdFileSystem< SdioCard >inline
initErrorPrint(Print *pr)SdFileSystem< SdioCard >inline
initErrorPrint(char const *msg)SdFileSystem< SdioCard >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio.html deleted file mode 100644 index 1fe68066..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio.html +++ /dev/null @@ -1,2450 +0,0 @@ - - - - - - - -SdFat: SdFatSdio Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSdio Class Reference
-
-
- -

SdFat class using SDIO. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSdio:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSdio:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdioCardcard ()
 
bool cardBegin ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool fsBegin ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

SdFat class using SDIO.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdio::begin ()
-
-inline
-
-

Initialize SD card and file system.

Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdioCard * SdFileSystem< SdioCard >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdio::cardBegin ()
-
-inline
-
-

Initialize SD card for diagnostic use only.

-
Returns
true for success else false.
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdioCard >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdioCard >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ fsBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdio::fsBegin ()
-
-inline
-
-

Initialize file system for diagnostic use only.

Returns
true for success else false.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio__coll__graph.png deleted file mode 100644 index b8803e89..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio__inherit__graph.png deleted file mode 100644 index b8803e89..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x-members.html deleted file mode 100644 index 9a8a67e7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x-members.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSdioEX Member List
-
-
- -

This is the complete list of members for SdFatSdioEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdFatSdioEXinline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFatSdioEXinline
cardBegin()SdFatSdioEXinline
cardErrorCode()SdFileSystem< SdioCardEX >inline
cardErrorData()SdFileSystem< SdioCardEX >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdioCardEX >inline
errorHalt(Print *pr)SdFileSystem< SdioCardEX >inline
errorHalt(char const *msg)SdFileSystem< SdioCardEX >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
errorPrint()SdFileSystem< SdioCardEX >inline
errorPrint(Print *pr)SdFileSystem< SdioCardEX >inline
errorPrint(const char *msg)SdFileSystem< SdioCardEX >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
fsBegin()SdFatSdioEXinline
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdioCardEX >inline
initErrorHalt(Print *pr)SdFileSystem< SdioCardEX >inline
initErrorHalt(char const *msg)SdFileSystem< SdioCardEX >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint()SdFileSystem< SdioCardEX >inline
initErrorPrint(Print *pr)SdFileSystem< SdioCardEX >inline
initErrorPrint(char const *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x.html deleted file mode 100644 index d8c95f20..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x.html +++ /dev/null @@ -1,2450 +0,0 @@ - - - - - - - -SdFat: SdFatSdioEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSdioEX Class Reference
-
-
- -

SdFat class using SDIO. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSdioEX:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSdioEX:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdioCardEXcard ()
 
bool cardBegin ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool fsBegin ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

SdFat class using SDIO.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdioEX::begin ()
-
-inline
-
-

Initialize SD card and file system.

Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdioCardEX* SdFatSdioEX::card ()
-
-inline
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdioEX::cardBegin ()
-
-inline
-
-

Initialize SD card for diagnostic use only.

-
Returns
true for success else false.
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdioCardEX >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdioCardEX >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ fsBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdioEX::fsBegin ()
-
-inline
-
-

Initialize file system for diagnostic use only.

Returns
true for success else false.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x__coll__graph.png deleted file mode 100644 index cf84ef93..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x__inherit__graph.png deleted file mode 100644 index cf84ef93..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_sdio_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi-members.html deleted file mode 100644 index 0507c206..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi-members.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSoftSpi< MisoPin, MosiPin, SckPin > Member List
-
-
- -

This is the complete list of members for SdFatSoftSpi< MisoPin, MosiPin, SckPin >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatSoftSpi< MisoPin, MosiPin, SckPin >inline
SdFileSystem< SdSpiCard >::begin()SdFileSystem< SdSpiCard >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCard >inline
cardErrorCode()SdFileSystem< SdSpiCard >inline
cardErrorData()SdFileSystem< SdSpiCard >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint()SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint()SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi.html deleted file mode 100644 index 8ec7c9e1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi.html +++ /dev/null @@ -1,2445 +0,0 @@ - - - - - - - -SdFat: SdFatSoftSpi< MisoPin, MosiPin, SckPin > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSoftSpi< MisoPin, MosiPin, SckPin > Class Template Reference
-
-
- -

SdFat class using software SPI. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSoftSpi< MisoPin, MosiPin, SckPin >:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSoftSpi< MisoPin, MosiPin, SckPin >:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardcard ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
-class SdFatSoftSpi< MisoPin, MosiPin, SckPin >

- -

SdFat class using software SPI.

-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCard >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
-
-template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFatSoftSpi< MisoPin, MosiPin, SckPin >::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsignored for software SPI..
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCard * SdFileSystem< SdSpiCard >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCard >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCard >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi__coll__graph.png deleted file mode 100644 index e868a3cb..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi__inherit__graph.png deleted file mode 100644 index e868a3cb..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x-members.html deleted file mode 100644 index 8e2c1c93..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x-members.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSoftSpiEX< MisoPin, MosiPin, SckPin > Member List
-
-
- -

This is the complete list of members for SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >inline
SdFileSystem< SdSpiCardEX >::begin()SdFileSystem< SdSpiCardEX >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCardEX >inline
cardErrorCode()SdFileSystem< SdSpiCardEX >inline
cardErrorData()SdFileSystem< SdSpiCardEX >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint()SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint()SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x.html deleted file mode 100644 index 38eae09d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x.html +++ /dev/null @@ -1,2445 +0,0 @@ - - - - - - - -SdFat: SdFatSoftSpiEX< MisoPin, MosiPin, SckPin > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSoftSpiEX< MisoPin, MosiPin, SckPin > Class Template Reference
-
-
- -

SdFat class using software SPI and extended SD I/O. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardEXcard ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
-class SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >

- -

SdFat class using software SPI and extended SD I/O.

-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCardEX >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
-
-template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsignored for software SPI.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCardEX * SdFileSystem< SdSpiCardEX >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCardEX >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCardEX >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x__coll__graph.png deleted file mode 100644 index 470ddc43..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x__inherit__graph.png deleted file mode 100644 index 470ddc43..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_fat_soft_spi_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file-members.html deleted file mode 100644 index 4df1926f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file-members.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFile Member List
-
-
- -

This is the complete list of members for SdFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()PrintFileinline
clearError()FatFileinline
clearWriteError()PrintFileinline
FatFile::clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
flush()PrintFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()PrintFileinline
FatFile::getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()PrintFileinline
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
PrintFile() (defined in PrintFile)PrintFileinline
PrintFile(const char *path, oflag_t oflag)PrintFileinline
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()PrintFileinline
read(void *buf, size_t nbyte)PrintFile
FatFile::read()FatFileinline
FatFile::read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
SdFile() (defined in SdFile)SdFileinline
SdFile(const char *path, oflag_t oflag)SdFileinline
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(uint8_t b)PrintFileinline
write(const uint8_t *buf, size_t size)PrintFileinline
write(const char *str)PrintFileinline
write(uint8_t b)PrintFileinline
write(const void *buf, size_t nbyte)PrintFile
FatFile::write(const char *str)FatFileinline
FatFile::write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file.html deleted file mode 100644 index 31f889cb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file.html +++ /dev/null @@ -1,3721 +0,0 @@ - - - - - - - -SdFat: SdFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for backward compatibility. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFile:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdFile:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void clearError ()
 
void clearWriteError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
void flush ()
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read (void *buf, size_t nbyte)
 
int read ()
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
 SdFile (const char *path, oflag_t oflag)
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
size_t write (uint8_t b)
 
size_t write (const uint8_t *buf, size_t size)
 
int write (const char *str)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Class for backward compatibility.

-

Constructor & Destructor Documentation

- -

◆ SdFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
SdFile::SdFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::available ()
-
-inlineinherited
-
-
Returns
number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError() [1/2]

- -
-
- - - - - -
- - - - -
void FatFile::clearWriteError
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ clearWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
void PrintFile::flush ()
-
-inlineinherited
-
-

Ensure that any bytes written to the file are saved to the SD card.

- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError() [1/2]

- -
-
- - - - - -
- - - - -
bool FatFile::getWriteError
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ getWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::peek ()
-
-inlineinherited
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ read() [3/4]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [2/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [3/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inlineinherited
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [4/7]

- -
-
- - - - - -
- - - - - - - - -
size_t PrintFile::write (uint8_t b)
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1. Write a byte to a file. Required by the Arduino Print class.
-
Parameters
- - -
[in]bthe byte to be written. Use getWriteError to check for errors.
-
-
-
Returns
1 for success and 0 for failure.
- -
-
- -

◆ write() [5/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t PrintFile::write (const uint8_t * buf,
size_t size 
)
-
-inlineinherited
-
-

Write data to an open file. Form required by Print.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]sizeNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [6/7]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [7/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file__coll__graph.png deleted file mode 100644 index 5112d4b2..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file__inherit__graph.png deleted file mode 100644 index 5112d4b2..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system-members.html deleted file mode 100644 index 1d5268ab..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system-members.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFileSystem< SdDriverClass > Member List
-
-
- -

This is the complete list of members for SdFileSystem< SdDriverClass >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdFileSystem< SdDriverClass >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdDriverClass >inline
cardErrorCode()SdFileSystem< SdDriverClass >inline
cardErrorData()SdFileSystem< SdDriverClass >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdDriverClass >inline
errorHalt(Print *pr)SdFileSystem< SdDriverClass >inline
errorHalt(char const *msg)SdFileSystem< SdDriverClass >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
errorPrint()SdFileSystem< SdDriverClass >inline
errorPrint(Print *pr)SdFileSystem< SdDriverClass >inline
errorPrint(const char *msg)SdFileSystem< SdDriverClass >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdDriverClass >inline
initErrorHalt(Print *pr)SdFileSystem< SdDriverClass >inline
initErrorHalt(char const *msg)SdFileSystem< SdDriverClass >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint()SdFileSystem< SdDriverClass >inline
initErrorPrint(Print *pr)SdFileSystem< SdDriverClass >inline
initErrorPrint(char const *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system.html deleted file mode 100644 index 9110ee61..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system.html +++ /dev/null @@ -1,2450 +0,0 @@ - - - - - - - -SdFat: SdFileSystem< SdDriverClass > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFileSystem< SdDriverClass > Class Template Reference
-
-
- -

Virtual base class for SdFat library. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFileSystem< SdDriverClass >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdFileSystem< SdDriverClass >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdDriverClass * card ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

template<class SdDriverClass>
-class SdFileSystem< SdDriverClass >

- -

Virtual base class for SdFat library.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/2]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
bool SdFileSystem< SdDriverClass >::begin ()
-
-inline
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
SdDriverClass* SdFileSystem< SdDriverClass >::card ()
-
-inline
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdDriverClass >::cardErrorCode ()
-
-inline
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdDriverClass >::cardErrorData ()
-
-inline
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt ()
-
-inline
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (Print * pr)
-
-inline
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (char const * msg)
-
-inline
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (Print * pr,
char const * msg 
)
-
-inline
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (const __FlashStringHelper * msg)
-
-inline
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint ()
-
-inline
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (Print * pr)
-
-inline
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (const char * msg)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (Print * pr,
char const * msg 
)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (const __FlashStringHelper * msg)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt ()
-
-inline
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (Print * pr)
-
-inline
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (char const * msg)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (const __FlashStringHelper * msg)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint ()
-
-inline
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (Print * pr)
-
-inline
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (char const * msg)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (const __FlashStringHelper * msg)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system__coll__graph.png deleted file mode 100644 index 1eb49f11..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system__inherit__graph.png deleted file mode 100644 index 1eb49f11..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_file_system__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card-members.html deleted file mode 100644 index e0d4895b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdSpiCard Member List
-
-
- -

This is the complete list of members for SdSpiCard, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)SdSpiCard
cardSize()SdSpiCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdSpiCard
eraseSingleBlockEnable()SdSpiCard
error(uint8_t code)SdSpiCardinline
errorCode() constSdSpiCardinline
errorData() constSdSpiCardinline
isBusy()SdSpiCard
readBlock(uint32_t lba, uint8_t *dst)SdSpiCard
readBlocks(uint32_t lba, uint8_t *dst, size_t nb)SdSpiCard
readCID(cid_t *cid)SdSpiCardinline
readCSD(csd_t *csd)SdSpiCardinline
readData(uint8_t *dst)SdSpiCard
readOCR(uint32_t *ocr)SdSpiCard
readStart(uint32_t blockNumber)SdSpiCard
readStatus(uint8_t *status)SdSpiCard
readStop()SdSpiCard
SdSpiCard()SdSpiCardinline
spiStart()SdSpiCard
spiStop()SdSpiCard
syncBlocks()SdSpiCardinline
type() constSdSpiCardinline
writeBlock(uint32_t lba, const uint8_t *src)SdSpiCard
writeBlocks(uint32_t lba, const uint8_t *src, size_t nb)SdSpiCard
writeData(const uint8_t *src)SdSpiCard
writeStart(uint32_t blockNumber)SdSpiCard
writeStart(uint32_t blockNumber, uint32_t eraseCount)SdSpiCard
writeStop()SdSpiCard
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card.html deleted file mode 100644 index 69203acf..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card.html +++ /dev/null @@ -1,959 +0,0 @@ - - - - - - - -SdFat: SdSpiCard Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdSpiCard Class Reference
-
-
- -

Raw access to SD and SDHC flash memory cards via SPI protocol. - More...

- -

#include <SdSpiCard.h>

-
-Inheritance diagram for SdSpiCard:
-
-
Inheritance graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
bool eraseSingleBlockEnable ()
 
void error (uint8_t code)
 
int errorCode () const
 
int errorData () const
 
bool isBusy ()
 
bool readBlock (uint32_t lba, uint8_t *dst)
 
bool readBlocks (uint32_t lba, uint8_t *dst, size_t nb)
 
bool readCID (cid_t *cid)
 
bool readCSD (csd_t *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t blockNumber)
 
bool readStatus (uint8_t *status)
 
bool readStop ()
 
 SdSpiCard ()
 
void spiStart ()
 
void spiStop ()
 
bool syncBlocks ()
 
int type () const
 
bool writeBlock (uint32_t lba, const uint8_t *src)
 
bool writeBlocks (uint32_t lba, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t blockNumber)
 
bool writeStart (uint32_t blockNumber, uint32_t eraseCount)
 
bool writeStop ()
 
-

Detailed Description

-

Raw access to SD and SDHC flash memory cards via SPI protocol.

-

Constructor & Destructor Documentation

- -

◆ SdSpiCard()

- -
-
- - - - - -
- - - - - - - -
SdSpiCard::SdSpiCard ()
-
-inline
-
-

Construct an instance of SdSpiCard.

- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::begin (SdSpiDriver * spi,
uint8_t csPin,
SPISettings spiSettings 
)
-
-

Initialize the SD card.

Parameters
- - - - -
[in]spiSPI driver for card.
[in]csPincard chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ cardSize()

- -
-
- - - - - - - -
uint32_t SdSpiCard::cardSize ()
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ eraseSingleBlockEnable()

- -
-
- - - - - - - -
bool SdSpiCard::eraseSingleBlockEnable ()
-
-

Determine if card supports single block erase.

-
Returns
true is returned if single block erase is supported. false is returned if single block erase is not supported.
- -
-
- -

◆ error()

- -
-
- - - - - -
- - - - - - - - -
void SdSpiCard::error (uint8_t code)
-
-inline
-
-

Set SD error code.

Parameters
- - -
[in]codevalue for error code.
-
-
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorCode () const
-
-inline
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorData () const
-
-inline
-
-
Returns
error data for last error.
- -
-
- -

◆ isBusy()

- -
-
- - - - - - - -
bool SdSpiCard::isBusy ()
-
-

Check for busy. MISO low indicates the card is busy.

-
Returns
true if busy else false.
- -
-
- -

◆ readBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlock (uint32_t lba,
uint8_t * dst 
)
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlocks (uint32_t lba,
uint8_t * dst,
size_t nb 
)
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCID (cid_t * cid)
-
-inline
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCSD (csd_t * csd)
-
-inline
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - - - - -
bool SdSpiCard::readData (uint8_t * dst)
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - - - - -
bool SdSpiCard::readOCR (uint32_t * ocr)
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart()

- -
-
- - - - - - - - -
bool SdSpiCard::readStart (uint32_t blockNumber)
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStatus()

- -
-
- - - - - - - - -
bool SdSpiCard::readStatus (uint8_t * status)
-
-

Return the 64 byte card status

Parameters
- - -
[out]statuslocation for 64 status bytes.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - - - -
bool SdSpiCard::readStop ()
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ spiStart()

- -
-
- - - - - - - -
void SdSpiCard::spiStart ()
-
-

Set CS low and activate the card.

- -
-
- -

◆ spiStop()

- -
-
- - - - - - - -
void SdSpiCard::spiStop ()
-
-

Set CS high and deactivate the card.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::syncBlocks ()
-
-inline
-
-
Returns
success if sync successful. Not for user apps.
- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::type () const
-
-inline
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlock (uint32_t lba,
const uint8_t * src 
)
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlocks (uint32_t lba,
const uint8_t * src,
size_t nb 
)
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeData()

- -
-
- - - - - - - - -
bool SdSpiCard::writeData (const uint8_t * src)
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber)
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber,
uint32_t eraseCount 
)
-
-

Start a write multiple blocks sequence with pre-erase.

-
Parameters
- - - -
[in]blockNumberAddress of first block in sequence.
[in]eraseCountThe number of blocks to be pre-erased.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - - - -
bool SdSpiCard::writeStop ()
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h
  • -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card__inherit__graph.png deleted file mode 100644 index 4f96ac4c..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x-members.html deleted file mode 100644 index 2b5fc059..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdSpiCardEX Member List
-
-
- -

This is the complete list of members for SdSpiCardEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)SdSpiCardEXinline
cardSize()SdSpiCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdSpiCard
eraseSingleBlockEnable()SdSpiCard
error(uint8_t code)SdSpiCardinline
errorCode() constSdSpiCardinline
errorData() constSdSpiCardinline
isBusy()SdSpiCard
readBlock(uint32_t block, uint8_t *dst)SdSpiCardEX
readBlocks(uint32_t block, uint8_t *dst, size_t nb)SdSpiCardEX
readCID(cid_t *cid)SdSpiCardinline
readCSD(csd_t *csd)SdSpiCardinline
readData(uint8_t *dst)SdSpiCard
readOCR(uint32_t *ocr)SdSpiCard
readStart(uint32_t blockNumber)SdSpiCard
readStatus(uint8_t *status)SdSpiCard
readStop()SdSpiCard
SdSpiCard()SdSpiCardinline
spiStart()SdSpiCard
spiStop()SdSpiCard
syncBlocks()SdSpiCardEX
type() constSdSpiCardinline
writeBlock(uint32_t block, const uint8_t *src)SdSpiCardEX
writeBlocks(uint32_t block, const uint8_t *src, size_t nb)SdSpiCardEX
writeData(const uint8_t *src)SdSpiCard
writeStart(uint32_t blockNumber)SdSpiCard
writeStart(uint32_t blockNumber, uint32_t eraseCount)SdSpiCard
writeStop()SdSpiCard
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x.html deleted file mode 100644 index 5d52336a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x.html +++ /dev/null @@ -1,1063 +0,0 @@ - - - - - - - -SdFat: SdSpiCardEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdSpiCardEX Class Reference
-
-
- -

Extended SD I/O block driver. - More...

- -

#include <SdSpiCard.h>

-
-Inheritance diagram for SdSpiCardEX:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for SdSpiCardEX:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
bool eraseSingleBlockEnable ()
 
void error (uint8_t code)
 
int errorCode () const
 
int errorData () const
 
bool isBusy ()
 
bool readBlock (uint32_t block, uint8_t *dst)
 
bool readBlocks (uint32_t block, uint8_t *dst, size_t nb)
 
bool readCID (cid_t *cid)
 
bool readCSD (csd_t *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t blockNumber)
 
bool readStatus (uint8_t *status)
 
bool readStop ()
 
void spiStart ()
 
void spiStop ()
 
bool syncBlocks ()
 
int type () const
 
bool writeBlock (uint32_t block, const uint8_t *src)
 
bool writeBlocks (uint32_t block, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t blockNumber)
 
bool writeStart (uint32_t blockNumber, uint32_t eraseCount)
 
bool writeStop ()
 
-

Detailed Description

-

Extended SD I/O block driver.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::begin (SdSpiDriver * spi,
uint8_t csPin,
SPISettings spiSettings 
)
-
-inline
-
-

Initialize the SD card

-
Parameters
- - - - -
[in]spiSPI driver.
[in]csPinCard chip select pin number.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ cardSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdSpiCard::cardSize ()
-
-inherited
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-inherited
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ eraseSingleBlockEnable()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::eraseSingleBlockEnable ()
-
-inherited
-
-

Determine if card supports single block erase.

-
Returns
true is returned if single block erase is supported. false is returned if single block erase is not supported.
- -
-
- -

◆ error()

- -
-
- - - - - -
- - - - - - - - -
void SdSpiCard::error (uint8_t code)
-
-inlineinherited
-
-

Set SD error code.

Parameters
- - -
[in]codevalue for error code.
-
-
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorCode () const
-
-inlineinherited
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorData () const
-
-inlineinherited
-
-
Returns
error data for last error.
- -
-
- -

◆ isBusy()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::isBusy ()
-
-inherited
-
-

Check for busy. MISO low indicates the card is busy.

-
Returns
true if busy else false.
- -
-
- -

◆ readBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::readBlock (uint32_t block,
uint8_t * dst 
)
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]blockLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::readBlocks (uint32_t block,
uint8_t * dst,
size_t nb 
)
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCID (cid_t * cid)
-
-inlineinherited
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCSD (csd_t * csd)
-
-inlineinherited
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readData (uint8_t * dst)
-
-inherited
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readOCR (uint32_t * ocr)
-
-inherited
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStart (uint32_t blockNumber)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStatus()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStatus (uint8_t * status)
-
-inherited
-
-

Return the 64 byte card status

Parameters
- - -
[out]statuslocation for 64 status bytes.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::readStop ()
-
-inherited
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ spiStart()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStart ()
-
-inherited
-
-

Set CS low and activate the card.

- -
-
- -

◆ spiStop()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStop ()
-
-inherited
-
-

Set CS high and deactivate the card.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - - - -
bool SdSpiCardEX::syncBlocks ()
-
-

End multi-block transfer and go to idle state.

Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::type () const
-
-inlineinherited
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::writeBlock (uint32_t block,
const uint8_t * src 
)
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]blockLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::writeBlocks (uint32_t block,
const uint8_t * src,
size_t nb 
)
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeData (const uint8_t * src)
-
-inherited
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber,
uint32_t eraseCount 
)
-
-inherited
-
-

Start a write multiple blocks sequence with pre-erase.

-
Parameters
- - - -
[in]blockNumberAddress of first block in sequence.
[in]eraseCountThe number of blocks to be pre-erased.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::writeStop ()
-
-inherited
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h
  • -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCardEX.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x__coll__graph.png deleted file mode 100644 index 93643bbb..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x__inherit__graph.png deleted file mode 100644 index 93643bbb..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sd_spi_card_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card-members.html deleted file mode 100644 index c564a7ce..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdioCard Member List
-
-
- -

This is the complete list of members for SdioCard, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdioCard
cardSize()SdioCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdioCard
errorCode()SdioCard
errorData()SdioCard
errorLine()SdioCard
isBusy()SdioCard
kHzSdClk()SdioCard
readBlock(uint32_t lba, uint8_t *dst)SdioCardvirtual
readBlocks(uint32_t lba, uint8_t *dst, size_t nb)SdioCardvirtual
readCID(void *cid)SdioCard
readCSD(void *csd)SdioCard
readData(uint8_t *dst)SdioCard
readOCR(uint32_t *ocr)SdioCard
readStart(uint32_t lba)SdioCard
readStart(uint32_t lba, uint32_t count)SdioCard
readStop()SdioCard
syncBlocks()SdioCardvirtual
type()SdioCard
writeBlock(uint32_t lba, const uint8_t *src)SdioCardvirtual
writeBlocks(uint32_t lba, const uint8_t *src, size_t nb)SdioCardvirtual
writeData(const uint8_t *src)SdioCard
writeStart(uint32_t lba)SdioCard
writeStart(uint32_t lba, uint32_t count)SdioCard
writeStop()SdioCard
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card.html deleted file mode 100644 index f90cf807..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card.html +++ /dev/null @@ -1,887 +0,0 @@ - - - - - - - -SdFat: SdioCard Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdioCard Class Reference
-
-
- -

Raw SDIO access to SD and SDHC flash memory cards. - More...

- -

#include <SdioCard.h>

-
-Inheritance diagram for SdioCard:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdioCard:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin ()
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
uint8_t errorCode ()
 
uint32_t errorData ()
 
uint32_t errorLine ()
 
bool isBusy ()
 
uint32_t kHzSdClk ()
 
bool readBlock (uint32_t lba, uint8_t *dst)
 
bool readBlocks (uint32_t lba, uint8_t *dst, size_t nb)
 
bool readCID (void *cid)
 
bool readCSD (void *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t lba)
 
bool readStart (uint32_t lba, uint32_t count)
 
bool readStop ()
 
bool syncBlocks ()
 
uint8_t type ()
 
bool writeBlock (uint32_t lba, const uint8_t *src)
 
bool writeBlocks (uint32_t lba, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t lba)
 
bool writeStart (uint32_t lba, uint32_t count)
 
bool writeStop ()
 
-

Detailed Description

-

Raw SDIO access to SD and SDHC flash memory cards.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - -
bool SdioCard::begin ()
-
-

Initialize the SD card.

Returns
true for success else false.
- -
-
- -

◆ cardSize()

- -
-
- - - - - - - -
uint32_t SdioCard::cardSize ()
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdioCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ errorCode()

- -
-
- - - - - - - -
uint8_t SdioCard::errorCode ()
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - - - -
uint32_t SdioCard::errorData ()
-
-
Returns
error data for last error.
- -
-
- -

◆ errorLine()

- -
-
- - - - - - - -
uint32_t SdioCard::errorLine ()
-
-
Returns
error line for last error. Tmp function for debug.
- -
-
- -

◆ isBusy()

- -
-
- - - - - - - -
bool SdioCard::isBusy ()
-
-

Check for busy with CMD13.

-
Returns
true if busy else false.
- -
-
- -

◆ kHzSdClk()

- -
-
- - - - - - - -
uint32_t SdioCard::kHzSdClk ()
-
-
Returns
the SD clock frequency in kHz.
- -
-
- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::readBlock (uint32_t lba,
uint8_t * dst 
)
-
-virtual
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCard::readBlocks (uint32_t lba,
uint8_t * dst,
size_t nb 
)
-
-virtual
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ readCID()

- -
-
- - - - - - - - -
bool SdioCard::readCID (void * cid)
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - - - - -
bool SdioCard::readCSD (void * csd)
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - - - - -
bool SdioCard::readData (uint8_t * dst)
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - - - - -
bool SdioCard::readOCR (uint32_t * ocr)
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart() [1/2]

- -
-
- - - - - - - - -
bool SdioCard::readStart (uint32_t lba)
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStart() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdioCard::readStart (uint32_t lba,
uint32_t count 
)
-
-

Start a read multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - - - -
bool SdioCard::readStop ()
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::syncBlocks ()
-
-virtual
-
-
Returns
success if sync successful. Not for user apps.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ type()

- -
-
- - - - - - - -
uint8_t SdioCard::type ()
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::writeBlock (uint32_t lba,
const uint8_t * src 
)
-
-virtual
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCard::writeBlocks (uint32_t lba,
const uint8_t * src,
size_t nb 
)
-
-virtual
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ writeData()

- -
-
- - - - - - - - -
bool SdioCard::writeData (const uint8_t * src)
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - - - - -
bool SdioCard::writeStart (uint32_t lba)
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdioCard::writeStart (uint32_t lba,
uint32_t count 
)
-
-

Start a write multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - - - -
bool SdioCard::writeStop ()
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdioCard.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card__coll__graph.png deleted file mode 100644 index a82e5bc5..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card__inherit__graph.png deleted file mode 100644 index 5b024ad6..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x-members.html deleted file mode 100644 index bd8fddfc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdioCardEX Member List
-
-
- -

This is the complete list of members for SdioCardEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdioCardEXinline
cardSize()SdioCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdioCardEXinline
errorCode()SdioCard
errorData()SdioCard
errorLine()SdioCard
isBusy()SdioCard
kHzSdClk()SdioCard
readBlock(uint32_t block, uint8_t *dst)SdioCardEXvirtual
readBlocks(uint32_t block, uint8_t *dst, size_t nb)SdioCardEXvirtual
readCID(void *cid)SdioCard
readCSD(void *csd)SdioCard
readData(uint8_t *dst)SdioCard
readOCR(uint32_t *ocr)SdioCard
readStart(uint32_t lba)SdioCard
readStart(uint32_t lba, uint32_t count)SdioCard
readStop()SdioCard
syncBlocks()SdioCardEXvirtual
type()SdioCard
writeBlock(uint32_t block, const uint8_t *src)SdioCardEXvirtual
writeBlocks(uint32_t block, const uint8_t *src, size_t nb)SdioCardEXvirtual
writeData(const uint8_t *src)SdioCard
writeStart(uint32_t lba)SdioCard
writeStart(uint32_t lba, uint32_t count)SdioCard
writeStop()SdioCard
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x.html deleted file mode 100644 index b8a10353..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x.html +++ /dev/null @@ -1,1035 +0,0 @@ - - - - - - - -SdFat: SdioCardEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdioCardEX Class Reference
-
-
- -

Extended SD I/O block driver. - More...

- -

#include <SdioCard.h>

-
-Inheritance diagram for SdioCardEX:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdioCardEX:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin ()
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
uint8_t errorCode ()
 
uint32_t errorData ()
 
uint32_t errorLine ()
 
bool isBusy ()
 
uint32_t kHzSdClk ()
 
bool readBlock (uint32_t block, uint8_t *dst)
 
bool readBlocks (uint32_t block, uint8_t *dst, size_t nb)
 
bool readCID (void *cid)
 
bool readCSD (void *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t lba)
 
bool readStart (uint32_t lba, uint32_t count)
 
bool readStop ()
 
bool syncBlocks ()
 
uint8_t type ()
 
bool writeBlock (uint32_t block, const uint8_t *src)
 
bool writeBlocks (uint32_t block, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t lba)
 
bool writeStart (uint32_t lba, uint32_t count)
 
bool writeStop ()
 
-

Detailed Description

-

Extended SD I/O block driver.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - -
- - - - - - - -
bool SdioCardEX::begin ()
-
-inline
-
-

Initialize the SD card

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ cardSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::cardSize ()
-
-inherited
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCardEX::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-inline
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdioCard::errorCode ()
-
-inherited
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::errorData ()
-
-inherited
-
-
Returns
error data for last error.
- -
-
- -

◆ errorLine()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::errorLine ()
-
-inherited
-
-
Returns
error line for last error. Tmp function for debug.
- -
-
- -

◆ isBusy()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::isBusy ()
-
-inherited
-
-

Check for busy with CMD13.

-
Returns
true if busy else false.
- -
-
- -

◆ kHzSdClk()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::kHzSdClk ()
-
-inherited
-
-
Returns
the SD clock frequency in kHz.
- -
-
- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCardEX::readBlock (uint32_t block,
uint8_t * dst 
)
-
-virtual
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]blockLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCardEX::readBlocks (uint32_t block,
uint8_t * dst,
size_t nb 
)
-
-virtual
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readCID (void * cid)
-
-inherited
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readCSD (void * csd)
-
-inherited
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readData (uint8_t * dst)
-
-inherited
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readOCR (uint32_t * ocr)
-
-inherited
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readStart (uint32_t lba)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::readStart (uint32_t lba,
uint32_t count 
)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::readStop ()
-
-inherited
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdioCardEX::syncBlocks ()
-
-virtual
-
-

End multi-block transfer and go to idle state.

Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdioCard::type ()
-
-inherited
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCardEX::writeBlock (uint32_t block,
const uint8_t * src 
)
-
-virtual
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]blockLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCardEX::writeBlocks (uint32_t block,
const uint8_t * src,
size_t nb 
)
-
-virtual
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ writeData()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::writeData (const uint8_t * src)
-
-inherited
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::writeStart (uint32_t lba)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::writeStart (uint32_t lba,
uint32_t count 
)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::writeStop ()
-
-inherited
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdioCard.h
  • -
  • Arduino/libraries/SdFat/src/SdCard/SdioCardEX.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x__coll__graph.png deleted file mode 100644 index 8d0fd989..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x__inherit__graph.png deleted file mode 100644 index 8d0fd989..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sdio_card_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream-members.html deleted file mode 100644 index 6fb16aab..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream-members.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
StdioStream Member List
-
-
- -

This is the complete list of members for StdioStream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()FatFileinlineprivate
clearerr()StdioStreaminline
clearError()FatFileinlineprivate
clearWriteError()FatFileinlineprivate
close()FatFileprivate
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFileprivate
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFileprivate
createContiguous(const char *path, uint32_t size)FatFileinlineprivate
curCluster() constFatFileinlineprivate
curPosition() constFatFileinlineprivate
cwd()FatFileinlineprivatestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlineprivatestatic
dateTimeCallbackCancel()FatFileinlineprivatestatic
dirEntry(dir_t *dir)FatFileprivate
dirIndex()FatFileinlineprivate
dirName(const dir_t *dir, char *name)FatFileprivatestatic
dirSize()FatFileprivate
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFileprivate
exists(const char *path)FatFileinlineprivate
FatFile()FatFileinlineprivate
FatFile(const char *path, oflag_t oflag)FatFileinlineprivate
fclose()StdioStream
feof()StdioStreaminline
ferror()StdioStreaminline
fflush()StdioStream
fgetc()StdioStreaminline
fgets(char *str, size_t num, size_t *len=0)StdioStream
FatFile::fgets(char *str, int16_t num, char *delim=0)FatFileprivate
fileAttr() constFatFileinlineprivate
fileSize() constFatFileinlineprivate
firstBlock()FatFileinlineprivate
firstCluster() constFatFileinlineprivate
fopen(const char *path, const char *mode)StdioStream
fputc(int c)StdioStreaminline
fputs(const char *str)StdioStream
fread(void *ptr, size_t size, size_t count)StdioStream
fseek(int32_t offset, int origin)StdioStream
ftell()StdioStream
fwrite(const void *ptr, size_t size, size_t count)StdioStream
getc()StdioStreaminline
getError()FatFileinlineprivate
getName(char *name, size_t size)FatFileprivate
getpos(FatPos_t *pos)FatFileprivate
getSFN(char *name)FatFileprivate
getWriteError()FatFileinlineprivate
isDir() constFatFileinlineprivate
isFile() constFatFileinlineprivate
isHidden() constFatFileinlineprivate
isLFN() constFatFileinlineprivate
isOpen() constFatFileinlineprivate
isReadOnly() constFatFileinlineprivate
isRoot() constFatFileinlineprivate
isRoot32() constFatFileinlineprivate
isRootFixed() constFatFileinlineprivate
isSubDir() constFatFileinlineprivate
isSystem() constFatFileinlineprivate
legal83Char(uint8_t c)FatFileinlineprivatestatic
ls(uint8_t flags=0)FatFileinlineprivate
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFileprivate
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFileprivate
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinlineprivate
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFileprivate
openRoot(FatVolume *vol)FatFileprivate
peek()FatFileprivate
print(char c)StdioStreaminline
print(const char *str)StdioStreaminline
print(const __FlashStringHelper *str)StdioStream
print(double val, uint8_t prec=2)StdioStreaminline
print(float val, uint8_t prec=2)StdioStreaminline
print(T val)StdioStreaminline
printCreateDateTime(print_t *pr)FatFileprivate
printDec(char n)StdioStreaminline
printDec(signed char n)StdioStream
printDec(unsigned char n)StdioStreaminline
printDec(int16_t n)StdioStream
printDec(uint16_t n)StdioStream
printDec(int32_t n)StdioStream
printDec(uint32_t n)StdioStream
printDec(double value, uint8_t prec)StdioStreaminline
printDec(float value, uint8_t prec)StdioStream
printFatDate(uint16_t fatDate)FatFileinlineprivatestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFileprivatestatic
printFatTime(uint16_t fatTime)FatFileinlineprivatestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFileprivatestatic
printField(double value, char term, uint8_t prec=2)StdioStreaminline
printField(float value, char term, uint8_t prec=2)StdioStreaminline
printField(T value, char term)StdioStreaminline
FatFile::printField(int16_t value, char term)FatFileprivate
FatFile::printField(uint16_t value, char term)FatFileprivate
FatFile::printField(int32_t value, char term)FatFileprivate
FatFile::printField(uint32_t value, char term)FatFileprivate
printFileSize(print_t *pr)FatFileprivate
printHex(uint32_t n)StdioStream
printHexln(uint32_t n)StdioStreaminline
println()StdioStreaminline
println(double val, uint8_t prec=2)StdioStreaminline
println(float val, uint8_t prec=2)StdioStreaminline
println(T val)StdioStreaminline
printModifyDateTime(print_t *pr)FatFileprivate
printName()FatFileinlineprivate
printName(print_t *pr)FatFileprivate
printSFN(print_t *pr)FatFileprivate
putc(int c)StdioStreaminline
putCRLF()StdioStreaminline
read()FatFileinlineprivate
read(void *buf, size_t nbyte)FatFileprivate
readDir(dir_t *dir)FatFileprivate
remove()FatFileprivate
remove(FatFile *dirFile, const char *path)FatFileprivatestatic
rename(FatFile *dirFile, const char *newPath)FatFileprivate
rewind()StdioStream
rmdir()FatFileprivate
rmRfStar()FatFileprivate
seekCur(int32_t offset)FatFileinlineprivate
seekEnd(int32_t offset=0)FatFileinlineprivate
seekSet(uint32_t pos)FatFileprivate
setCwd(FatFile *dir)FatFileinlineprivatestatic
setpos(FatPos_t *pos)FatFileprivate
StdioStream()StdioStreaminline
sync()FatFileprivate
timestamp(FatFile *file)FatFileprivate
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFileprivate
truncate(uint32_t length)FatFileprivate
ungetc(int c)StdioStream
volume() constFatFileinlineprivate
FatFile::write(const char *str)FatFileinlineprivate
FatFile::write(uint8_t b)FatFileinlineprivate
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream.html deleted file mode 100644 index 9748b2ef..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream.html +++ /dev/null @@ -1,1854 +0,0 @@ - - - - - - - -SdFat: StdioStream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

StdioStream implements a minimal stdio stream. - More...

- -

#include <StdioStream.h>

-
-Inheritance diagram for StdioStream:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for StdioStream:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

void clearerr ()
 
int fclose ()
 
int feof ()
 
int ferror ()
 
int fflush ()
 
int fgetc ()
 
char * fgets (char *str, size_t num, size_t *len=0)
 
bool fopen (const char *path, const char *mode)
 
int fputc (int c)
 
int fputs (const char *str)
 
size_t fread (void *ptr, size_t size, size_t count)
 
int fseek (int32_t offset, int origin)
 
int32_t ftell ()
 
size_t fwrite (const void *ptr, size_t size, size_t count)
 
int getc ()
 
size_t print (char c)
 
size_t print (const char *str)
 
size_t print (const __FlashStringHelper *str)
 
size_t print (double val, uint8_t prec=2)
 
size_t print (float val, uint8_t prec=2)
 
template<typename T >
size_t print (T val)
 
int printDec (char n)
 
int printDec (signed char n)
 
int printDec (unsigned char n)
 
int printDec (int16_t n)
 
int printDec (uint16_t n)
 
int printDec (int32_t n)
 
int printDec (uint32_t n)
 
int printDec (double value, uint8_t prec)
 
int printDec (float value, uint8_t prec)
 
int printField (double value, char term, uint8_t prec=2)
 
int printField (float value, char term, uint8_t prec=2)
 
template<typename T >
int printField (T value, char term)
 
int printHex (uint32_t n)
 
int printHexln (uint32_t n)
 
size_t println ()
 
size_t println (double val, uint8_t prec=2)
 
size_t println (float val, uint8_t prec=2)
 
template<typename T >
size_t println (T val)
 
int putc (int c)
 
int putCRLF ()
 
bool rewind ()
 
 StdioStream ()
 
int ungetc (int c)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Private Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Private Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

StdioStream implements a minimal stdio stream.

-

StdioStream does not support subdirectories or long file names.

-

Constructor & Destructor Documentation

- -

◆ StdioStream()

- -
-
- - - - - -
- - - - - - - -
StdioStream::StdioStream ()
-
-inline
-
-

Constructor

- -
-
-

Member Function Documentation

- -

◆ clearerr()

- -
-
- - - - - -
- - - - - - - -
void StdioStream::clearerr ()
-
-inline
-
-

Clear the stream's end-of-file and error indicators.

- -
-
- -

◆ fclose()

- -
-
- - - - - - - -
int StdioStream::fclose ()
-
-

Close a stream.

-

A successful call to the fclose function causes the stream to be flushed and the associated file to be closed. Any unwritten buffered data is written to the file; any unread buffered data is discarded. Whether or not the call succeeds, the stream is disassociated from the file.

-
Returns
zero if the stream was successfully closed, or EOF if any any errors are detected.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ feof()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::feof ()
-
-inline
-
-

Test the stream's end-of-file indicator.

Returns
non-zero if and only if the end-of-file indicator is set.
- -
-
- -

◆ ferror()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::ferror ()
-
-inline
-
-

Test the stream's error indicator.

Returns
return non-zero if and only if the error indicator is set.
- -
-
- -

◆ fflush()

- -
-
- - - - - - - -
int StdioStream::fflush ()
-
-

Flush the stream.

-

If stream is an output stream or an update stream in which the most recent operation was not input, any unwritten data is written to the file; otherwise the call is an error since any buffered input data would be lost.

-
Returns
sets the error indicator for the stream and returns EOF if an error occurs, otherwise it returns zero.
- -
-
- -

◆ fgetc()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::fgetc ()
-
-inline
-
-

Get a byte from the stream.

-
Returns
If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream is set and the fgetc function returns EOF. Otherwise, the fgetc function returns the next character from the input stream.
- -
-
- -

◆ fgets()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
char * StdioStream::fgets (char * str,
size_t num,
size_t * len = 0 
)
-
-

Get a string from a stream.

-

The fgets function reads at most one less than the number of characters specified by num from the stream into the array pointed to by str. No additional characters are read after a new-line character (which is retained) or after end-of-file. A null character is written immediately after the last character read into the array.

-
Parameters
- - - - -
[out]strPointer to an array of where the string is copied.
[in]numMaximum number of characters including the null character.
[out]lenIf len is not null and fgets is successful, the length of the string is returned.
-
-
-
Returns
str if successful. If end-of-file is encountered and no characters have been read into the array, the contents of the array remain unchanged and a null pointer is returned. If a read error occurs during the operation, the array contents are indeterminate and a null pointer is returned.
- -
-
- -

◆ fopen()

- -
-
- - - - - - - - - - - - - - - - - - -
bool StdioStream::fopen (const char * path,
const char * mode 
)
-
-

Open a stream.

-

Open a file and associates the stream with it.

-
Parameters
- - - -
[in]pathfile to be opened.
[in]modea string that indicates the open mode.
-
-
- - - - - - - - - - - - - - - - - -
"r" or "rb" Open a file for reading. The file must exist.
"w" or "wb" Truncate an existing to zero length or create an empty file for writing.
"wx" or "wbx" Create a file for writing. Fails if the file already exists.
"a" or "ab" Append; open or create file for writing at end-of-file.
"r+" or "rb+" or "r+b" Open a file for update (reading and writing).
"w+" or "w+b" or "wb+" Truncate an existing to zero length or create a file for update.
"w+x" or "w+bx" or "wb+x" Create a file for update. Fails if the file already exists.
"a+" or "a+b" or "ab+" Append; open or create a file for update, writing at end-of-file.
-

The character 'b' shall have no effect, but is allowed for ISO C standard conformance.

-

Opening a file with append mode causes all subsequent writes to the file to be forced to the then current end-of-file, regardless of intervening calls to the fseek function.

-

When a file is opened with update mode, both input and output may be performed on the associated stream. However, output shall not be directly followed by input without an intervening call to the fflush function or to a file positioning function (fseek, or rewind), and input shall not be directly followed by output without an intervening call to a file positioning function, unless the input operation encounters end-of-file.

-
Returns
true for success or false for failure.
- -
-
- -

◆ fputc()

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::fputc (int c)
-
-inline
-
-

Write a byte to a stream.

-
Parameters
- - -
[in]cthe byte to be written (converted to an unsigned char).
-
-
-
Returns
Upon successful completion, fputc() returns the value it has written. Otherwise, it returns EOF and sets the error indicator for the stream.
- -
-
- -

◆ fputs()

- -
-
- - - - - - - - -
int StdioStream::fputs (const char * str)
-
-

Write a string to a stream.

-
Parameters
- - -
[in]stra pointer to the string to be written.
-
-
-
Returns
for success, fputs() returns a non-negative number. Otherwise, it returns EOF and sets the error indicator for the stream.
- -
-
- -

◆ fread()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
size_t StdioStream::fread (void * ptr,
size_t size,
size_t count 
)
-
-

Binary input.

-

Reads an array of up to count elements, each one with a size of size bytes.

Parameters
- - - - -
[out]ptrpointer to area of at least (size*count) bytes where the data will be stored.
[in]sizethe size, in bytes, of each element to be read.
[in]countthe number of elements to be read.
-
-
-
Returns
number of elements successfully read, which may be less than count if a read error or end-of-file is encountered. If size or count is zero, fread returns zero and the contents of the array and the state of the stream remain unchanged.
- -
-
- -

◆ fseek()

- -
-
- - - - - - - - - - - - - - - - - - -
int StdioStream::fseek (int32_t offset,
int origin 
)
-
-

Set the file position for the stream.

-
Parameters
- - - -
[in]offsetnumber of offset from the origin.
[in]originposition used as reference for the offset. It is specified by one of the following constants.
-
-
-

SEEK_SET - Beginning of file.

-

SEEK_CUR - Current position of the file pointer.

-

SEEK_END - End of file.

-
Returns
zero for success. Otherwise, it returns non-zero and sets the error indicator for the stream.
- -
-
- -

◆ ftell()

- -
-
- - - - - - - -
int32_t StdioStream::ftell ()
-
-

Get the current position in a stream.

-
Returns
If successful, ftell return the current value of the position indicator. On failure, ftell returns −1L.
- -
-
- -

◆ fwrite()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
size_t StdioStream::fwrite (const void * ptr,
size_t size,
size_t count 
)
-
-

Binary output.

-

Writes an array of up to count elements, each one with a size of size bytes.

Parameters
- - - - -
[in]ptrpointer to (size*count) bytes of data to be written.
[in]sizethe size, in bytes, of each element to be written.
[in]countthe number of elements to be written.
-
-
-
Returns
number of elements successfully written. if this number is less than count, an error has occurred. If size or count is zero, fwrite returns zero.
- -
-
- -

◆ getc()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::getc ()
-
-inline
-
-

Get a byte from the stream.

-

getc and fgetc are equivalent but getc is in-line so it is faster but require more flash memory.

-
Returns
If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream is set and the fgetc function returns EOF. Otherwise, the fgetc function returns the next character from the input stream.
- -
-
- -

◆ print() [1/6]

- -
-
- - - - - -
- - - - - - - - -
size_t StdioStream::print (char c)
-
-inline
-
-

Write a character.

Parameters
- - -
[in]cthe character to write.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [2/6]

- -
-
- - - - - -
- - - - - - - - -
size_t StdioStream::print (const char * str)
-
-inline
-
-

Write a string.

-
Parameters
- - -
[in]strthe string to be written.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [3/6]

- -
-
- - - - - - - - -
size_t StdioStream::print (const __FlashStringHelper * str)
-
-

Print a string stored in flash memory.

-
Parameters
- - -
[in]strthe string to print.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::print (double val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number.

-
Parameters
- - - -
[in]precNumber of digits after decimal point.
[in]valthe number to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::print (float val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number.

-
Parameters
- - - -
[in]precNumber of digits after decimal point.
[in]valthe number to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [6/6]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
size_t StdioStream::print (val)
-
-inline
-
-

Print a number.

-
Parameters
- - -
[in]valthe number to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ printDec() [1/9]

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::printDec (char n)
-
-inline
-
-

Print a char as a number.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [2/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (signed char n)
-
-

print a signed 8-bit integer

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [3/9]

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::printDec (unsigned char n)
-
-inline
-
-

Print an unsigned 8-bit number.

Parameters
- - -
[in]nnumber to be print.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [4/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (int16_t n)
-
-

Print a int16_t

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [5/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (uint16_t n)
-
-

print a uint16_t.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [6/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (int32_t n)
-
-

Print a signed 32-bit integer.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [7/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (uint32_t n)
-
-

Write an unsigned 32-bit number.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [8/9]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int StdioStream::printDec (double value,
uint8_t prec 
)
-
-inline
-
-

Print a double.

Parameters
- - - -
[in]valueThe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [9/9]

- -
-
- - - - - - - - - - - - - - - - - - -
int StdioStream::printDec (float value,
uint8_t prec 
)
-
-

Print a float.

Parameters
- - - -
[in]valueThe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int StdioStream::printField (double value,
char term,
uint8_t prec = 2 
)
-
-inline
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int StdioStream::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inline
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/3]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
int StdioStream::printField (value,
char term 
)
-
-inline
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printHex()

- -
-
- - - - - - - - -
int StdioStream::printHex (uint32_t n)
-
-

Print HEX

Parameters
- - -
[in]nnumber to be printed as HEX.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printHexln()

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::printHexln (uint32_t n)
-
-inline
-
-

Print HEX with CRLF

Parameters
- - -
[in]nnumber to be printed as HEX.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ println() [1/4]

- -
-
- - - - - -
- - - - - - - -
size_t StdioStream::println ()
-
-inline
-
-

Write a CR/LF.

-
Returns
two, the number of bytes written, for success or zero for failure.
- -
-
- -

◆ println() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::println (double val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number followed by CR/LF.

-
Parameters
- - - -
[in]valthe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ println() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::println (float val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number followed by CR/LF.

-
Parameters
- - - -
[in]valthe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ println() [4/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
size_t StdioStream::println (val)
-
-inline
-
-

Print an item followed by CR/LF

-
Parameters
- - -
[in]valthe item to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ putc()

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::putc (int c)
-
-inline
-
-

Write a byte to a stream.

-

putc and fputc are equivalent but putc is in-line so it is faster but require more flash memory.

-
Parameters
- - -
[in]cthe byte to be written (converted to an unsigned char).
-
-
-
Returns
Upon successful completion, fputc() returns the value it has written. Otherwise, it returns EOF and sets the error indicator for the stream.
- -
-
- -

◆ putCRLF()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::putCRLF ()
-
-inline
-
-

Write a CR/LF.

-
Returns
two, the number of bytes written, for success or -1 for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - - - -
bool StdioStream::rewind ()
-
-

Set position of a stream to the beginning.

-

The rewind function sets the file position to the beginning of the file. It is equivalent to fseek(0L, SEEK_SET) except that the error indicator for the stream is also cleared.

-
Returns
true for success or false for failure.
- -
-
- -

◆ ungetc()

- -
-
- - - - - - - - -
int StdioStream::ungetc (int c)
-
-

Push a byte back into an input stream.

-
Parameters
- - -
[in]cthe byte (converted to an unsigned char) to be pushed back.
-
-
-

One character of push-back is guaranteed. If the ungetc function is called too many times without an intervening read or file positioning operation on that stream, the operation may fail.

-

A successful intervening call to a file positioning function (fseek, fsetpos, or rewind) discards any pushed-back characters for the stream.

-
Returns
Upon successful completion, ungetc() returns the byte pushed back after conversion. Otherwise it returns EOF.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/StdioStream.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/StdioStream.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream__coll__graph.png deleted file mode 100644 index 99344ab2..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream__inherit__graph.png deleted file mode 100644 index 99344ab2..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_stdio_stream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sys_call-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sys_call-members.html deleted file mode 100644 index 037603f7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sys_call-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SysCall Member List
-
-
- -

This is the complete list of members for SysCall, including all inherited members.

- - - -
halt()SysCallinlinestatic
yield()SysCallinlinestatic
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sys_call.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sys_call.html deleted file mode 100644 index bf5c6145..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/class_sys_call.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: SysCall Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SysCall Class Reference
-
-
- -

SysCall - Class to wrap system calls. - More...

- -

#include <SysCall.h>

- - - - - - -

-Static Public Member Functions

static void halt ()
 
static void yield ()
 
-

Detailed Description

-

SysCall - Class to wrap system calls.

-

Member Function Documentation

- -

◆ halt()

- -
-
- - - - - -
- - - - - - - -
static void SysCall::halt ()
-
-inlinestatic
-
-

Halt execution of this thread.

- -
-
- -

◆ yield()

- -
-
- - - - - -
- - - - - - - -
void SysCall::yield ()
-
-inlinestatic
-
-

Yield to other threads.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classes.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classes.html deleted file mode 100644 index 27078a4d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classes.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -SdFat: Class Index - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Index
-
-
-
a | b | c | d | f | i | l | m | o | p | s
- - - - - - - - - - - - - - - - - - - -
  a  
-
fat32_fsinfo   ios   ostream   SdFile   
fat_boot   ios_base   
  p  
-
SdFileSystem   
ArduinoInStream   FatCache   iostream   SdioCard   
ArduinoOutStream   FatFile   istream   partitionTable   SdioCardEX   
  b  
-
FatFileSystem   
  l  
-
PrintFile   SdSpiCard   
FatPos_t   
  s  
-
SdSpiCardEX   
BaseBlockDriver   FatStreamBase   longDirectoryEntry   setfill   
biosParmBlock   FatVolume   
  m  
-
Sd2Card   setprecision   
  c  
-
File   SdBaseFile   setw   
fname_t   masterBootRecord   SdFat   StdioStream   
cache_t   fstream   MinimumSerial   SdFatEX   SysCall   
  d  
-
  i  
-
  o  
-
SdFatSdio   
SdFatSdioEX   
directoryEntry   ibufstream   obufstream   SdFatSoftSpi   
  f  
-
ifstream   ofstream   SdFatSoftSpiEX   
fat32_boot   
-
a | b | c | d | f | i | l | m | o | p | s
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream-members.html deleted file mode 100644 index d05ae5d0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream-members.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fstream Member List
-
-
- -

This is the complete list of members for fstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)fstreaminline
close()fstreaminline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
fstream() (defined in fstream)fstreaminline
fstream(const char *path, openmode mode=in|out)fstreaminlineexplicit
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
is_open()fstreaminline
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
open(const char *path, openmode mode=in|out)fstreaminline
FatStreamBase::open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
iostream::peek()istream
FatStreamBase::peek()FatFileprivate
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream.html deleted file mode 100644 index efca4e06..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream.html +++ /dev/null @@ -1,3651 +0,0 @@ - - - - - - - -SdFat: fstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

file input/output stream. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for fstream:
-
-
Inheritance graph
- - - - - - - - - -
[legend]
-
-Collaboration diagram for fstream:
-
-
Collaboration graph
- - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
void close ()
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
 fstream (const char *path, openmode mode=in|out)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
bool is_open ()
 
void open (const char *path, openmode mode=in|out)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - - - -

-Private Member Functions

bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
int peek ()
 
-

Detailed Description

-

file input/output stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ fstream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fstream::fstream (const char * path,
openmode mode = in | out 
)
-
-inlineexplicit
-
-

Constructor with open

-
Parameters
- - - -
[in]pathpath to open
[in]modeopen mode
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void fstream::clear (iostate state = goodbit)
-
-inline
-
-

Clear state and writeError

Parameters
- - -
[in]statenew state for stream
-
-
- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
void fstream::close ()
-
-inline
-
-

Close a file and force cached data and directory information to be written to the storage device.

- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool fstream::is_open ()
-
-inline
-
-
Returns
True if stream is open else false.
- -
-
- -

◆ open()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void fstream::open (const char * path,
openmode mode = in | out 
)
-
-inline
-
-

Open a fstream

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
-

Valid open modes are (at end, ios::ate, and/or ios::binary may be added):

-

ios::in - Open file for reading.

-

ios::out or ios::out | ios::trunc - Truncate to 0 length, if existent, or create a file for writing only.

-

ios::app or ios::out | ios::app - Append; open or create file for writing at end-of-file.

-

ios::in | ios::out - Open file for update (reading and writing).

-

ios::in | ios::out | ios::trunc - Truncate to zero length, if existent, or create file for update.

-

ios::in | ios::app or ios::in | ios::out | ios::app - Append; open or create text file for update, writing at end of file.

- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream__coll__graph.png deleted file mode 100644 index 94fffce0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream__inherit__graph.png deleted file mode 100644 index 94fffce0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classfstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream-members.html deleted file mode 100644 index de827ab9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream-members.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ibufstream Member List
-
-
- -

This is the complete list of members for ibufstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ibufstream()ibufstreaminline
ibufstream(const char *str)ibufstreaminlineexplicit
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
init(const char *str)ibufstreaminline
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream.html deleted file mode 100644 index 79c57c0d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream.html +++ /dev/null @@ -1,2735 +0,0 @@ - - - - - - - -SdFat: ibufstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

parse a char string - More...

- -

#include <bufstream.h>

-
-Inheritance diagram for ibufstream:
-
-
Inheritance graph
- - - - - - -
[legend]
-
-Collaboration diagram for ibufstream:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
 ibufstream ()
 
 ibufstream (const char *str)
 
istreamignore (streamsize n=1, int delim=-1)
 
void init (const char *str)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

parse a char string

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ibufstream() [1/2]

- -
-
- - - - - -
- - - - - - - -
ibufstream::ibufstream ()
-
-inline
-
-

Constructor

- -
-
- -

◆ ibufstream() [2/2]

- -
-
- - - - - -
- - - - - - - - -
ibufstream::ibufstream (const char * str)
-
-inlineexplicit
-
-

Constructor

Parameters
- - -
[in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - -
void ibufstream::init (const char * str)
-
-inline
-
-

Initialize an ibufstream

Parameters
- - -
[in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
-
-
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream__coll__graph.png deleted file mode 100644 index d91bbc79..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream__inherit__graph.png deleted file mode 100644 index 0b88104d..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classibufstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream-members.html deleted file mode 100644 index 13a82348..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream-members.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ifstream Member List
-
-
- -

This is the complete list of members for ifstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
close()ifstreaminline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ifstream() (defined in ifstream)ifstreaminline
ifstream(const char *path, openmode mode=in)ifstreaminlineexplicit
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
is_open()ifstreaminline
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
open(const char *path, openmode mode=in)ifstreaminline
FatStreamBase::open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()ifstream
istream::peek()istream
FatStreamBase::peek()FatFileprivate
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream.html deleted file mode 100644 index 4a31027d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream.html +++ /dev/null @@ -1,2819 +0,0 @@ - - - - - - - -SdFat: ifstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

file input stream. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for ifstream:
-
-
Inheritance graph
- - - - - - - -
[legend]
-
-Collaboration diagram for ifstream:
-
-
Collaboration graph
- - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
void close ()
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
 ifstream (const char *path, openmode mode=in)
 
istreamignore (streamsize n=1, int delim=-1)
 
bool is_open ()
 
void open (const char *path, openmode mode=in)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - - - -

-Private Member Functions

bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
int peek ()
 
-

Detailed Description

-

file input stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ifstream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ifstream::ifstream (const char * path,
openmode mode = in 
)
-
-inlineexplicit
-
-

Constructor with open

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
void ifstream::close ()
-
-inline
-
-

Close a file and force cached data and directory information to be written to the storage device.

- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool ifstream::is_open ()
-
-inline
-
-
Returns
True if stream is open else false.
- -
-
- -

◆ open()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void ifstream::open (const char * path,
openmode mode = in 
)
-
-inline
-
-

Open an ifstream

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
-

mode See fstream::open() for valid modes.

- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek() [1/2]

- -
-
- - - - -
int istream::peek
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ peek() [2/2]

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream__coll__graph.png deleted file mode 100644 index 6a2a32db..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream__inherit__graph.png deleted file mode 100644 index 6a2a32db..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classifstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios-members.html deleted file mode 100644 index 2062f669..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios-members.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ios Member List
-
-
- -

This is the complete list of members for ios, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios.html deleted file mode 100644 index 40e091ea..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios.html +++ /dev/null @@ -1,1583 +0,0 @@ - - - - - - - -SdFat: ios Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Error and state information for all streams. - More...

- -

#include <ios.h>

-
-Inheritance diagram for ios:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
-
-Collaboration diagram for ios:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
bool good () const
 
 ios ()
 
 operator const void * () const
 
bool operator! () const
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Error and state information for all streams.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ios()

- -
-
- - - - - -
- - - - - - - -
ios::ios ()
-
-inline
-
-

Create ios with no error flags set

- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inline
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inline
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inline
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inline
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inline
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inline
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inline
-
-
Returns
true if fail() else false.
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inline
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inline
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/ios.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base-members.html deleted file mode 100644 index ba34bb2e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base-members.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ios_base Member List
-
-
- -

This is the complete list of members for ios_base, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
cur enum valueios_base
decios_basestatic
end enum valueios_base
eofbitios_basestatic
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rightios_basestatic
seekdir enum nameios_base
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base.html deleted file mode 100644 index bf72bf82..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base.html +++ /dev/null @@ -1,1222 +0,0 @@ - - - - - - - -SdFat: ios_base Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Base class for all streams. - More...

- -

#include <ios.h>

-
-Inheritance diagram for ios_base:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
int precision () const
 
int precision (unsigned int n)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Base class for all streams.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - -
typedef unsigned int ios_base::fmtflags
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - -
typedef unsigned char ios_base::iostate
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - -
typedef int32_t ios_base::off_type
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - -
typedef uint8_t ios_base::openmode
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - -
typedef uint32_t ios_base::pos_type
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - -
typedef uint32_t ios_base::streamsize
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - -
enum ios_base::seekdir
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inline
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inline
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inline
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inline
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inline
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inline
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inline
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inline
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inline
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inline
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inline
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-static
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-static
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-static
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-static
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-static
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-static
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-static
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-static
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-static
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-static
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-static
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-static
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-static
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-static
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-static
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-static
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-static
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-static
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-static
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-static
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-static
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-static
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-static
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-static
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/ios.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base__inherit__graph.png deleted file mode 100644 index a6d2cfc2..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__base__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__coll__graph.png deleted file mode 100644 index d817f0a0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__inherit__graph.png deleted file mode 100644 index ffb918c4..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classios__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream-members.html deleted file mode 100644 index 84901100..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream-members.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
iostream Member List
-
-
- -

This is the complete list of members for iostream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream.html deleted file mode 100644 index ab5ae2a2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream.html +++ /dev/null @@ -1,3480 +0,0 @@ - - - - - - - -SdFat: iostream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Input/Output stream. - More...

- -

#include <iostream.h>

-
-Inheritance diagram for iostream:
-
-
Inheritance graph
- - - - - - - -
[legend]
-
-Collaboration diagram for iostream:
-
-
Collaboration graph
- - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Input/Output stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream__coll__graph.png deleted file mode 100644 index 749d6536..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream__inherit__graph.png deleted file mode 100644 index 644dd2dc..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classiostream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream-members.html deleted file mode 100644 index 96959e33..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream-members.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
istream Member List
-
-
- -

This is the complete list of members for istream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream.html deleted file mode 100644 index f8bbed26..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream.html +++ /dev/null @@ -1,2585 +0,0 @@ - - - - - - - -SdFat: istream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Input Stream. - More...

- -

#include <istream.h>

-
-Inheritance diagram for istream:
-
-
Inheritance graph
- - - - - - - - - -
[legend]
-
-Collaboration diagram for istream:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Input Stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inline
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - - - -
int istream::get ()
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - - - - -
istream & istream::get (char & ch)
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inline
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inline
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inline
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inline
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inline
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inline
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inline
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inline
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inline
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inline
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inline
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inline
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inline
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inline
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inline
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inline
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - - - -
int istream::peek ()
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inline
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inline
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - - - -
void istream::skipWhite ()
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inline
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/istream.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/istream.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream__coll__graph.png deleted file mode 100644 index d4c4e3ab..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream__inherit__graph.png deleted file mode 100644 index aa20a7a2..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classistream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream-members.html deleted file mode 100644 index 94d498d5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream-members.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
obufstream Member List
-
-
- -

This is the complete list of members for obufstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
buf()obufstreaminline
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
init(char *buf, size_t size)obufstreaminline
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
length()obufstreaminline
obufstream()obufstreaminline
obufstream(char *buf, size_t size)obufstreaminline
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream.html deleted file mode 100644 index bbbcee17..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream.html +++ /dev/null @@ -1,2562 +0,0 @@ - - - - - - - -SdFat: obufstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

format a char string - More...

- -

#include <bufstream.h>

-
-Inheritance diagram for obufstream:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for obufstream:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
char * buf ()
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
void init (char *buf, size_t size)
 
size_t length ()
 
 obufstream ()
 
 obufstream (char *buf, size_t size)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

format a char string

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ obufstream() [1/2]

- -
-
- - - - - -
- - - - - - - -
obufstream::obufstream ()
-
-inline
-
-

constructor

- -
-
- -

◆ obufstream() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
obufstream::obufstream (char * buf,
size_t size 
)
-
-inline
-
-

Constructor

Parameters
- - - -
[in]bufbuffer for formatted string
[in]sizebuffer size
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ buf()

- -
-
- - - - - -
- - - - - - - -
char* obufstream::buf ()
-
-inline
-
-
Returns
a pointer to the buffer
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void obufstream::init (char * buf,
size_t size 
)
-
-inline
-
-

Initialize an obufstream

Parameters
- - - -
[in]bufbuffer for formatted string
[in]sizebuffer size
-
-
- -
-
- -

◆ length()

- -
-
- - - - - -
- - - - - - - -
size_t obufstream::length ()
-
-inline
-
-
Returns
the length of the formatted string
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream__coll__graph.png deleted file mode 100644 index 24cb78cb..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream__inherit__graph.png deleted file mode 100644 index 24cb78cb..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classobufstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream-members.html deleted file mode 100644 index c4882188..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream-members.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ofstream Member List
-
-
- -

This is the complete list of members for ofstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)ofstreaminline
close()ofstreaminline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
is_open()ofstreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
ofstream() (defined in ofstream)ofstreaminline
ofstream(const char *path, ios::openmode mode=out)ofstreaminlineexplicit
open(const char *path, openmode mode=out)ofstreaminline
FatStreamBase::open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream.html deleted file mode 100644 index a15b9adc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream.html +++ /dev/null @@ -1,2548 +0,0 @@ - - - - - - - -SdFat: ofstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

file output stream. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for ofstream:
-
-
Inheritance graph
- - - - - - - -
[legend]
-
-Collaboration diagram for ofstream:
-
-
Collaboration graph
- - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
void close ()
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
bool is_open ()
 
 ofstream (const char *path, ios::openmode mode=out)
 
void open (const char *path, openmode mode=out)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - -

-Private Member Functions

bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
-

Detailed Description

-

file output stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ofstream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ofstream::ofstream (const char * path,
ios::openmode mode = out 
)
-
-inlineexplicit
-
-

Constructor with open

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ofstream::clear (iostate state = goodbit)
-
-inline
-
-

Clear state and writeError

Parameters
- - -
[in]statenew state for stream
-
-
- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
void ofstream::close ()
-
-inline
-
-

Close a file and force cached data and directory information to be written to the storage device.

- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool ofstream::is_open ()
-
-inline
-
-
Returns
True if stream is open else false.
- -
-
- -

◆ open()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void ofstream::open (const char * path,
openmode mode = out 
)
-
-inline
-
-

Open an ofstream

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
-

mode See fstream::open() for valid modes.

- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream__coll__graph.png deleted file mode 100644 index bb2fc854..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream__inherit__graph.png deleted file mode 100644 index bb2fc854..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classofstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream-members.html deleted file mode 100644 index ae7fe1b1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream-members.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ostream Member List
-
-
- -

This is the complete list of members for ostream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream.html deleted file mode 100644 index adc8b664..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream.html +++ /dev/null @@ -1,2391 +0,0 @@ - - - - - - - -SdFat: ostream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Output Stream. - More...

- -

#include <ostream.h>

-
-Inheritance diagram for ostream:
-
-
Inheritance graph
- - - - - - - - - -
[legend]
-
-Collaboration diagram for ostream:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Output Stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inline
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inline
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inline
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inline
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inline
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inline
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inline
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inline
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inline
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inline
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inline
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inline
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inline
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inline
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inline
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inline
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inline
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inline
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inline
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inline
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inline
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inline
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/ostream.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/ostream.cpp
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream__coll__graph.png deleted file mode 100644 index 361df37d..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream__inherit__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream__inherit__graph.png deleted file mode 100644 index e83f4076..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/classostream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/closed.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/closed.png deleted file mode 100644 index 98cc2c90..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/closed.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_000005_000006.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_000005_000006.html deleted file mode 100644 index d943d2bf..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_000005_000006.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src -> FatLib Relation - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

src → FatLib Relation

File in Arduino/libraries/SdFat/srcIncludes file in Arduino/libraries/SdFat/src/FatLib
sdios.hArduinoStream.h
sdios.hfstream.h
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_000005_000007.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_000005_000007.html deleted file mode 100644 index 99583f95..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_000005_000007.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src -> SdCard Relation - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

src → SdCard Relation

File in Arduino/libraries/SdFat/srcIncludes file in Arduino/libraries/SdFat/src/SdCard
BlockDriver.hSdSpiCard.h
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_1281b15c327061056ab3b326e90c50cf.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_1281b15c327061056ab3b326e90c50cf.html deleted file mode 100644 index 5d15732a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_1281b15c327061056ab3b326e90c50cf.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
SdFat Directory Reference
-
-
-
-Directory dependency graph for SdFat:
-
-
Arduino/libraries/SdFat
- - - - - - -
- - - - -

-Directories

directory  extras
 
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png deleted file mode 100644 index 88ec2e79..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_353ccaa5c7dda9a5be3e56b5f40a9e48.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_353ccaa5c7dda9a5be3e56b5f40a9e48.html deleted file mode 100644 index 3185a044..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_353ccaa5c7dda9a5be3e56b5f40a9e48.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/extras/MainPage Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
MainPage Directory Reference
-
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_481cc946b8a81b8d9363a4aad6201160.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_481cc946b8a81b8d9363a4aad6201160.html deleted file mode 100644 index bf02e75b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_481cc946b8a81b8d9363a4aad6201160.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
libraries Directory Reference
-
-
-
-Directory dependency graph for libraries:
-
-
Arduino/libraries
- - - - - -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png deleted file mode 100644 index c1c42499..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_7e472674a7b7d2590a789f197241f95f.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_7e472674a7b7d2590a789f197241f95f.html deleted file mode 100644 index 92693b4b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_7e472674a7b7d2590a789f197241f95f.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
FatLib Directory Reference
-
-
-
-Directory dependency graph for FatLib:
-
-
Arduino/libraries/SdFat/src/FatLib
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  ArduinoFiles.h
 PrintFile class.
 
file  ArduinoStream.h
 ArduinoInStream and ArduinoOutStream classes.
 
file  bufstream.h
 ibufstream and obufstream classes
 
file  FatFile.h
 FatFile class.
 
file  FatFileSystem.h
 FatFileSystem class.
 
file  FatLibConfig.h
 configuration definitions
 
file  FatStructs.h
 FAT file structures.
 
file  FatVolume.h
 FatVolume class.
 
file  fstream.h
 fstream, ifstream, and ofstream classes
 
file  ios.h
 ios_base and ios classes
 
file  iostream.h
 iostream class
 
file  istream.h
 istream class
 
file  ostream.h
 ostream class
 
file  StdioStream.h
 StdioStream class.
 
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png deleted file mode 100644 index 0495e08b..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html deleted file mode 100644 index 12ca0bf3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
SdCard Directory Reference
-
-
-
-Directory dependency graph for SdCard:
-
-
Arduino/libraries/SdFat/src/SdCard
- - - - -
- - - - - -

-Files

file  SdSpiCard.h
 SdSpiCard class for V2 SD/SDHC cards.
 
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png deleted file mode 100644 index 74f6510a..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a991eec27578c865874ede3d8ec657c2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a991eec27578c865874ede3d8ec657c2.html deleted file mode 100644 index 3b955f0e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a991eec27578c865874ede3d8ec657c2.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -SdFat: Arduino Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Arduino Directory Reference
-
-
-
-Directory dependency graph for Arduino:
-
-
Arduino
- - - - -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png deleted file mode 100644 index d3e87478..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html deleted file mode 100644 index 143c2f52..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
src Directory Reference
-
-
-
-Directory dependency graph for src:
-
-
Arduino/libraries/SdFat/src
- - - - - - - - -
- - -

-Directories

- - - - - - - - - - - - - - - - - - - - - - -

-Files

file  BlockDriver.h
 Define block driver.
 
file  FreeStack.h
 FreeStack() function.
 
file  MinimumSerial.h
 Minimal AVR Serial driver.
 
file  SdFat.h
 SdFat class.
 
file  SdFatConfig.h
 configuration definitions
 
file  sdios.h
 C++ IO Streams features.
 
file  SysCall.h
 SysCall class.
 
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png deleted file mode 100644 index e19e4c47..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_d75e759b510f73394903d99f52f52a38.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_d75e759b510f73394903d99f52f52a38.html deleted file mode 100644 index ff3fd514..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dir_d75e759b510f73394903d99f52f52a38.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/extras Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
extras Directory Reference
-
-
- - -

-Directories

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doc.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doc.png deleted file mode 100644 index 17edabff..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doc.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doxygen.css b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doxygen.css deleted file mode 100644 index 266c8b3a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doxygen.css +++ /dev/null @@ -1,1596 +0,0 @@ -/* The standard CSS for doxygen 1.8.14 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - - -/* @end */ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doxygen.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doxygen.png deleted file mode 100644 index 3ff17d80..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/doxygen.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dynsections.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dynsections.js deleted file mode 100644 index c1ce1226..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program 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 2 of the License, or - (at your option) any later version. - - This program 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 this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -SdFat: File List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 123456]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  Arduino
  libraries
  SdFat
  src
  FatLib
 ArduinoFiles.hPrintFile class
 ArduinoStream.hArduinoInStream and ArduinoOutStream classes
 bufstream.hibufstream and obufstream classes
 FatFile.hFatFile class
 FatFileSystem.hFatFileSystem class
 FatLibConfig.hConfiguration definitions
 FatStructs.hFAT file structures
 FatVolume.hFatVolume class
 fstream.hfstream, ifstream, and ofstream classes
 ios.hios_base and ios classes
 iostream.hiostream class
 istream.histream class
 ostream.hostream class
 StdioStream.hStdioStream class
  SdCard
 SdSpiCard.hSdSpiCard class for V2 SD/SDHC cards
 BlockDriver.hDefine block driver
 FreeStack.hFreeStack() function
 MinimumSerial.hMinimal AVR Serial driver
 SdFat.hSdFat class
 SdFatConfig.hConfiguration definitions
 sdios.hC++ IO Streams features
 SysCall.hSysCall class
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/folderclosed.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/folderclosed.png deleted file mode 100644 index bb8ab35e..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/folderclosed.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/folderopen.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/folderopen.png deleted file mode 100644 index d6c7f676..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/folderopen.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h.html deleted file mode 100644 index 188a89c0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/fstream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
fstream.h File Reference
-
-
- -

fstream, ifstream, and ofstream classes -More...

-
#include "FatFile.h"
-#include "iostream.h"
-
-Include dependency graph for fstream.h:
-
-
- - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
- - - - - - - - - - - - - -

-Classes

class  FatStreamBase
 Base class for C++ style streams. More...
 
class  fstream
 file input/output stream. More...
 
class  ifstream
 file input stream. More...
 
class  ofstream
 file output stream. More...
 
-

Detailed Description

-

fstream, ifstream, and ofstream classes

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h__dep__incl.png deleted file mode 100644 index a681a0c0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h__incl.png deleted file mode 100644 index ebe24277..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/fstream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions.html deleted file mode 100644 index de79824c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- a -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_b.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_b.html deleted file mode 100644 index e027fc52..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_b.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- b -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_c.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_c.html deleted file mode 100644 index 3e704690..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_c.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- c -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_d.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_d.html deleted file mode 100644 index 12c30e16..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_d.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- d -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_e.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_e.html deleted file mode 100644 index 07fa7c80..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_e.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- e -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_enum.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_enum.html deleted file mode 100644 index cf588706..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_enum.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -SdFat: Class Members - Enumerations - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_eval.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_eval.html deleted file mode 100644 index adf598cf..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_eval.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Class Members - Enumerator - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_f.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_f.html deleted file mode 100644 index d64199f3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_f.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- f -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func.html deleted file mode 100644 index fc7387b3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_b.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_b.html deleted file mode 100644 index 464f15bc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_b.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- b -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_c.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_c.html deleted file mode 100644 index 9f24b048..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_c.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_d.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_d.html deleted file mode 100644 index 5665591e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_d.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- d -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_e.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_e.html deleted file mode 100644 index 5102f6d1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_e.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- e -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_f.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_f.html deleted file mode 100644 index b05774ca..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_f.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- f -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_g.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_g.html deleted file mode 100644 index a70aa9b2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_g.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- g -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_h.html deleted file mode 100644 index 0a01dca5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_h.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- h -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_i.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_i.html deleted file mode 100644 index 3a2cda1a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_i.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- i -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_k.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_k.html deleted file mode 100644 index 2476ebb9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_k.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- k -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_l.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_l.html deleted file mode 100644 index 90823536..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_l.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- l -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_m.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_m.html deleted file mode 100644 index 61370a05..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_m.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- m -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_n.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_n.html deleted file mode 100644 index ecf1c594..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_n.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- n -

    -
  • name() -: File -
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_o.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_o.html deleted file mode 100644 index 42b25ad7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_o.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- o -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_p.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_p.html deleted file mode 100644 index e0a9b135..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_p.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- p -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_r.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_r.html deleted file mode 100644 index f31039a5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_r.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- r -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_s.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_s.html deleted file mode 100644 index 33a3e4ba..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_s.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- s -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_t.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_t.html deleted file mode 100644 index 6c1dd587..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_t.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- t -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_u.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_u.html deleted file mode 100644 index 0cef8a17..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_u.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- u -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_v.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_v.html deleted file mode 100644 index b3f14d6b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_v.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- v -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_w.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_w.html deleted file mode 100644 index 814c06d9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_w.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- w -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_y.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_y.html deleted file mode 100644 index 0cee27f9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_func_y.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- y -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_g.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_g.html deleted file mode 100644 index 3854cf99..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_g.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- g -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_h.html deleted file mode 100644 index 4c1542f3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_h.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- h -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_i.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_i.html deleted file mode 100644 index de1f59aa..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_i.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- i -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_j.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_j.html deleted file mode 100644 index 589e7aee..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_j.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- j -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_k.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_k.html deleted file mode 100644 index 02f62036..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_k.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- k -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_l.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_l.html deleted file mode 100644 index bdb96027..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_l.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- l -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_m.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_m.html deleted file mode 100644 index dd26bf03..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_m.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- m -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_n.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_n.html deleted file mode 100644 index 40109594..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_n.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- n -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_o.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_o.html deleted file mode 100644 index d7e8c420..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_o.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- o -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_p.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_p.html deleted file mode 100644 index d496c697..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_p.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- p -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_r.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_r.html deleted file mode 100644 index 1872e1f2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_r.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- r -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_rela.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_rela.html deleted file mode 100644 index cd491533..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_rela.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Class Members - Related Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_s.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_s.html deleted file mode 100644 index e0c0778e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_s.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- s -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_t.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_t.html deleted file mode 100644 index 35fa7e27..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_t.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- t -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_type.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_type.html deleted file mode 100644 index 688f3ab2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_type.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_u.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_u.html deleted file mode 100644 index bc8de458..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_u.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- u -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_v.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_v.html deleted file mode 100644 index d74e2056..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_v.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- v -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_vars.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_vars.html deleted file mode 100644 index b9e7dd02..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_vars.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - - - - -SdFat: Class Members - Variables - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- j -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_w.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_w.html deleted file mode 100644 index 07192ab5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_w.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- w -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_y.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_y.html deleted file mode 100644 index bdbce3ea..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/functions_y.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- y -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals.html deleted file mode 100644 index a693ae32..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented file members with links to the documentation:
- -

- _ -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- u -

- - -

- w -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_defs.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_defs.html deleted file mode 100644 index 9edf0f39..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_defs.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- i -

- - -

- m -

- - -

- n -

- - -

- p -

- - -

- s -

- - -

- u -

- - -

- w -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_func.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_func.html deleted file mode 100644 index 1573a55a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_func.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- b -

    -
  • boolalpha() -: ios.h -
  • -
- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- h -

- - -

- i -

    -
  • internal() -: ios.h -
  • -
- - -

- l -

- - -

- n -

    -
  • noboolalpha() -: ios.h -
  • -
  • noshowbase() -: ios.h -
  • -
  • noshowpoint() -: ios.h -
  • -
  • noshowpos() -: ios.h -
  • -
  • noskipws() -: ios.h -
  • -
  • nouppercase() -: ios.h -
  • -
- - -

- o -

- - -

- r -

- - -

- s -

- - -

- u -

    -
  • uppercase() -: ios.h -
  • -
- - -

- w -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_type.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_type.html deleted file mode 100644 index 3a89695d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_type.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_vars.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_vars.html deleted file mode 100644 index 6ed61c41..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/globals_vars.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- _ -

- - -

- b -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- l -

- - -

- s -

- - -

- u -

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/graph_legend.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/graph_legend.html deleted file mode 100644 index 2b2c358b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/graph_legend.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -SdFat: Graph Legend - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Graph Legend
-
-
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

-
- -
-

The boxes in the above graph have the following meaning:

-
    -
  • -A filled gray box represents the struct or class for which the graph is generated.
  • -
  • -A box with a black border denotes a documented struct or class.
  • -
  • -A box with a gray border denotes an undocumented struct or class.
  • -
  • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • -
-

The arrows have the following meaning:

-
    -
  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • -
  • -A dark green arrow is used for protected inheritance.
  • -
  • -A dark red arrow is used for private inheritance.
  • -
  • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • -
  • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/graph_legend.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/graph_legend.png deleted file mode 100644 index c0d711ba..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/graph_legend.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/hierarchy.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/hierarchy.html deleted file mode 100644 index 23d6faa6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/hierarchy.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 12345]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 CBaseBlockDriverBase block driver
 CSdioCardRaw SDIO access to SD and SDHC flash memory cards
 CSdioCardEXExtended SD I/O block driver
 CbiosParmBlockBIOS parameter block
 Ccache_tCache for an raw data block
 CdirectoryEntryFAT short directory entry
 Cfat32_bootBoot sector for a FAT32 volume
 Cfat32_fsinfoFSINFO sector for a FAT32 volume
 Cfat_bootBoot sector for a FAT12/FAT16 volume
 CFatCacheBlock cache
 CFatFileBasic file class
 CFatStreamBaseBase class for C++ style streams
 CfstreamFile input/output stream
 CifstreamFile input stream
 CofstreamFile output stream
 CFileArduino SD.h style File API
 CPrintFileFatFile with Print
 CSdFileClass for backward compatibility
 CSdBaseFileClass for backward compatibility
 CStdioStreamStdioStream implements a minimal stdio stream
 CFatPos_tInternal type for file position - do not use in user apps
 CFatVolumeAccess FAT16 and FAT32 volumes on raw file devices
 CFatFileSystemIntegration class for the FatLib library
 CSdFileSystem< SdDriverClass >Virtual base class for SdFat library
 CSdFileSystem< SdioCard >
 CSdFatSdioSdFat class using SDIO
 CSdFileSystem< SdioCardEX >
 CSdFatSdioEXSdFat class using SDIO
 CSdFileSystem< SdSpiCard >
 CSdFatMain file system class for SdFat library
 CSdFatSoftSpi< MisoPin, MosiPin, SckPin >SdFat class using software SPI
 CSdFileSystem< SdSpiCardEX >
 CSdFatEXSdFat class with extended SD I/O
 CSdFatSoftSpiEX< MisoPin, MosiPin, SckPin >SdFat class using software SPI and extended SD I/O
 Cfname_tInternal type for Short File Name - do not use in user apps
 Cios_baseBase class for all streams
 CiosError and state information for all streams
 CFatStreamBaseBase class for C++ style streams
 CistreamInput Stream
 CibufstreamParse a char string
 CArduinoInStreamInput stream for Arduino Stream objects
 CifstreamFile input stream
 CiostreamInput/Output stream
 CfstreamFile input/output stream
 CostreamOutput Stream
 CArduinoOutStreamOutput stream for Arduino Print objects
 CiostreamInput/Output stream
 CobufstreamFormat a char string
 CofstreamFile output stream
 ClongDirectoryEntryFAT long directory entry
 CmasterBootRecordMaster Boot Record
 CpartitionTableMBR partition table entry
 CPrint
 CMinimumSerialMini serial class for the SdFat library
 CPrintFileFatFile with Print
 CSdSpiCardRaw access to SD and SDHC flash memory cards via SPI protocol
 CSd2CardRaw access to SD and SDHC card using default SPI library
 CSdSpiCardEXExtended SD I/O block driver
 CsetfillType for setfill manipulator
 CsetprecisionType for setprecision manipulator
 CsetwType for setw manipulator
 CStream
 CFileArduino SD.h style File API
 CSysCallSysCall - Class to wrap system calls
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/index.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/index.html deleted file mode 100644 index ac05f106..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/index.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - -SdFat: Arduino SdFat Library - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Arduino SdFat Library
-
-
-

Copyright (c) 20011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-

Copyright &copy 2012-2018 by William Greiman

-Introduction

-

The Arduino SdFat Library is a minimal implementation of FAT16 and FAT32 file systems on SD flash memory cards. Standard SD and high capacity SDHC cards are supported.

-

Experimental support for FAT12 can be enabled by setting FAT12_SUPPORT nonzero in SdFatConfig.h.

-

The SdFat library supports Long File Names or short 8.3 names. Edit the SdFatConfig.h file to select short or long file names.

-

The main classes in SdFat are SdFat, SdFatEX, SdFatSoftSpi, SdFatSoftSpiEX, SdBaseFile, SdFile, File, StdioStream, fstream, ifstream, and ofstream.

-

The SdFat, SdFatEX, SdFatSoftSpi and SdFatSoftSpiEX classes maintain a FAT volume, a current working directory, and simplify initialization of other classes. The SdFat and SdFatEX classes uses a fast custom hardware SPI implementation. The SdFatSoftSpi and SdFatSoftSpiEX classes uses software SPI.

-

the SdFatEX and SdFatSoftSpiEX use extended multi-block I/O for enhanced performance. These classes must have exclusive use of the SPI bus.

-

The SdBaseFile class provides basic file access functions such as open(), binary read(), binary write(), close(), remove(), and sync(). SdBaseFile is the smallest file class.

-

The SdFile class has all the SdBaseFile class functions plus the Arduino Print class functions.

-

The File class has all the SdBaseFile functions plus the functions in the Arduino SD.h File class. This provides compatibility with the Arduino SD.h library.

-

The StdioStream class implements functions similar to Linux/Unix standard buffered input/output.

-

The fstream class implements C++ iostreams for both reading and writing text files.

-

The ifstream class implements C++ iostreams for reading text files.

-

The ofstream class implements C++ iostreams for writing text files.

-

The classes ifstream, ofstream, istream, and ostream follow the C++ iostream standard when possible.

-

There are many tutorials and much documentation about using C++ iostreams on the web.

-

http://www.cplusplus.com/ is a good C++ site for learning iostreams.

-

The classes ibufstream and obufstream format and parse character strings in memory buffers.

-

the classes ArduinoInStream and ArduinoOutStream provide iostream functions for Serial, LiquidCrystal, and other devices.

-

A number of example are provided in the SdFat/examples folder. These were developed to test SdFat and illustrate its use.

-

-Installation

-

You must manually install SdFat by copying the SdFat folder from the download package to the Arduino libraries folder in your sketch folder.

-

See the Manual installation section of this guide.

-

http://arduino.cc/en/Guide/Libraries

-

-SdFat Configuration

-

Several configuration options may be changed by editing the SdFatConfig.h file in the SdFat folder.

-

Set USE_LONG_FILE_NAMES nonzero to enable Long File Names. By default, Long File Names are enabled. For the leanest fastest library disable Long File Names. Long File names require extra flash but no extra RAM. Opening Long File Names can be slower than opening Short File Names. Data read and write performance is not changed by the type of File Name.

-

If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, the class SdFatSoftSpiEX will be defined. These classes used extended multi-block SD I/O for better performance. the SPI bus may not be shared with other devices in this mode.

-

Set USE_STANDARD_SPI_LIBRARY and ENABLE_SOFTWARE_SPI_CLASS to enable various SPI options. set USE_STANDARD_SPI_LIBRARY to use the standard Arduino SPI library. set ENABLE_SOFTWARE_SPI_CLASS to enable the SdFatSoftSpi class which uses software SPI.

-

To enable SD card CRC checking set USE_SD_CRC nonzero.

-

Set FAT12_SUPPORT nonzero to enable use of FAT12 volumes. FAT12 has not been well tested and requires additional flash.

-

-Paths and Working Directories

-

Relative paths in SdFat are resolved in a manner similar to Windows.

-

Each instance of SdFat has a current directory. In SdFat this directory is called the volume working directory, vwd. Initially this directory is the root directory for the volume.

-

The volume working directory is changed by calling SdFat::chdir(path).

-

The call sd.chdir("/2014") will change the volume working directory for sd to "/2014", assuming "/2014" exists.

-

Relative paths for SdFat member functions are resolved by starting at the volume working directory.

-

For example, the call sd.mkdir("April") will create the directory "/2014/April" assuming the volume working directory is "/2014".

-

SdFat has a current working directory, cwd, that is used to resolve paths for file.open() calls.

-

For a single SD card the current working directory is always the volume working directory for that card.

-

For multiple SD cards the current working directory is set to the volume working directory of a card by calling the SdFat::chvol() member function. The chvol() call is like the Windows <drive letter>: command.

-

The call sd2.chvol() will set the current working directory to the volume working directory for sd2.

-

If the volume working directory for sd2 is "/music" the call

-

file.open("BigBand.wav", O_READ);

-

will then open "/music/BigBand.wav" on sd2.

-

The following functions are used to change or get current directories. See the html documentation for more information.

bool SdFat::chdir(bool set_cwd = false);
bool SdFat::chdir(const char* path, bool set_cwd = false);
void SdFat::chvol();

-SD\SDHC Cards

-

Arduinos access SD cards using the cards SPI protocol. PCs, Macs, and most consumer devices use the 4-bit parallel SD protocol. A card that functions well on A PC or Mac may not work well on the Arduino.

-

Most cards have good SPI read performance but cards vary widely in SPI write performance. Write performance is limited by how efficiently the card manages internal erase/remapping operations. The Arduino cannot optimize writes to reduce erase operations because of its limit RAM.

-

SanDisk cards generally have good write performance. They seem to have more internal RAM buffering than other cards and therefore can limit the number of flash erase operations that the Arduino forces due to its limited RAM.

-

-Hardware Configuration

-

SdFat was developed using an Adafruit Industries Data Logging Shield.

-

The hardware interface to the SD card should not use a resistor based level shifter. SdFat sets the SPI bus frequency to 8 MHz which results in signal rise times that are too slow for the edge detectors in many newer SD card controllers when resistor voltage dividers are used.

-

The 5 to 3.3 V level shifter for 5 V Arduinos should be IC based like the 74HC4050N based circuit shown in the file SdLevel.png. The Adafruit Wave Shield uses a 74AHC125N. Gravitech sells SD and MicroSD Card Adapters based on the 74LCX245.

-

If you are using a resistor based level shifter and are having problems try setting the SPI bus frequency to 4 MHz. This can be done by using card.init(SPI_HALF_SPEED) to initialize the SD card.

-

A feature to use software SPI is available. Software SPI is slower than hardware SPI but allows any digital pins to be used. See SdFatConfig.h for software SPI definitions.

-

-Bugs and Comments

-

If you wish to report bugs or have comments, send email to fat16.nosp@m.lib@.nosp@m.sbcgl.nosp@m.obal.nosp@m..net. If possible, include a simple program that illustrates the bug or problem.

-

-Troubleshooting

-

The two example programs QuickStart, and SdInfo are useful for troubleshooting.

-

A message like this from SdInfo with errorCode 0X1 indicates the SD card is not seen by SdFat. This is often caused by a wiring error and reformatting the card will not solve the problem.

-cardBegin failed
-SD errorCode: 0X1
-SD errorData: 0XFF
-

Here is a similar message from QuickStart:

-SD initialization failed.
-Do not reformat the card!
-Is the card correctly inserted?
-Is chipSelect set to the correct value?
-Does another SPI device need to be disabled?
-Is there a wiring/soldering problem?
errorCode: 0x1, errorData: 0xff
-

Here is a message from QuickStart that indicates a formatting problem:

-Card successfully initialized.
-Can't find a valid FAT16/FAT32 partition.
-Try reformatting the card.  For best results use
-the SdFormatter program in SdFat/examples or download
-and use SDFormatter from www.sdcard.org/downloads.
-

The best source of recent information and help is the Arduino forum.

-

http://arduino.cc/forum/

-

Also search the Adafruit forum.

-

http://forums.adafruit.com/

-

If you are using a Teensy try.

-

http://forum.pjrc.com/forum.php

-

-SdFat Usage

-

SdFat supports Long File Names. Long names in SdFat are limited to 7-bit ASCII characters in the range 0X20 - 0XFE The following are reserved characters:

    -
  • -< (less than)
  • -
  • -> (greater than)
  • -
  • -: (colon)
  • -
  • -" (double quote)
  • -
  • -/ (forward slash)
  • -
  • -\ (backslash)
  • -
  • -| (vertical bar or pipe)
  • -
  • -? (question mark)
  • -
  • -* (asterisk)
  • -
-

SdFat uses a slightly restricted form of short names. Short names are limited to 8 characters followed by an optional period (.) and extension of up to 3 characters. The characters may be any combination of letters and digits. The following special characters are also allowed:

-

$ % ' - _ @ ~ ` ! ( ) { } ^ # &

-

Short names are always converted to upper case and their original case value is lost. Files that have a base-name where all characters have the same case and an extension where all characters have the same case will display properly. Examples this type name are UPPER.low, lower.TXT, UPPER.TXT, and lower.txt.

-

An application which writes to a file using print(), println() or write() must close the file or call sync() at the appropriate time to force data and directory information to be written to the SD Card.

-

Applications must use care calling sync() since 2048 bytes of I/O is required to update file and directory information. This includes writing the current data block, reading the block that contains the directory entry for update, writing the directory block back and reading back the current data block.

-

It is possible to open a file with two or more instances of a file object. A file may be corrupted if data is written to the file by more than one instance of a file object.

-

-How to format SD Cards as FAT Volumes

-

The best way to restore an SD card's format on a PC or Mac is to use SDFormatter which can be downloaded from:

-

http://www.sdcard.org/downloads

-

A formatter program, SdFormatter.ino, is included in the SdFat/examples/SdFormatter directory. This program attempts to emulate SD Association's SDFormatter.

-

SDFormatter aligns flash erase boundaries with file system structures which reduces write latency and file system overhead.

-

The PC/Mac SDFormatter does not have an option for FAT type so it may format very small cards as FAT12. Use the SdFat formatter to force FAT16 formatting of small cards.

-

Do not format the SD card with an OS utility, OS utilities do not format SD cards in conformance with the SD standard.

-

You should use a freshly formatted SD card for best performance. FAT file systems become slower if many files have been created and deleted. This is because the directory entry for a deleted file is marked as deleted, but is not deleted. When a new file is created, these entries must be scanned before creating the file. Also files can become fragmented which causes reads and writes to be slower.

-

-Examples

-

A number of examples are provided in the SdFat/examples folder. See the html documentation for a list.

-

To access these examples from the Arduino development environment go to: File -> Examples -> SdFat -> <program Name>

-

Compile, upload to your Arduino and click on Serial Monitor to run the example.

-

Here is a list:

-

AnalogBinLogger - Fast AVR ADC logger - see the AnalogBinLoggerExtras folder.

-

bench - A read/write benchmark.

-

dataLogger - A simple modifiable data logger.

-

DirectoryFunctions - Demo of chdir(), ls(), mkdir(), and rmdir().

-

fgets - Demo of the fgets read line/string function.

-

formating - Print a table with various formatting options.

-

getline - Example of getline from section 27.7.1.3 of the C++ standard.

-

LongFileName - Example use of openNext, printName, and open by index.

-

LowLatencyLogger - A data logger for higher data rates. ADC version.

-

LowLatencyLoggerADXL345 - A data logger for higher data rates. ADXL345 SPI.

-

LowLatencyLoggerMPU6050 - A data logger for higher data rates. MPU6050 I2C.

-

OpenNext - Open all files in the root dir and print their filename.

-

PrintBenchmark - A simple benchmark for printing to a text file.

-

QuickStart - A program to quickly test your SD card and SD shield/module.

-

RawWrite - A test of raw write functions for contiguous files.

-

ReadCsv - Function to read a CSV text file one field at a time.

-

ReadCsvStream - Read a comma-separated value file using iostream extractors.

-

ReadCsvArray - Read a two dimensional array from a CSV file.

-

ReadWrite - Compatibility test of Arduino SD ReadWrite example.

-

rename - A demo of SdFat::rename(old, new) and SdFile::rename(dirFile, newPath).

-

SdFormatter - This program will format an SD or SDHC card.

-

SoftwareSpi - Simple demonstration of the SdFatSoftSpi template class.

-

SdInfo - Initialize an SD card and analyze its structure for trouble shooting.

-

StdioBench - Demo and test of stdio style stream.

-

Timestamp - Sets file create, modify, and access timestamps.

-

TwoCards - Example using two SD cards.

-

VolumeFreeSpace - Demonstrate the freeClusterCount() call.

-

wipe - Example to wipe all data from an already formatted SD.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_0.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_0.png deleted file mode 100644 index 011af3dc..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_0.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_1.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_1.png deleted file mode 100644 index aaa33493..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_1.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_10.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_10.png deleted file mode 100644 index 93805fc6..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_10.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_11.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_11.png deleted file mode 100644 index aeccc523..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_11.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_12.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_12.png deleted file mode 100644 index 6e9deb22..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_12.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_13.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_13.png deleted file mode 100644 index 27cef82e..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_13.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_14.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_14.png deleted file mode 100644 index 1a576ca7..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_14.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_15.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_15.png deleted file mode 100644 index abcb0be0..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_15.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_16.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_16.png deleted file mode 100644 index adae8006..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_16.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_17.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_17.png deleted file mode 100644 index 6815203e..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_17.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_18.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_18.png deleted file mode 100644 index 50928857..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_18.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_19.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_19.png deleted file mode 100644 index cb756b51..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_19.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_2.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_2.png deleted file mode 100644 index 16382510..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_2.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_3.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_3.png deleted file mode 100644 index 26465d57..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_3.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_4.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_4.png deleted file mode 100644 index 9efa23d4..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_4.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_5.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_5.png deleted file mode 100644 index f2d4b5e4..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_5.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_6.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_6.png deleted file mode 100644 index 24c8f4d6..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_6.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_7.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_7.png deleted file mode 100644 index ab588808..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_7.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_8.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_8.png deleted file mode 100644 index 9ac44585..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_8.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_9.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_9.png deleted file mode 100644 index 1f0c1b41..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherit_graph_9.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherits.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherits.html deleted file mode 100644 index 7f8550f7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/inherits.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - -SdFat: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
- - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - - - -
- - - -
- - - -
- - - -
- - - -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h.html deleted file mode 100644 index 8dbec9cf..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h.html +++ /dev/null @@ -1,767 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/ios.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
ios.h File Reference
-
-
- -

ios_base and ios classes -More...

-
#include "FatFile.h"
-
-Include dependency graph for ios.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - -
-
- - - - - - - -

-Classes

class  ios
 Error and state information for all streams. More...
 
class  ios_base
 Base class for all streams. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

ios_baseboolalpha (ios_base &str)
 
ios_basedec (ios_base &str)
 
ios_basehex (ios_base &str)
 
ios_baseinternal (ios_base &str)
 
ios_baseleft (ios_base &str)
 
ios_basenoboolalpha (ios_base &str)
 
ios_basenoshowbase (ios_base &str)
 
ios_basenoshowpoint (ios_base &str)
 
ios_basenoshowpos (ios_base &str)
 
ios_basenoskipws (ios_base &str)
 
ios_basenouppercase (ios_base &str)
 
ios_baseoct (ios_base &str)
 
ios_baseright (ios_base &str)
 
ios_baseshowbase (ios_base &str)
 
ios_baseshowpoint (ios_base &str)
 
ios_baseshowpos (ios_base &str)
 
ios_baseskipws (ios_base &str)
 
ios_baseuppercase (ios_base &str)
 
-

Detailed Description

-

ios_base and ios classes

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Function Documentation

- -

◆ boolalpha()

- -
-
- - - - - -
- - - - - - - - -
ios_base& boolalpha (ios_basestr)
-
-inline
-
-

function for boolalpha manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ dec()

- -
-
- - - - - -
- - - - - - - - -
ios_base& dec (ios_basestr)
-
-inline
-
-

function for dec manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ hex()

- -
-
- - - - - -
- - - - - - - - -
ios_base& hex (ios_basestr)
-
-inline
-
-

function for hex manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ internal()

- -
-
- - - - - -
- - - - - - - - -
ios_base& internal (ios_basestr)
-
-inline
-
-

function for internal manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ left()

- -
-
- - - - - -
- - - - - - - - -
ios_base& left (ios_basestr)
-
-inline
-
-

function for left manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noboolalpha()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noboolalpha (ios_basestr)
-
-inline
-
-

function for noboolalpha manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noshowbase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noshowbase (ios_basestr)
-
-inline
-
-

function for noshowbase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noshowpoint()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noshowpoint (ios_basestr)
-
-inline
-
-

function for noshowpoint manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noshowpos()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noshowpos (ios_basestr)
-
-inline
-
-

function for noshowpos manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noskipws()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noskipws (ios_basestr)
-
-inline
-
-

function for noskipws manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ nouppercase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& nouppercase (ios_basestr)
-
-inline
-
-

function for nouppercase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ oct()

- -
-
- - - - - -
- - - - - - - - -
ios_base& oct (ios_basestr)
-
-inline
-
-

function for oct manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ right()

- -
-
- - - - - -
- - - - - - - - -
ios_base& right (ios_basestr)
-
-inline
-
-

function for right manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ showbase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& showbase (ios_basestr)
-
-inline
-
-

function for showbase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ showpoint()

- -
-
- - - - - -
- - - - - - - - -
ios_base& showpoint (ios_basestr)
-
-inline
-
-

function for showpoint manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ showpos()

- -
-
- - - - - -
- - - - - - - - -
ios_base& showpos (ios_basestr)
-
-inline
-
-

function for showpos manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ skipws()

- -
-
- - - - - -
- - - - - - - - -
ios_base& skipws (ios_basestr)
-
-inline
-
-

function for skipws manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ uppercase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& uppercase (ios_basestr)
-
-inline
-
-

function for uppercase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h__dep__incl.png deleted file mode 100644 index b24b7d4d..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h__incl.png deleted file mode 100644 index a77ef2b1..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ios_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h.html deleted file mode 100644 index bf6180e8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/iostream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
iostream.h File Reference
-
-
- -

iostream class -More...

-
#include "istream.h"
-#include "ostream.h"
-
-Include dependency graph for iostream.h:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - -
-
- - - - - - - - - - - - - -

-Classes

class  iostream
 Input/Output stream. More...
 
struct  setfill
 type for setfill manipulator More...
 
struct  setprecision
 type for setprecision manipulator More...
 
struct  setw
 type for setw manipulator More...
 
- - - - - - - - - - - - - - - - - - - -

-Functions

ostreamendl (ostream &os)
 
ostreamflush (ostream &os)
 
ostreamoperator<< (ostream &os, const setfill &arg)
 
ostreamoperator<< (ostream &os, const setprecision &arg)
 
ostreamoperator<< (ostream &os, const setw &arg)
 
istreamoperator>> (istream &obj, const setfill &arg)
 
istreamoperator>> (istream &is, const setprecision &arg)
 
istreamoperator>> (istream &is, const setw &arg)
 
istreamws (istream &is)
 
-

Detailed Description

-

iostream class

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Function Documentation

- -

◆ endl()

- -
-
- - - - - -
- - - - - - - - -
ostream& endl (ostreamos)
-
-inline
-
-

insert endline

Parameters
- - -
[in]osThe Stream
-
-
-
Returns
The stream
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - - -
ostream& flush (ostreamos)
-
-inline
-
-

flush manipulator

Parameters
- - -
[in]osThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ operator<<() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& operator<< (ostreamos,
const setfillarg 
)
-
-inline
-
-

setfill manipulator

Parameters
- - - -
[in]osthe stream
[in]argset setfill object
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& operator<< (ostreamos,
const setprecisionarg 
)
-
-inline
-
-

setprecision manipulator

Parameters
- - - -
[in]osthe stream
[in]argset setprecision object
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& operator<< (ostreamos,
const setwarg 
)
-
-inline
-
-

setw manipulator

Parameters
- - - -
[in]osthe stream
[in]argset setw object
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& operator>> (istreamobj,
const setfillarg 
)
-
-inline
-
-

setfill manipulator

Parameters
- - - -
[in]objthe stream
[in]argset setfill object
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& operator>> (istreamis,
const setprecisionarg 
)
-
-inline
-
-

setprecision manipulator

Parameters
- - - -
[in]isthe stream
[in]argset setprecision object
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& operator>> (istreamis,
const setwarg 
)
-
-inline
-
-

setw manipulator

Parameters
- - - -
[in]isthe stream
[in]argset setw object
-
-
-
Returns
the stream
- -
-
- -

◆ ws()

- -
-
- - - - - -
- - - - - - - - -
istream& ws (istreamis)
-
-inline
-
-

Skip white space

Parameters
- - -
[in]isthe Stream
-
-
-
Returns
The stream
- -
-
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h__dep__incl.png deleted file mode 100644 index 187f7922..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h__incl.png deleted file mode 100644 index d456d03d..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/iostream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h.html deleted file mode 100644 index c06bb11b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/istream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
istream.h File Reference
-
-
- -

istream class -More...

-
#include "ios.h"
-
-Include dependency graph for istream.h:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
- - - - -

-Classes

class  istream
 Input Stream. More...
 
-

Detailed Description

-

istream class

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h__dep__incl.png deleted file mode 100644 index af8daebf..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h__incl.png deleted file mode 100644 index 8dc6f516..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/istream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/jquery.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/jquery.js deleted file mode 100644 index 2771c749..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/jquery.js +++ /dev/null @@ -1,115 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' - - - - -
- -
-
ostream.h File Reference
-
-
- -

ostream class -More...

-
#include "ios.h"
-
-Include dependency graph for ostream.h:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
- - - - -

-Classes

class  ostream
 Output Stream. More...
 
-

Detailed Description

-

ostream class

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ostream_8h__dep__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ostream_8h__dep__incl.png deleted file mode 100644 index 1d797ce7..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ostream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ostream_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ostream_8h__incl.png deleted file mode 100644 index 1488d518..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/ostream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sdios_8h.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sdios_8h.html deleted file mode 100644 index 2359926f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sdios_8h.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/sdios.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
sdios.h File Reference
-
-
- -

C++ IO Streams features. -More...

-
#include "FatLib/fstream.h"
-#include "FatLib/ArduinoStream.h"
-
-Include dependency graph for sdios.h:
-
-
- - - - - - - - - - - - - - - - - -
-

Detailed Description

-

C++ IO Streams features.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sdios_8h__incl.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sdios_8h__incl.png deleted file mode 100644 index f03703b8..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sdios_8h__incl.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_0.html deleted file mode 100644 index 5125b940..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_0.js deleted file mode 100644 index c3aa3dc7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5f_5fbrkval',['__brkval',['../_free_stack_8h.html#ad193a2cc121e0d4614a1c21eb463fb56',1,'FreeStack.h']]], - ['_5f_5fbss_5fend',['__bss_end',['../_free_stack_8h.html#adbad17f740c2d7f2bc4833681c93c932',1,'FreeStack.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_1.html deleted file mode 100644 index b8ff8711..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_1.js deleted file mode 100644 index b82534e4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_1.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['adjustfield',['adjustfield',['../classios__base.html#adaaf735381254aa096ebe3605e8bbd0a',1,'ios_base']]], - ['app',['app',['../classios__base.html#a8380aac3c405730708888fdc68905820',1,'ios_base']]], - ['arduinofiles_2eh',['ArduinoFiles.h',['../_arduino_files_8h.html',1,'']]], - ['arduinoinstream',['ArduinoInStream',['../class_arduino_in_stream.html',1,'ArduinoInStream'],['../class_arduino_in_stream.html#a61ee22a5824849ec3261ee2f814dfb93',1,'ArduinoInStream::ArduinoInStream()']]], - ['arduinooutstream',['ArduinoOutStream',['../class_arduino_out_stream.html',1,'ArduinoOutStream'],['../class_arduino_out_stream.html#a228b667f9f53dc91c6ed7735d34f04a8',1,'ArduinoOutStream::ArduinoOutStream()']]], - ['arduinostream_2eh',['ArduinoStream.h',['../_arduino_stream_8h.html',1,'']]], - ['ate',['ate',['../classios__base.html#aa434355c165500065276d955d8b36e99',1,'ios_base']]], - ['attr',['attr',['../structlong_directory_entry.html#aa36bf1210d0c2b3b80948e5f697eb02e',1,'longDirectoryEntry']]], - ['attributes',['attributes',['../structdirectory_entry.html#a16c6cde55c8175c90935c386f1cfb21a',1,'directoryEntry']]], - ['available',['available',['../class_minimum_serial.html#a2abe4370989968938b5dc4872d51c3df',1,'MinimumSerial::available()'],['../class_print_file.html#a600592235b2bee6bdb3a9701d0d6eee3',1,'PrintFile::available()'],['../class_file.html#acf613c4e75bae85f543b30e701ebcc44',1,'File::available()'],['../class_fat_file.html#ac1fa779d98db7ffdb96f8019ab0060d6',1,'FatFile::available()']]], - ['arduino_20_25sdfat_20library',['Arduino %SdFat Library',['../index.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_10.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_10.html deleted file mode 100644 index 50bc449e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_10.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_10.js deleted file mode 100644 index 7ee09e61..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_10.js +++ /dev/null @@ -1,33 +0,0 @@ -var searchData= -[ - ['p',['p',['../structsetprecision.html#a7cb7bb355a303fa39a8035615bde9348',1,'setprecision']]], - ['part',['part',['../structmaster_boot_record.html#aa4e294e50f311635c10c92f4c99227c5',1,'masterBootRecord']]], - ['part_5ft',['part_t',['../_fat_structs_8h.html#a37251e7d5c69a159be727a3fc8c9d0e6',1,'FatStructs.h']]], - ['partitiontable',['partitionTable',['../structpartition_table.html',1,'']]], - ['peek',['peek',['../class_print_file.html#a3a2a66f4a0cb69ab4edc66d39997fda7',1,'PrintFile::peek()'],['../class_file.html#a0e5025f39bd584563bfe4b05fc1db268',1,'File::peek()'],['../class_fat_file.html#ac05b7136b887539426856c623869aa3a',1,'FatFile::peek()'],['../classistream.html#a4022265e0ede3698454f1ff59348c14a',1,'istream::peek()']]], - ['pgm_5fread_5fbyte',['pgm_read_byte',['../_fat_file_8h.html#a48c60b057902adf805797f183286728d',1,'FatFile.h']]], - ['pgm_5fread_5fword',['pgm_read_word',['../_fat_file_8h.html#a910fb5f01313d339d3b835d45e1e5ad0',1,'FatFile.h']]], - ['pos_5ftype',['pos_type',['../classios__base.html#abe85cf1f181b8bce8022f05ab76aae7f',1,'ios_base']]], - ['position',['position',['../struct_fat_pos__t.html#a8e14c6f2705777502b543452743eaa26',1,'FatPos_t::position()'],['../class_file.html#aae991c597c0bc4c5eb44c1f3b06a21ec',1,'File::position()']]], - ['precision',['precision',['../classios__base.html#aba92f0687644fc14f202958635ce276f',1,'ios_base::precision() const'],['../classios__base.html#a5b70cc65fc2c276136fea99bddedb6f0',1,'ios_base::precision(unsigned int n)']]], - ['print',['print',['../class_stdio_stream.html#ad3f6ee8e8ca5dcf6dabfd88199b172e2',1,'StdioStream::print(char c)'],['../class_stdio_stream.html#a1158ea5f9bf041f21b1733b7811c9bb9',1,'StdioStream::print(const char *str)'],['../class_stdio_stream.html#aac4d7b3548d03b8fd70adf12c7ee315c',1,'StdioStream::print(const __FlashStringHelper *str)'],['../class_stdio_stream.html#a26f5b98560b6771225005b073166108b',1,'StdioStream::print(double val, uint8_t prec=2)'],['../class_stdio_stream.html#a06b6eb9f0a7000fdcc73cd6af8d40560',1,'StdioStream::print(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a7129f85c7c5f16867f467731ef84dee9',1,'StdioStream::print(T val)']]], - ['print_5ft',['print_t',['../_fat_volume_8h.html#ac62f6449331cfe1a71f29be30efe7890',1,'FatVolume.h']]], - ['printcreatedatetime',['printCreateDateTime',['../class_fat_file.html#a558530f20314a8d8ee3d1a488fc7f46e',1,'FatFile']]], - ['printdec',['printDec',['../class_stdio_stream.html#ac0a907feb1e4b7e00de99857b4c0a470',1,'StdioStream::printDec(char n)'],['../class_stdio_stream.html#a2707ea97f6113c226781469f4f39ff62',1,'StdioStream::printDec(signed char n)'],['../class_stdio_stream.html#a6e6ac78caa6259a4c4934707bf497a2b',1,'StdioStream::printDec(unsigned char n)'],['../class_stdio_stream.html#a218af88db35f38babf01d6e0a9cdceeb',1,'StdioStream::printDec(int16_t n)'],['../class_stdio_stream.html#a90b2999af94a3578fff7579c2acf8e35',1,'StdioStream::printDec(uint16_t n)'],['../class_stdio_stream.html#ad4591f1234b57f63c1acf0f3392099ac',1,'StdioStream::printDec(int32_t n)'],['../class_stdio_stream.html#a8b6c2c80342abe45e6f564e9bd5bb7ea',1,'StdioStream::printDec(uint32_t n)'],['../class_stdio_stream.html#aaa8921947d4dbbae840d285cb633e8aa',1,'StdioStream::printDec(double value, uint8_t prec)'],['../class_stdio_stream.html#a6a09284b1c6d0769c27916a2e131e749',1,'StdioStream::printDec(float value, uint8_t prec)']]], - ['printfatdate',['printFatDate',['../class_fat_file.html#a8fdb038aafdf3a17ac80b53c063aa73b',1,'FatFile::printFatDate(uint16_t fatDate)'],['../class_fat_file.html#ada5364f66204b1a64afbf9d2e6cd2b0b',1,'FatFile::printFatDate(print_t *pr, uint16_t fatDate)']]], - ['printfattime',['printFatTime',['../class_fat_file.html#a7740731f08ef97de7dfbc9b075c4c7d1',1,'FatFile::printFatTime(uint16_t fatTime)'],['../class_fat_file.html#a4e7e56ba52ca17c602af1b85684b09a9',1,'FatFile::printFatTime(print_t *pr, uint16_t fatTime)']]], - ['printfield',['printField',['../class_fat_file.html#a7478cad0f9e5079311b9e1fa558016ff',1,'FatFile::printField(float value, char term, uint8_t prec=2)'],['../class_fat_file.html#abd3e1747511216462b3ef98167156cbb',1,'FatFile::printField(int16_t value, char term)'],['../class_fat_file.html#a9972c2419c293ef9c382bff666b9ae4d',1,'FatFile::printField(uint16_t value, char term)'],['../class_fat_file.html#a41b3b32dd8482429b74c7af3432d6cf8',1,'FatFile::printField(int32_t value, char term)'],['../class_fat_file.html#a097240f08baadeb1c64b63eab9afb088',1,'FatFile::printField(uint32_t value, char term)'],['../class_stdio_stream.html#a4988592ada39c4b4c603b061f84d183f',1,'StdioStream::printField(double value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a3b90b2317cc391f94784a847f5313c08',1,'StdioStream::printField(float value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a02c2ad1a2e71e82d238b8386cf3e6c41',1,'StdioStream::printField(T value, char term)']]], - ['printfile',['PrintFile',['../class_print_file.html',1,'PrintFile'],['../class_print_file.html#a537ea4364a7958550acf2c8ddb8791ec',1,'PrintFile::PrintFile()']]], - ['printfilesize',['printFileSize',['../class_fat_file.html#a12a5d2de2737c201aa39ca1bd2ab9c47',1,'FatFile']]], - ['printhex',['printHex',['../class_stdio_stream.html#add39b2b4ec3daa7c8922e96ce5d368bc',1,'StdioStream']]], - ['printhexln',['printHexln',['../class_stdio_stream.html#aec6ebea511489b0ef6b61d9132d93af9',1,'StdioStream']]], - ['println',['println',['../class_stdio_stream.html#ad0cd3acc05a91456f505752377bd405a',1,'StdioStream::println()'],['../class_stdio_stream.html#a3793dd66cf347a1ca0b7b167e948cce9',1,'StdioStream::println(double val, uint8_t prec=2)'],['../class_stdio_stream.html#aac250d041a7844c8db1cbd2d97ecfdaa',1,'StdioStream::println(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a3b14532768d07e6ed89c762d04792c12',1,'StdioStream::println(T val)']]], - ['printmodifydatetime',['printModifyDateTime',['../class_fat_file.html#a05cee5df46a370bf916d3ba597c82e39',1,'FatFile']]], - ['printname',['printName',['../class_fat_file.html#ad1cbc3aeb0f5193b7a26595966da9621',1,'FatFile::printName()'],['../class_fat_file.html#afe18a787fb8640e2d2483370c770f82f',1,'FatFile::printName(print_t *pr)']]], - ['printsfn',['printSFN',['../class_fat_file.html#a791cd7aade71f609aab62ec018aea3c0',1,'FatFile']]], - ['progmem',['PROGMEM',['../_fat_file_8h.html#a75acaba9e781937468d0911423bc0c35',1,'FatFile.h']]], - ['pstr',['PSTR',['../_fat_file_8h.html#a9c00057fd19e916cc1aa0a5949336beb',1,'FatFile.h']]], - ['put',['put',['../classostream.html#a11aad8a1efd284ccfa91cbfb78d089bd',1,'ostream']]], - ['putc',['putc',['../class_stdio_stream.html#adf9e552212aad6fc2284da0ee62d04dc',1,'StdioStream']]], - ['putcrlf',['putCRLF',['../class_stdio_stream.html#a09ccc4b6cabc3502c1052e85d94e84ef',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_11.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_11.html deleted file mode 100644 index b35c8bf0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_11.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_11.js deleted file mode 100644 index ff13a902..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_11.js +++ /dev/null @@ -1,29 +0,0 @@ -var searchData= -[ - ['rdstate',['rdstate',['../classios.html#afe4d084ba0d2704a27525147d1463c36',1,'ios']]], - ['read',['read',['../class_minimum_serial.html#a4890dd60f2ffb61eba0821cc80d411ad',1,'MinimumSerial::read()'],['../class_file.html#a4c46a1975e66c37977bf07c58ec10b4e',1,'File::read()'],['../class_fat_file.html#a60ae55ff6fe158c2340071d702a363c5',1,'FatFile::read()'],['../class_fat_file.html#a200e6e0553d5b709520c9dfac9ef77dd',1,'FatFile::read(void *buf, size_t nbyte)'],['../class_fat_cache.html#ac2bb0b8f2ce3ab5cd86cf30b4a663cea',1,'FatCache::read()']]], - ['readblock',['readBlock',['../class_base_block_driver.html#a16bb3305f3130253dd7ab6e19aa1b524',1,'BaseBlockDriver::readBlock()'],['../class_sdio_card.html#ac94605c428fa9258106835cceec470d8',1,'SdioCard::readBlock()'],['../class_sdio_card_e_x.html#a49609f0409ef01284bc83b10a8ec5efe',1,'SdioCardEX::readBlock()'],['../class_sd_spi_card.html#a4393634a82c6683ee94d1fefe0be332a',1,'SdSpiCard::readBlock()'],['../class_sd_spi_card_e_x.html#abb69c8bd538dafed1e7f33382ee48d61',1,'SdSpiCardEX::readBlock()']]], - ['readblocks',['readBlocks',['../class_base_block_driver.html#a3a029a2d02fc7cbdd7c15c8d622565c4',1,'BaseBlockDriver::readBlocks()'],['../class_sdio_card.html#a7de36d26a01dc39b7dc122c54ee03b12',1,'SdioCard::readBlocks()'],['../class_sdio_card_e_x.html#a1b50db2f87246f4ff1af4782152c5fee',1,'SdioCardEX::readBlocks()'],['../class_sd_spi_card.html#ac630f77c3137923b47c1bd12a9bbfadf',1,'SdSpiCard::readBlocks()'],['../class_sd_spi_card_e_x.html#a9e158cda94fadd12267fe7e63d06622a',1,'SdSpiCardEX::readBlocks()']]], - ['readcid',['readCID',['../class_sdio_card.html#add77777fbcf91cc41e8ec62fda169e79',1,'SdioCard::readCID()'],['../class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea',1,'SdSpiCard::readCID()']]], - ['readcsd',['readCSD',['../class_sdio_card.html#a1da0ca418c153e24b4e13b4c1e20d450',1,'SdioCard::readCSD()'],['../class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290',1,'SdSpiCard::readCSD()']]], - ['readdata',['readData',['../class_sdio_card.html#a9dc1cd99d0136e514faaecf56a6318d2',1,'SdioCard::readData()'],['../class_sd_spi_card.html#a3a1d1b4b4ceb42fcd41aaf6649482770',1,'SdSpiCard::readData()']]], - ['readdir',['readDir',['../class_fat_file.html#a1325afe074c3efecff666678cd9f116a',1,'FatFile']]], - ['readline',['readline',['../class_arduino_in_stream.html#ad4c60f813b8df6dd1d6696a3458de09c',1,'ArduinoInStream']]], - ['readocr',['readOCR',['../class_sdio_card.html#adc583f7a27f57ce55ce474b1379b9303',1,'SdioCard::readOCR()'],['../class_sd_spi_card.html#ab446e49338b3ce834a750ac6dae35f61',1,'SdSpiCard::readOCR()']]], - ['readstart',['readStart',['../class_sdio_card.html#a73beed782d16173b2e7b0e29c663f6fb',1,'SdioCard::readStart(uint32_t lba)'],['../class_sdio_card.html#a788171db84a1d724808d56ab9608e3a4',1,'SdioCard::readStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a3b1710d11496c32ba4323831e00ac6d1',1,'SdSpiCard::readStart()']]], - ['readstatus',['readStatus',['../class_sd_spi_card.html#a91d0413599efe0d63c8c2dfe4a12d9ae',1,'SdSpiCard']]], - ['readstop',['readStop',['../class_sdio_card.html#a5bd3f206d790149340783135d08eb701',1,'SdioCard::readStop()'],['../class_sd_spi_card.html#afdac7c399fa1ba3f904cf503526e007e',1,'SdSpiCard::readStop()']]], - ['remove',['remove',['../class_fat_file.html#ac837a537fbcca14c7aa390c5fc9f4e7c',1,'FatFile::remove()'],['../class_fat_file.html#afe820bbb056863e91ec482961c8dc695',1,'FatFile::remove(FatFile *dirFile, const char *path)'],['../class_fat_file_system.html#abf7d7d0dab43083d5be10d70ff4669e4',1,'FatFileSystem::remove()']]], - ['rename',['rename',['../class_fat_file.html#a4b42f2454ff462555c07ea094a92a1e0',1,'FatFile::rename()'],['../class_fat_file_system.html#a0187891a24017b41bd7c5ba63e659e65',1,'FatFileSystem::rename()']]], - ['reserved1',['reserved1',['../structfat__boot.html#affa7e6efb3ccea19ba7ea0ddadce7463',1,'fat_boot::reserved1()'],['../structfat32__boot.html#a7075c3c00aae071110fd1acb2e6fd599',1,'fat32_boot::reserved1()'],['../structfat32__fsinfo.html#ac24bd4801a60a54e5133ed1bb71bcdaa',1,'fat32_fsinfo::reserved1()']]], - ['reserved2',['reserved2',['../structfat32__fsinfo.html#a9ec0e2756cd7e169268798a558df3814',1,'fat32_fsinfo']]], - ['reservednt',['reservedNT',['../structdirectory_entry.html#afe7d00be85f3b78549b21610050da52b',1,'directoryEntry']]], - ['reservedsectorcount',['reservedSectorCount',['../structbios_parm_block.html#adb4830c345b27293c7d7b97b77f52e01',1,'biosParmBlock::reservedSectorCount()'],['../structfat__boot.html#a13f272a8f780fb43a400f873a3fd7b73',1,'fat_boot::reservedSectorCount()'],['../structfat32__boot.html#a8e490f05ad3552dfbdf8f9332d287ba0',1,'fat32_boot::reservedSectorCount()']]], - ['rewind',['rewind',['../class_fat_file.html#a5aac6e0b3cb08fc8b8668e916a8b0ca5',1,'FatFile::rewind()'],['../class_stdio_stream.html#ad985866675193d2ee1dde9e27b0d08da',1,'StdioStream::rewind()']]], - ['rewinddirectory',['rewindDirectory',['../class_file.html#ae1419603dea25a6c8480b941d7ac63a3',1,'File']]], - ['right',['right',['../classios__base.html#aec064a12730b5d87e718c1864e29ac64',1,'ios_base::right()'],['../ios_8h.html#aee80fd600c5c58a2bebbd48afdcf8280',1,'right(): ios.h']]], - ['rmdir',['rmdir',['../class_fat_file.html#a9515bac181d33e7f0125e88fa2ccd283',1,'FatFile::rmdir()'],['../class_fat_file_system.html#aaed2edc7ff7fedb163458c870bb41b33',1,'FatFileSystem::rmdir()']]], - ['rmrfstar',['rmRfStar',['../class_fat_file.html#ac780a80526f86d3def701ecdc99d8bfe',1,'FatFile']]], - ['rootdirentrycount',['rootDirEntryCount',['../structbios_parm_block.html#a9a1b24bb2dbb3a123c4ffc703954d71d',1,'biosParmBlock::rootDirEntryCount()'],['../structfat__boot.html#a2124f89e12307df944f08e6657dbf4af',1,'fat_boot::rootDirEntryCount()'],['../structfat32__boot.html#a94185496fb56c6e0e8078fc3803e9142',1,'fat32_boot::rootDirEntryCount()'],['../class_fat_volume.html#a31d0efaf3e47c9342da0dfb3735eecf1',1,'FatVolume::rootDirEntryCount()']]], - ['rootdirstart',['rootDirStart',['../class_fat_volume.html#a372f1f1fab71f5744eaf538156abe64d',1,'FatVolume']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_12.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_12.html deleted file mode 100644 index fd265245..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_12.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_12.js deleted file mode 100644 index a1c4df07..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_12.js +++ /dev/null @@ -1,68 +0,0 @@ -var searchData= -[ - ['sd2card',['Sd2Card',['../class_sd2_card.html',1,'']]], - ['sd_5ffat_5fversion',['SD_FAT_VERSION',['../_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210',1,'SdFat.h']]], - ['sd_5fhas_5fcustom_5fspi',['SD_HAS_CUSTOM_SPI',['../_sd_fat_config_8h.html#a838861a01379e94361148d22e62b1977',1,'SdFatConfig.h']]], - ['sdbasefile',['SdBaseFile',['../class_sd_base_file.html',1,'SdBaseFile'],['../class_sd_base_file.html#af23fd43105b4eb629f4b66fa695a5cf3',1,'SdBaseFile::SdBaseFile()']]], - ['sdfat',['SdFat',['../class_sd_fat.html',1,'SdFat'],['../class_sd_fat.html#a68d0e890435e3e71e5e44db1736add1e',1,'SdFat::SdFat()']]], - ['sdfat_2eh',['SdFat.h',['../_sd_fat_8h.html',1,'']]], - ['sdfatconfig_2eh',['SdFatConfig.h',['../_sd_fat_config_8h.html',1,'']]], - ['sdfatex',['SdFatEX',['../class_sd_fat_e_x.html',1,'SdFatEX'],['../class_sd_fat_e_x.html#aef4d79f9a36785543f48ddc18ac2af78',1,'SdFatEX::SdFatEX()']]], - ['sdfatsdio',['SdFatSdio',['../class_sd_fat_sdio.html',1,'']]], - ['sdfatsdioex',['SdFatSdioEX',['../class_sd_fat_sdio_e_x.html',1,'']]], - ['sdfatsoftspi',['SdFatSoftSpi',['../class_sd_fat_soft_spi.html',1,'']]], - ['sdfatsoftspiex',['SdFatSoftSpiEX',['../class_sd_fat_soft_spi_e_x.html',1,'']]], - ['sdfile',['SdFile',['../class_sd_file.html',1,'SdFile'],['../class_sd_file.html#ad05be3a1fb635448d15a154424b6c33f',1,'SdFile::SdFile()']]], - ['sdfilesystem',['SdFileSystem',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocard_20_3e',['SdFileSystem< SdioCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocardex_20_3e',['SdFileSystem< SdioCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicard_20_3e',['SdFileSystem< SdSpiCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicardex_20_3e',['SdFileSystem< SdSpiCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdiocard',['SdioCard',['../class_sdio_card.html',1,'']]], - ['sdiocardex',['SdioCardEX',['../class_sdio_card_e_x.html',1,'']]], - ['sdios_2eh',['sdios.h',['../sdios_8h.html',1,'']]], - ['sdspicard',['SdSpiCard',['../class_sd_spi_card.html',1,'SdSpiCard'],['../class_sd_spi_card.html#a0441c5da53bd3bd72fb833fc940f25e8',1,'SdSpiCard::SdSpiCard()']]], - ['sdspicard_2eh',['SdSpiCard.h',['../_sd_spi_card_8h.html',1,'']]], - ['sdspicardex',['SdSpiCardEX',['../class_sd_spi_card_e_x.html',1,'']]], - ['sectorspercluster',['sectorsPerCluster',['../structbios_parm_block.html#a45d5e2d8c93a028a074e8ce3dc751ab5',1,'biosParmBlock::sectorsPerCluster()'],['../structfat__boot.html#ab3063726125b16a2ccad719548d79abd',1,'fat_boot::sectorsPerCluster()'],['../structfat32__boot.html#a63ded2780732f166f7b7d36bc6aed702',1,'fat32_boot::sectorsPerCluster()']]], - ['sectorsperfat16',['sectorsPerFat16',['../structbios_parm_block.html#a24d6e5a9069491d5db6dbe747336985b',1,'biosParmBlock::sectorsPerFat16()'],['../structfat__boot.html#a0d5ab13399759acfa571e49b85600db1',1,'fat_boot::sectorsPerFat16()'],['../structfat32__boot.html#aeaa78272cd42b162ea448e1642f75cab',1,'fat32_boot::sectorsPerFat16()']]], - ['sectorsperfat32',['sectorsPerFat32',['../structbios_parm_block.html#ad80429df03a6b80f79b18cb6e1008d64',1,'biosParmBlock::sectorsPerFat32()'],['../structfat32__boot.html#aa00db084ff2f7e25febef321469adeb9',1,'fat32_boot::sectorsPerFat32()']]], - ['sectorspertrack',['sectorsPerTrack',['../structfat__boot.html#a6d5ceaf374e0607be8b8162bf657f282',1,'fat_boot::sectorsPerTrack()'],['../structfat32__boot.html#a9525b2e63f84a5cf62ea20199cedf5de',1,'fat32_boot::sectorsPerTrack()']]], - ['sectorspertrtack',['sectorsPerTrtack',['../structbios_parm_block.html#a7c27cb7f66c2c9d5266d896e8df227c7',1,'biosParmBlock']]], - ['seek',['seek',['../class_file.html#a2d41ea52356b769e05e1242685758c08',1,'File']]], - ['seek_5fcur',['SEEK_CUR',['../_stdio_stream_8h.html#a4c8d0b76b470ba65a43ca46a88320f39',1,'StdioStream.h']]], - ['seek_5fend',['SEEK_END',['../_stdio_stream_8h.html#ad2a2e6c114780c3071efd24f16c7f7d8',1,'StdioStream.h']]], - ['seek_5fset',['SEEK_SET',['../_stdio_stream_8h.html#a0d112bae8fd35be772185b6ec6bcbe64',1,'StdioStream.h']]], - ['seekcur',['seekCur',['../class_fat_file.html#a5812037ea30777cc350698ad26f2c73f',1,'FatFile']]], - ['seekdir',['seekdir',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191e',1,'ios_base']]], - ['seekend',['seekEnd',['../class_fat_file.html#a84f677f4e75ef6fa2eb632f4cdf6b486',1,'FatFile']]], - ['seekg',['seekg',['../classistream.html#a52d637b1aeca9946085a4a72e0208aec',1,'istream::seekg(pos_type pos)'],['../classistream.html#a60dd48a3b374fb9cbdc59e1f930dea95',1,'istream::seekg(off_type off, seekdir way)']]], - ['seekp',['seekp',['../classostream.html#a18b453d2770a8852c312cbda919c4687',1,'ostream::seekp(pos_type pos)'],['../classostream.html#af6265a5be29237517b30673667ba4213',1,'ostream::seekp(off_type off, seekdir way)']]], - ['seekset',['seekSet',['../class_fat_file.html#ab067190d25733ed7e697d9890f61fd7a',1,'FatFile']]], - ['seqpos',['seqPos',['../structfname__t.html#a96b7c779dec8dd568be3290451078a4e',1,'fname_t']]], - ['setcwd',['setCwd',['../class_fat_file.html#a360ef9c05e677271bed6c0a4d663634c',1,'FatFile']]], - ['setf',['setf',['../classios__base.html#ab5db835cb45bba7684ebf72d9a3cccb4',1,'ios_base::setf(fmtflags fl)'],['../classios__base.html#a74dbc93607ab7d68a87ec326b92b6c81',1,'ios_base::setf(fmtflags fl, fmtflags mask)']]], - ['setfill',['setfill',['../structsetfill.html',1,'setfill'],['../structsetfill.html#abcd87f0632678d277df55406d25c8325',1,'setfill::setfill()']]], - ['setpos',['setpos',['../class_fat_file.html#acf264de4e3ca36c5e8a39e56173c9044',1,'FatFile']]], - ['setprecision',['setprecision',['../structsetprecision.html',1,'setprecision'],['../structsetprecision.html#a73fce143591989f56ef887a2ea86ac45',1,'setprecision::setprecision()']]], - ['setstate',['setstate',['../classios.html#aee5d194656bdfb0c8621b23ea2f51afb',1,'ios']]], - ['setw',['setw',['../structsetw.html',1,'setw'],['../structsetw.html#afd8bfd075474f63df3c8b44ad47517d2',1,'setw::setw()']]], - ['sfn',['sfn',['../structfname__t.html#a37ed0c108b1feb81be4f8c041a4336bd',1,'fname_t']]], - ['showbase',['showbase',['../classios__base.html#a7e3373ab307feecfc228bc9bdb29cd01',1,'ios_base::showbase()'],['../ios_8h.html#a73159e1398939807aeae6015dd86f2f4',1,'showbase(): ios.h']]], - ['showpoint',['showpoint',['../classios__base.html#ac9bb172682e157f037bd7fb82a236ee6',1,'ios_base::showpoint()'],['../ios_8h.html#a322f5897ace09768cd782f0c8f222770',1,'showpoint(): ios.h']]], - ['showpos',['showpos',['../classios__base.html#a7bfa4a883933105d10f8ce2693cb9f21',1,'ios_base::showpos()'],['../ios_8h.html#a80798554dbfece679adb0e05eb855943',1,'showpos(): ios.h']]], - ['size',['size',['../class_file.html#a603d3cd3319142d00a7ebd434970b017',1,'File']]], - ['skipwhite',['skipWhite',['../classistream.html#a0f7468be86d93de5d33fa99095898279',1,'istream']]], - ['skipws',['skipws',['../classios__base.html#a64977c777d6e45826d1be9763f17f824',1,'ios_base::skipws()'],['../ios_8h.html#a972282e5d9d894f61c8a54423858c0a4',1,'skipws(): ios.h']]], - ['spistart',['spiStart',['../class_sd_spi_card.html#aa39feb6ebb269071ac6843a424ac311c',1,'SdSpiCard']]], - ['spistop',['spiStop',['../class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1',1,'SdSpiCard']]], - ['stdiostream',['StdioStream',['../class_stdio_stream.html',1,'StdioStream'],['../class_stdio_stream.html#a96b2c027e76bfca6d6835c9ae1be2ad2',1,'StdioStream::StdioStream()']]], - ['stdiostream_2eh',['StdioStream.h',['../_stdio_stream_8h.html',1,'']]], - ['stream_5fbuf_5fsize',['STREAM_BUF_SIZE',['../_stdio_stream_8h.html#ad9a6150ef11e2616c1a99bc777df17d3',1,'StdioStream.h']]], - ['streamsize',['streamsize',['../classios__base.html#a82836e1d3cc603fba8f0b54d323a2dff',1,'ios_base']]], - ['structsignature',['structSignature',['../structfat32__fsinfo.html#aa4a9ed657a0f58a7a1c75760c3a79fd4',1,'fat32_fsinfo']]], - ['sync',['sync',['../class_fat_file.html#a67f3dc4896c542d695e11aac927f585e',1,'FatFile::sync()'],['../class_fat_cache.html#a4d76d4f46ce5994f6fc4678a7b4f8cf1',1,'FatCache::sync()']]], - ['syncblocks',['syncBlocks',['../class_base_block_driver.html#a5361ff2658d7654bf00b97c54c6aa2aa',1,'BaseBlockDriver::syncBlocks()'],['../class_sdio_card.html#affcd36a5c3a42042fe24716671f06632',1,'SdioCard::syncBlocks()'],['../class_sdio_card_e_x.html#a02699a39ef940441ef0f1049742c5aa7',1,'SdioCardEX::syncBlocks()'],['../class_sd_spi_card.html#a1b6d5f412c4ad75c2f575ca75c56c095',1,'SdSpiCard::syncBlocks()'],['../class_sd_spi_card_e_x.html#af4a7c15bae6add50d66d066c0927a021',1,'SdSpiCardEX::syncBlocks()']]], - ['syscall',['SysCall',['../class_sys_call.html',1,'']]], - ['syscall_2eh',['SysCall.h',['../_sys_call_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_13.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_13.html deleted file mode 100644 index 04f66e2f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_13.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_13.js deleted file mode 100644 index aaf59419..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_13.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['tailsignature',['tailSignature',['../structfat32__fsinfo.html#a484dd16425e4e687dc914d12309470e0',1,'fat32_fsinfo']]], - ['tellg',['tellg',['../classistream.html#a18332bdcb7fbe33ca06045c786cac4c3',1,'istream']]], - ['tellp',['tellp',['../classostream.html#a92dec0e2bc8352df1419d1cdc434e619',1,'ostream']]], - ['timestamp',['timestamp',['../class_fat_file.html#aa53a8d1d2467ad9af7d61cbf8ee85243',1,'FatFile::timestamp(FatFile *file)'],['../class_fat_file.html#a56dabdf73833b7e961c4530eb8e16d23',1,'FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)']]], - ['totalsectors',['totalSectors',['../structpartition_table.html#acf96e59ce648a9a0cf35751c3b6d7730',1,'partitionTable']]], - ['totalsectors16',['totalSectors16',['../structbios_parm_block.html#a686c686fde2fb109bea120f2f434db87',1,'biosParmBlock::totalSectors16()'],['../structfat__boot.html#ac8bd40dd9186882e423e10b0c83e89b7',1,'fat_boot::totalSectors16()'],['../structfat32__boot.html#acbcae2f15475a886f674f932da1deb3f',1,'fat32_boot::totalSectors16()']]], - ['totalsectors32',['totalSectors32',['../structbios_parm_block.html#abead42e130c40e2aa535202e7cb07578',1,'biosParmBlock::totalSectors32()'],['../structfat__boot.html#addeb2dd8f78418edbf544303d44133e2',1,'fat_boot::totalSectors32()'],['../structfat32__boot.html#ab79466016103c2762c6b057dd458d434',1,'fat32_boot::totalSectors32()']]], - ['trunc',['trunc',['../classios__base.html#ae62b8972f37509819e1384214071194b',1,'ios_base']]], - ['truncate',['truncate',['../class_fat_file.html#aa6e663098a578635d37d92e82d18d616',1,'FatFile::truncate()'],['../class_fat_file_system.html#ad60cb13557f35578f868e03e9ccb8be1',1,'FatFileSystem::truncate()']]], - ['type',['type',['../structpartition_table.html#a3861cf276c728c4dd30ca04e74197ee8',1,'partitionTable::type()'],['../structlong_directory_entry.html#a9adb019dbf24cce65c8d1419cd000f91',1,'longDirectoryEntry::type()'],['../class_sdio_card.html#a2151106a93280ae41bab654428214661',1,'SdioCard::type()'],['../class_sd_spi_card.html#a48f1e3f107d7242518bdfed78acb46bc',1,'SdSpiCard::type()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_14.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_14.html deleted file mode 100644 index 285f34bd..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_14.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_14.js deleted file mode 100644 index d732d327..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_14.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['ungetc',['ungetc',['../class_stdio_stream.html#ac00e0dd906c2e857ece53794c6c92786',1,'StdioStream']]], - ['ungetc_5fbuf_5fsize',['UNGETC_BUF_SIZE',['../_stdio_stream_8h.html#a785dd413c0d7b05f95df82d3453ecacd',1,'StdioStream.h']]], - ['unsetf',['unsetf',['../classios__base.html#a3bf7d054a433ed15e8b984e16f630fa4',1,'ios_base']]], - ['uppercase',['uppercase',['../classios__base.html#ade3db1fe3249e87f4c47a9a8916793d9',1,'ios_base::uppercase()'],['../ios_8h.html#af5d5e1a0effa1b500bb882feed5a2061',1,'uppercase(): ios.h']]], - ['use_5ffcntl_5fh',['USE_FCNTL_H',['../_sd_fat_config_8h.html#ab4b7255422e65730612f1f6af1a26752',1,'SdFatConfig.h']]], - ['use_5flong_5ffile_5fnames',['USE_LONG_FILE_NAMES',['../_sd_fat_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): FatLibConfig.h']]], - ['use_5fmulti_5fblock_5fio',['USE_MULTI_BLOCK_IO',['../_sd_fat_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): SdFatConfig.h'],['../_fat_lib_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): FatLibConfig.h']]], - ['use_5fsd_5fcrc',['USE_SD_CRC',['../_sd_fat_config_8h.html#af2e76ffb2fdb830175abf513dd640fdd',1,'SdFatConfig.h']]], - ['use_5fseparate_5ffat_5fcache',['USE_SEPARATE_FAT_CACHE',['../_sd_fat_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): FatLibConfig.h']]], - ['use_5fstandard_5fspi_5flibrary',['USE_STANDARD_SPI_LIBRARY',['../_sd_fat_config_8h.html#a3dc42547ca4567cb789bec55759afeb2',1,'SdFatConfig.h']]], - ['usuallyzero',['usuallyZero',['../structmaster_boot_record.html#afacfc863e98f64053cd9459c6dec948f',1,'masterBootRecord']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_15.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_15.html deleted file mode 100644 index 0ed74e01..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_15.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_15.js deleted file mode 100644 index f19dcfb3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_15.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['vol',['vol',['../class_fat_file_system.html#a4ca68fe47bb675df0a80df1ed7a53698',1,'FatFileSystem']]], - ['volume',['volume',['../class_fat_file.html#ae813920a21860b25f25d95c934dada0f',1,'FatFile']]], - ['volumeblockcount',['volumeBlockCount',['../class_fat_volume.html#ada9f893c796559c132ef9da061f04a39',1,'FatVolume']]], - ['volumelabel',['volumeLabel',['../structfat__boot.html#a9ee733f1b1abc0210ec8f9676bba2218',1,'fat_boot::volumeLabel()'],['../structfat32__boot.html#a8e6349f46344145a7320637a58107b3b',1,'fat32_boot::volumeLabel()']]], - ['volumeserialnumber',['volumeSerialNumber',['../structfat__boot.html#ac05e88a0d27f0340ba008834361d2b20',1,'fat_boot::volumeSerialNumber()'],['../structfat32__boot.html#a20768678da224faefd8acf12cabdbfb8',1,'fat32_boot::volumeSerialNumber()']]], - ['vwd',['vwd',['../class_fat_file_system.html#acf257d02b7166683bda2abc5058004bf',1,'FatFileSystem']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_16.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_16.html deleted file mode 100644 index 696f0252..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_16.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_16.js deleted file mode 100644 index 3f333e17..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_16.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['w',['w',['../structsetw.html#ab48d915a24d3f3365c9eb76e138a6f4e',1,'setw']]], - ['wdt_5fyield_5ftime_5fmicros',['WDT_YIELD_TIME_MICROS',['../_sd_fat_config_8h.html#a4e8a928d86c50c91c0bfc9a442373e14',1,'SdFatConfig.h']]], - ['width',['width',['../classios__base.html#afa30e7644b4eae5928ad9c487ad387de',1,'ios_base::width()'],['../classios__base.html#ab2ba0f005bbf3d8ebed93b64068492e0',1,'ios_base::width(unsigned n)']]], - ['wipe',['wipe',['../class_fat_file_system.html#a36d7831f92acfbfef1c4a24dd7103dc4',1,'FatFileSystem::wipe()'],['../class_fat_volume.html#a8088aa74cf601996905dadd2eea6966c',1,'FatVolume::wipe()']]], - ['write',['write',['../class_minimum_serial.html#a0ca1d9631fe5f2f00878bd481dbbd3aa',1,'MinimumSerial::write()'],['../class_print_file.html#a460b033ff85e85f684f8d9b615645db1',1,'PrintFile::write(uint8_t b)'],['../class_print_file.html#a29c1d534d21c3a82ad04232d37119a57',1,'PrintFile::write(const uint8_t *buf, size_t size)'],['../class_file.html#a618a6b2b7e81bfb93e0d3c158f614f90',1,'File::write(uint8_t b)'],['../class_file.html#aa531c1641a2363e1f6b9d103f37433da',1,'File::write(const uint8_t *buf, size_t size)'],['../class_fat_file.html#aa4a5b81161994cea07938702cdfce49f',1,'FatFile::write(const char *str)'],['../class_fat_file.html#a5524bd9f3b8f54ee163e391cba618186',1,'FatFile::write(uint8_t b)'],['../class_fat_file.html#a0ab9df44a9ee4b6eb0a78f15f1e30004',1,'FatFile::write(const void *buf, size_t nbyte)']]], - ['writeblock',['writeBlock',['../class_base_block_driver.html#a87df3db1b400286883661525441d39fa',1,'BaseBlockDriver::writeBlock()'],['../class_sdio_card.html#ae53e5f72ddf9ace3f47774d968e064ed',1,'SdioCard::writeBlock()'],['../class_sdio_card_e_x.html#ab34379d6663461dd0000180e640b73be',1,'SdioCardEX::writeBlock()'],['../class_sd_spi_card.html#a03a0bdb0f37a88076f24a2133cf5b4ed',1,'SdSpiCard::writeBlock()'],['../class_sd_spi_card_e_x.html#a6bd5e6bcfc2ab9574daa11bdd342be7b',1,'SdSpiCardEX::writeBlock()']]], - ['writeblocks',['writeBlocks',['../class_base_block_driver.html#a3d6520b21252ebfb17b0cac0b87689b1',1,'BaseBlockDriver::writeBlocks()'],['../class_sdio_card.html#a8b811f875497e90e75fbe6c2d41d89cb',1,'SdioCard::writeBlocks()'],['../class_sdio_card_e_x.html#a0e504921296a473da074d4a60d573f29',1,'SdioCardEX::writeBlocks()'],['../class_sd_spi_card.html#a181d96fe44891b7caabcd47dd29ac913',1,'SdSpiCard::writeBlocks()'],['../class_sd_spi_card_e_x.html#a9a7a5815b56c2cc77590a72635593762',1,'SdSpiCardEX::writeBlocks()']]], - ['writedata',['writeData',['../class_sdio_card.html#a8467e7ffafa45ff930b38a6f18e9547a',1,'SdioCard::writeData()'],['../class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa',1,'SdSpiCard::writeData()']]], - ['writestart',['writeStart',['../class_sdio_card.html#a6216b2b1c42bd585669955f774292f78',1,'SdioCard::writeStart(uint32_t lba)'],['../class_sdio_card.html#a55b31eb21c986c8476bf42e975801e05',1,'SdioCard::writeStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a56d4750a5d2f693943eec985cb61ffe2',1,'SdSpiCard::writeStart(uint32_t blockNumber)'],['../class_sd_spi_card.html#a8bf0dc991308dcd2a7427bad89a9e2ba',1,'SdSpiCard::writeStart(uint32_t blockNumber, uint32_t eraseCount)']]], - ['writestop',['writeStop',['../class_sdio_card.html#acb560c2ea1f30c646b96f02e728b0fe1',1,'SdioCard::writeStop()'],['../class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0',1,'SdSpiCard::writeStop()']]], - ['ws',['ws',['../iostream_8h.html#a8adf4c714b8c8f201dedc83ee04556b1',1,'iostream.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_17.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_17.html deleted file mode 100644 index f1e14b63..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_17.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_17.js deleted file mode 100644 index 685c4a73..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['yield',['yield',['../class_sys_call.html#a2219ba5ea8e411b022a3a00df5f380e0',1,'SysCall']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_2.html deleted file mode 100644 index 2f17735e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_2.js deleted file mode 100644 index fdc13ef7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_2.js +++ /dev/null @@ -1,32 +0,0 @@ -var searchData= -[ - ['bad',['bad',['../classios.html#a78be4e3069a644ff36d83a70b080c321',1,'ios']]], - ['badbit',['badbit',['../classios__base.html#ac8c2c8f2f6bc9e6ce101c20e88ebce35',1,'ios_base']]], - ['baseblockdriver',['BaseBlockDriver',['../class_base_block_driver.html',1,'']]], - ['basefield',['basefield',['../classios__base.html#a75ce5482aa207d7aa0265d138b50a102',1,'ios_base']]], - ['beg',['beg',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea6639b4dd9e9b57ffef4a176cd1a1e7bb',1,'ios_base']]], - ['begin',['begin',['../class_minimum_serial.html#a5c56beb3472bb97f949defeecacda52c',1,'MinimumSerial::begin()'],['../class_sd_file_system.html#ad94237ef45c52698e97b04e8c131f21e',1,'SdFileSystem::begin()'],['../class_sd_fat.html#abfafe10a64b28e6c1698ed82d340f624',1,'SdFat::begin()'],['../class_sd_fat_sdio.html#ac742b37bd8f2f4eb4df44b37c98398e0',1,'SdFatSdio::begin()'],['../class_sd_fat_sdio_e_x.html#a5af596a3788fa3c321a6cce2fc4e2824',1,'SdFatSdioEX::begin()'],['../class_sd_fat_soft_spi.html#a061019e4b5e17fad3cf8b0e3a08532e4',1,'SdFatSoftSpi::begin()'],['../class_sd_fat_e_x.html#a25acc97272c6004a6a4118bacef07467',1,'SdFatEX::begin()'],['../class_sd_fat_soft_spi_e_x.html#af84b3a6a61dd4c7f3c2c4bb17a8a6609',1,'SdFatSoftSpiEX::begin()'],['../class_sd2_card.html#a8506e1a2d7c4d8ec3f26e8b62ea81cd7',1,'Sd2Card::begin()'],['../class_fat_file_system.html#a5dda20d3dcbfc8c641babbb2c9aac382',1,'FatFileSystem::begin()'],['../class_sdio_card.html#ac749bdad92a4465d062f5d21a7f4faf5',1,'SdioCard::begin()'],['../class_sdio_card_e_x.html#adf877d2c8641cdbd52657004c34ec18a',1,'SdioCardEX::begin()'],['../class_sd_spi_card.html#a824cd60ef8ac2b06262597d6f30a4ea7',1,'SdSpiCard::begin()'],['../class_sd_spi_card_e_x.html#a4fd0b23d230c6ad7dc406e798bbd5470',1,'SdSpiCardEX::begin()']]], - ['begincylinderhigh',['beginCylinderHigh',['../structpartition_table.html#a744f0c7f9ad4c426b10de085b4f52392',1,'partitionTable']]], - ['begincylinderlow',['beginCylinderLow',['../structpartition_table.html#a941fcb4df298f5f73ccca011bf40787a',1,'partitionTable']]], - ['beginhead',['beginHead',['../structpartition_table.html#a7d426694b8cf2151ae38568670a8c845',1,'partitionTable']]], - ['beginsector',['beginSector',['../structpartition_table.html#ae201c11d9671c9efc307c654a2b6c026',1,'partitionTable']]], - ['binary',['binary',['../classios__base.html#ac99947c17c2936d15243671366605602',1,'ios_base']]], - ['biosparmblock',['biosParmBlock',['../structbios_parm_block.html',1,'']]], - ['block',['block',['../class_fat_cache.html#ab3d9c4f94af61065b6d6d0892827fd8a',1,'FatCache']]], - ['blockdriver',['BlockDriver',['../_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb',1,'BlockDriver.h']]], - ['blockdriver_2eh',['BlockDriver.h',['../_block_driver_8h.html',1,'']]], - ['blockspercluster',['blocksPerCluster',['../class_fat_volume.html#af6ab43bc0853febb38298406c4067a43',1,'FatVolume']]], - ['blocksperfat',['blocksPerFat',['../class_fat_volume.html#adb87da3b10344f28a92dfade492b8398',1,'FatVolume']]], - ['boolalpha',['boolalpha',['../classios__base.html#afa74acd95d4bbc7cc3551251aac2bf00',1,'ios_base::boolalpha()'],['../ios_8h.html#a0016daaaf730481e2ad36972fa7abb17',1,'boolalpha(): ios.h']]], - ['boot',['boot',['../structpartition_table.html#adf386afb1f33046d8b6a1a0afa780ec9',1,'partitionTable']]], - ['bootcode',['bootCode',['../structfat__boot.html#acf9f5d9f61a6e680e11849f957ecf782',1,'fat_boot::bootCode()'],['../structfat32__boot.html#a7a74880066860140386edf3d9278b9f7',1,'fat32_boot::bootCode()']]], - ['bootsectorsig0',['bootSectorSig0',['../structfat__boot.html#a7951b888af4f357b84dd40af2ef7f29d',1,'fat_boot::bootSectorSig0()'],['../structfat32__boot.html#a1cb46a5427b641a6017a082bc56df1be',1,'fat32_boot::bootSectorSig0()']]], - ['bootsectorsig1',['bootSectorSig1',['../structfat__boot.html#afe8f58668ff594bb2022ce7c06b7726c',1,'fat_boot::bootSectorSig1()'],['../structfat32__boot.html#a53bc302a398f02a86d3b28f25a5ec8e2',1,'fat32_boot::bootSectorSig1()']]], - ['bootsig0',['BOOTSIG0',['../_fat_structs_8h.html#acb7f0c892eb84c121c5698b2605e95e3',1,'FatStructs.h']]], - ['bootsig1',['BOOTSIG1',['../_fat_structs_8h.html#a52f90172e11e828b411c803f29853753',1,'FatStructs.h']]], - ['bootsignature',['bootSignature',['../structfat__boot.html#a712dc388c530e91e4a692e7102d6bdc8',1,'fat_boot::bootSignature()'],['../structfat32__boot.html#ab79a1205277ecab05526fb0bac6e42f6',1,'fat32_boot::bootSignature()']]], - ['bpb_5ft',['bpb_t',['../_fat_structs_8h.html#a5c8af240713e05e7e6c959006ced35fb',1,'FatStructs.h']]], - ['buf',['buf',['../classobufstream.html#a4f699181bd3727f4288f4f95a5ce207f',1,'obufstream']]], - ['bufstream_2eh',['bufstream.h',['../bufstream_8h.html',1,'']]], - ['bytespersector',['bytesPerSector',['../structbios_parm_block.html#aec24d316af486445d55da14cbbfa6bf4',1,'biosParmBlock::bytesPerSector()'],['../structfat__boot.html#a60b2461f8ebf0ad295a95094e1bd7d65',1,'fat_boot::bytesPerSector()'],['../structfat32__boot.html#a03c7086a8c988257a6678179a67a3fee',1,'fat32_boot::bytesPerSector()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_3.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_3.html deleted file mode 100644 index a3e6f7db..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_3.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_3.js deleted file mode 100644 index e7254c50..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_3.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['c',['c',['../structsetfill.html#a42ffb4e6135c1274ae827cfed7793a82',1,'setfill']]], - ['cache_5ffor_5fread',['CACHE_FOR_READ',['../class_fat_cache.html#ab4b446515ff9a0cebc747630ddd10c93',1,'FatCache']]], - ['cache_5ffor_5fwrite',['CACHE_FOR_WRITE',['../class_fat_cache.html#a81cb572f33443bd6aee9aa33ec395d0f',1,'FatCache']]], - ['cache_5foption_5fno_5fread',['CACHE_OPTION_NO_READ',['../class_fat_cache.html#adf974f55e53ee0aaa85abb0d7d67181c',1,'FatCache']]], - ['cache_5freserve_5ffor_5fwrite',['CACHE_RESERVE_FOR_WRITE',['../class_fat_cache.html#a49d2896ff525ab77852f76df5c2a09c2',1,'FatCache']]], - ['cache_5fstatus_5fdirty',['CACHE_STATUS_DIRTY',['../class_fat_cache.html#aac8c38e5c545d0f80b13d816117f626e',1,'FatCache']]], - ['cache_5fstatus_5fmask',['CACHE_STATUS_MASK',['../class_fat_cache.html#ab70dc4a2e387f0e9bf392044c702ae32',1,'FatCache']]], - ['cache_5fstatus_5fmirror_5ffat',['CACHE_STATUS_MIRROR_FAT',['../class_fat_cache.html#a45236e1c0a2a098f08d3add0e4b1467a',1,'FatCache']]], - ['cache_5ft',['cache_t',['../unioncache__t.html',1,'']]], - ['cacheclear',['cacheClear',['../class_fat_volume.html#aa1e3b1d0c21d202deb82668068ab00e8',1,'FatVolume']]], - ['card',['card',['../class_sd_file_system.html#ab5dcfbeeb7caa38a38db86003341eb07',1,'SdFileSystem::card()'],['../class_sd_fat_sdio_e_x.html#ac3fe2fd93b491918ec77308ec7c0290c',1,'SdFatSdioEX::card()']]], - ['cardbegin',['cardBegin',['../class_sd_fat.html#ae380e4572776db851b2f80a3ed143fca',1,'SdFat::cardBegin()'],['../class_sd_fat_sdio.html#ac49062cc8fb2a42564d0ff05b4c0be8b',1,'SdFatSdio::cardBegin()'],['../class_sd_fat_sdio_e_x.html#a18f3cf979d7e72105c4642b0ebb56324',1,'SdFatSdioEX::cardBegin()']]], - ['carderrorcode',['cardErrorCode',['../class_sd_file_system.html#aedfd5a0830c955bc5514e52f2f2dd066',1,'SdFileSystem']]], - ['carderrordata',['cardErrorData',['../class_sd_file_system.html#a0602ab3c04ea33293649f0a15fc81e05',1,'SdFileSystem']]], - ['cardsize',['cardSize',['../class_sdio_card.html#a3d8f9a92f7faec77094ec65e6c41dd45',1,'SdioCard::cardSize()'],['../class_sd_spi_card.html#afca8bd6b7e465bf9c475ba375c4deec8',1,'SdSpiCard::cardSize()']]], - ['chdir',['chdir',['../class_fat_file_system.html#a5667915e63187a43a71dfada63800865',1,'FatFileSystem::chdir(bool set_cwd=false)'],['../class_fat_file_system.html#a44af1b98e8d986d12107b654453acbc4',1,'FatFileSystem::chdir(const char *path, bool set_cwd=false)']]], - ['check_5fflash_5fprogramming',['CHECK_FLASH_PROGRAMMING',['../_sd_fat_config_8h.html#a63747c9ac4e3d78579690cf9eb38c4df',1,'SdFatConfig.h']]], - ['chksum',['chksum',['../structlong_directory_entry.html#a60c35531bc0e12f2d764d290244f8cc9',1,'longDirectoryEntry']]], - ['chvol',['chvol',['../class_fat_file_system.html#af24917d6e00c8766dab168eb834047ec',1,'FatFileSystem']]], - ['clear',['clear',['../classfstream.html#a682b278a6a299ffb21b8737717ff12bf',1,'fstream::clear()'],['../classofstream.html#a09edfdb3dbda20aff105e751001313f0',1,'ofstream::clear()'],['../classios.html#aa49ed6670d1743e7a373b2d915ec739a',1,'ios::clear()']]], - ['clearerr',['clearerr',['../class_stdio_stream.html#aa737e5680fc2808a03a603ea8559d82b',1,'StdioStream']]], - ['clearerror',['clearError',['../class_fat_file.html#a052e2c15a39b322a5307b693b8835b22',1,'FatFile']]], - ['clearwriteerror',['clearWriteError',['../class_fat_file.html#aeca2a2eff91e6aa55fe1b0e3860c9a05',1,'FatFile']]], - ['close',['close',['../class_fat_file.html#afd16af325e0642e4bff6430b7d8bb18b',1,'FatFile::close()'],['../classfstream.html#ac5720ee620c09d63dd186823e688ea9a',1,'fstream::close()'],['../classifstream.html#ac5892f472afdef6160f5fe2401b16dce',1,'ifstream::close()'],['../classofstream.html#a240f3752c7ff7a78d10c143d2083715f',1,'ofstream::close()']]], - ['cluster',['cluster',['../struct_fat_pos__t.html#a7b50657b0debaf0e6231af2c74a655fe',1,'FatPos_t']]], - ['clustercount',['clusterCount',['../class_fat_volume.html#ae724879a554174e31a737f73da418009',1,'FatVolume']]], - ['clustersizeshift',['clusterSizeShift',['../class_fat_volume.html#ab36468240ef6846578ad7f58d1bc41ac',1,'FatVolume']]], - ['codearea',['codeArea',['../structmaster_boot_record.html#a26ca1fb4ebbff2cc1a54153b1dfcd688',1,'masterBootRecord']]], - ['contiguousrange',['contiguousRange',['../class_fat_file.html#aa367708bcc8bc0e0c45c0c2a812c65da',1,'FatFile']]], - ['createcontiguous',['createContiguous',['../class_fat_file.html#a0afc2a1cffa238d1cb2049bfa2d8d199',1,'FatFile::createContiguous(FatFile *dirFile, const char *path, uint32_t size)'],['../class_fat_file.html#a0853fbd44aee2798d14d8e3aed78f8bf',1,'FatFile::createContiguous(const char *path, uint32_t size)']]], - ['creationdate',['creationDate',['../structdirectory_entry.html#a7b43372794655fe6604d3c17c02302fe',1,'directoryEntry']]], - ['creationtime',['creationTime',['../structdirectory_entry.html#a622bfa70c2cd9006108d7473d737a953',1,'directoryEntry']]], - ['creationtimetenths',['creationTimeTenths',['../structdirectory_entry.html#aa5e1ce5b411b88f005b28a3e7c7c5af6',1,'directoryEntry']]], - ['cur',['cur',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea53910041525b9e2f33bfc3bb4482134c',1,'ios_base']]], - ['curcluster',['curCluster',['../class_fat_file.html#a526f3dd56ce205690e45ffc86ef6f891',1,'FatFile']]], - ['curposition',['curPosition',['../class_fat_file.html#a97e0620949f97e9b9c91ed1094d728aa',1,'FatFile']]], - ['curtimems',['curTimeMS',['../_sys_call_8h.html#a7a1c5babdcf00c78d4d2e6a012bd9e68',1,'SysCall.h']]], - ['cwd',['cwd',['../class_fat_file.html#a3b68e603ad8e47bad915f0547e580adb',1,'FatFile']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_4.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_4.html deleted file mode 100644 index 6452295d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_4.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_4.js deleted file mode 100644 index 790bcc31..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_4.js +++ /dev/null @@ -1,42 +0,0 @@ -var searchData= -[ - ['data',['data',['../unioncache__t.html#ae675b7a3a87d809070de111d1d1f1d81',1,'cache_t']]], - ['datastartblock',['dataStartBlock',['../class_fat_volume.html#a55906112e0d151db3b144d29630f5066',1,'FatVolume']]], - ['datetimecallback',['dateTimeCallback',['../class_fat_file.html#a29a623f50df057e8b49045ba6611ec2b',1,'FatFile']]], - ['datetimecallbackcancel',['dateTimeCallbackCancel',['../class_fat_file.html#a5df02f1d037e6091375488af25244ebc',1,'FatFile']]], - ['dbgfat',['dbgFat',['../class_fat_volume.html#a25c6311b70fa274b3be94ff25fdebba7',1,'FatVolume']]], - ['dec',['dec',['../classios__base.html#a2826aed005e7c1f6858060cddae7971a',1,'ios_base::dec()'],['../ios_8h.html#ada38ab90e22f0ebb638cb864a35c562d',1,'dec(): ios.h']]], - ['destructor_5fcloses_5ffile',['DESTRUCTOR_CLOSES_FILE',['../_sd_fat_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): FatLibConfig.h']]], - ['dir',['dir',['../unioncache__t.html#a7396fdbdb7c52bd1d72c5329ff32acd1',1,'cache_t']]], - ['dir_5fatt_5farchive',['DIR_ATT_ARCHIVE',['../_fat_structs_8h.html#a0d0745a2bc191d12f6e3294a890c4b13',1,'FatStructs.h']]], - ['dir_5fatt_5fdefined_5fbits',['DIR_ATT_DEFINED_BITS',['../_fat_structs_8h.html#ad0c6ed5cf186a40f98cc3929b52cf8ee',1,'FatStructs.h']]], - ['dir_5fatt_5fdirectory',['DIR_ATT_DIRECTORY',['../_fat_structs_8h.html#a5fe039a9af7304fc97a0e903acd217f7',1,'FatStructs.h']]], - ['dir_5fatt_5ffile_5ftype_5fmask',['DIR_ATT_FILE_TYPE_MASK',['../_fat_structs_8h.html#af006ada1b85a9761dd9538273c1ee97f',1,'FatStructs.h']]], - ['dir_5fatt_5fhidden',['DIR_ATT_HIDDEN',['../_fat_structs_8h.html#aed394afe98ff4b7876a5815319b6ef94',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname',['DIR_ATT_LONG_NAME',['../_fat_structs_8h.html#a0039e1903007eb7383a9fe4b80a3569e',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname_5fmask',['DIR_ATT_LONG_NAME_MASK',['../_fat_structs_8h.html#a74ddbd24c315a682449a51a2a35adf39',1,'FatStructs.h']]], - ['dir_5fatt_5fread_5fonly',['DIR_ATT_READ_ONLY',['../_fat_structs_8h.html#ae5efa2fd21e8a563a3a45f8a52538cde',1,'FatStructs.h']]], - ['dir_5fatt_5fsystem',['DIR_ATT_SYSTEM',['../_fat_structs_8h.html#a31c7e5c119c9ebc1237746c985cf385d',1,'FatStructs.h']]], - ['dir_5fatt_5fvolume_5fid',['DIR_ATT_VOLUME_ID',['../_fat_structs_8h.html#a410501be78b30a75224dd4e81a4a1105',1,'FatStructs.h']]], - ['dir_5fis_5ffile',['DIR_IS_FILE',['../_fat_structs_8h.html#a5ce8bde4d6ff3950df951e84c7bb8d58',1,'FatStructs.h']]], - ['dir_5fis_5ffile_5for_5fsubdir',['DIR_IS_FILE_OR_SUBDIR',['../_fat_structs_8h.html#a9d99b04fa090825a9b9c2468fa81e627',1,'FatStructs.h']]], - ['dir_5fis_5fhidden',['DIR_IS_HIDDEN',['../_fat_structs_8h.html#a5137c8165addb9d32c6094d03a9d029d',1,'FatStructs.h']]], - ['dir_5fis_5flong_5fname',['DIR_IS_LONG_NAME',['../_fat_structs_8h.html#a504c3d996b412f386becc27a8c49cd2c',1,'FatStructs.h']]], - ['dir_5fis_5fsubdir',['DIR_IS_SUBDIR',['../_fat_structs_8h.html#ace8ed88fcb41afc4d2fe0eabf96e71c6',1,'FatStructs.h']]], - ['dir_5fis_5fsystem',['DIR_IS_SYSTEM',['../_fat_structs_8h.html#a46cad0d590c5e290c52ccf660b316dd9',1,'FatStructs.h']]], - ['dir_5fname_5f0xe5',['DIR_NAME_0XE5',['../_fat_structs_8h.html#a1696d3db9949d6e22d1c2c595fd14669',1,'FatStructs.h']]], - ['dir_5fname_5fdeleted',['DIR_NAME_DELETED',['../_fat_structs_8h.html#a8c08d4823047505f3231e86c5033d08c',1,'FatStructs.h']]], - ['dir_5fname_5ffree',['DIR_NAME_FREE',['../_fat_structs_8h.html#a0f1f0001102ae59b9e7c9e3b04cc06d8',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fbase',['DIR_NT_LC_BASE',['../_fat_structs_8h.html#a39f9b8960dba007b537e9b71c25384fe',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fext',['DIR_NT_LC_EXT',['../_fat_structs_8h.html#a8766a8bbab6ad3da38c1b308545d7572',1,'FatStructs.h']]], - ['dir_5ft',['dir_t',['../_fat_structs_8h.html#a803db59d4e16a0c54a647afc6a7954e3',1,'FatStructs.h']]], - ['directoryentry',['directoryEntry',['../structdirectory_entry.html',1,'']]], - ['direntry',['dirEntry',['../class_fat_file.html#a6858d18c807411a071fd6d1b39d50087',1,'FatFile']]], - ['dirindex',['dirIndex',['../class_fat_file.html#ae5ec24d4a94d3780384d3f2b731c7eb9',1,'FatFile']]], - ['dirname',['dirName',['../class_fat_file.html#a648461081fe07578780f4cd3f246cb66',1,'FatFile']]], - ['dirsize',['dirSize',['../class_fat_file.html#ae2ed15f05c9ccbce355e7a8d3ce8382d',1,'FatFile']]], - ['dirty',['dirty',['../class_fat_cache.html#ab4d3b0c16bb6a116c7d01afff2dcb307',1,'FatCache']]], - ['disksignature',['diskSignature',['../structmaster_boot_record.html#a77151c641444c0653ff71a253f0423ef',1,'masterBootRecord']]], - ['dmpfile',['dmpFile',['../class_fat_file.html#a4f01d27954ae49aeb6888ac7302f55d9',1,'FatFile']]], - ['drivenumber',['driveNumber',['../structfat__boot.html#aebd280b93563b75b9612d3db844b0d16',1,'fat_boot::driveNumber()'],['../structfat32__boot.html#aca415c1a6eb1c242d460a6d0ffa9ebec',1,'fat32_boot::driveNumber()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_5.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_5.html deleted file mode 100644 index e59e1d53..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_5.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_5.js deleted file mode 100644 index b4375180..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_5.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['enable_5farduino_5ffeatures',['ENABLE_ARDUINO_FEATURES',['../_fat_lib_config_8h.html#a9a8c1ea8596f35f7f33a24b642567206',1,'FatLibConfig.h']]], - ['enable_5fextended_5ftransfer_5fclass',['ENABLE_EXTENDED_TRANSFER_CLASS',['../_sd_fat_config_8h.html#aad4f0ecbc65cdc3a7be544225b44f86a',1,'SdFatConfig.h']]], - ['enable_5fsdio_5fclass',['ENABLE_SDIO_CLASS',['../_sd_fat_config_8h.html#a1d106f3a0ba8577abdcc9ce3961ef90b',1,'SdFatConfig.h']]], - ['enable_5fsoftware_5fspi_5fclass',['ENABLE_SOFTWARE_SPI_CLASS',['../_sd_fat_config_8h.html#acc3d779d87b785bb7236b9b3acf7e619',1,'SdFatConfig.h']]], - ['end',['end',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191eaae47c0ae984e90b38907783a1a804811',1,'ios_base']]], - ['endcylinderhigh',['endCylinderHigh',['../structpartition_table.html#a32fea225b8ffd925ad919ffc56e9abda',1,'partitionTable']]], - ['endcylinderlow',['endCylinderLow',['../structpartition_table.html#ad7829e34be70084abe145227b0d18274',1,'partitionTable']]], - ['endhead',['endHead',['../structpartition_table.html#a4a3945bfd3a29f474984cb9f180dbd51',1,'partitionTable']]], - ['endl',['endl',['../iostream_8h.html#ab9868f8e151efc1705646437dbb59bb2',1,'iostream.h']]], - ['endl_5fcalls_5fflush',['ENDL_CALLS_FLUSH',['../_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): FatLibConfig.h']]], - ['endsector',['endSector',['../structpartition_table.html#a27cdc4320c418ed0d833ab163ed77ad7',1,'partitionTable']]], - ['eof',['eof',['../classios.html#a7aa5ea2f670d64eb3dcb3b62eddd576c',1,'ios::eof()'],['../_stdio_stream_8h.html#a59adc4c82490d23754cd39c2fb99b0da',1,'EOF(): StdioStream.h']]], - ['eofbit',['eofbit',['../classios__base.html#af75072b7ef2a931c77a2cb8e7ccda460',1,'ios_base']]], - ['erase',['erase',['../class_sdio_card.html#a1ce82b035257790ed8e4a9be3d966b80',1,'SdioCard::erase()'],['../class_sdio_card_e_x.html#a58362f3ddf4bc5ce632cce6768b2d780',1,'SdioCardEX::erase()'],['../class_sd_spi_card.html#a1caa13d19df6596b2c0dd62365c75362',1,'SdSpiCard::erase()']]], - ['erasesingleblockenable',['eraseSingleBlockEnable',['../class_sd_spi_card.html#aed4591884254c9f58daa8738d7c1ccdd',1,'SdSpiCard']]], - ['error',['error',['../class_sd_spi_card.html#aa12ad53111abcb187d3c6119a3a77592',1,'SdSpiCard']]], - ['errorcode',['errorCode',['../class_sdio_card.html#a4ff272009a24fc4078ac87c2d87ccd16',1,'SdioCard::errorCode()'],['../class_sd_spi_card.html#a4c736fb8d6d9d734d5e262875c74f054',1,'SdSpiCard::errorCode()']]], - ['errordata',['errorData',['../class_sdio_card.html#a8251b9aa0d623487e80cf908fc1625b5',1,'SdioCard::errorData()'],['../class_sd_spi_card.html#a10bb2f65b1ca85ad14de19e61a283262',1,'SdSpiCard::errorData()']]], - ['errorhalt',['errorHalt',['../class_sd_file_system.html#a855267374306bfee2df67642c99d4d18',1,'SdFileSystem::errorHalt()'],['../class_sd_file_system.html#ae1f79a2974ebe134e70f898c32d97e98',1,'SdFileSystem::errorHalt(Print *pr)'],['../class_sd_file_system.html#a32c20dfa6a8cb8af95f25847b19bdbca',1,'SdFileSystem::errorHalt(char const *msg)'],['../class_sd_file_system.html#a27fb329d6aee79a63c20386218ce7e9e',1,'SdFileSystem::errorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#af856494745a9842d9728dfeabf19c51e',1,'SdFileSystem::errorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a746c80d048c30baf0b281e16932670a2',1,'SdFileSystem::errorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['errorline',['errorLine',['../class_sdio_card.html#aafa9feb1b5a90f3cf96456b6b286bfdf',1,'SdioCard']]], - ['errorprint',['errorPrint',['../class_sd_file_system.html#ab0b78154d6874c29279ba81f36ccb09c',1,'SdFileSystem::errorPrint()'],['../class_sd_file_system.html#a03736274debea71fef5e2ff34d7ec3dc',1,'SdFileSystem::errorPrint(Print *pr)'],['../class_sd_file_system.html#a2e2436b7b2666737cbaf4b22218bc69f',1,'SdFileSystem::errorPrint(const char *msg)'],['../class_sd_file_system.html#a0eb6b92a0700ba932f6127962981d153',1,'SdFileSystem::errorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#a1ccb1f937f42e9c1331c942bc357f6da',1,'SdFileSystem::errorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a43344a079d9af92ea4b550914d0512f6',1,'SdFileSystem::errorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['exists',['exists',['../class_fat_file.html#a50242f98dea0d4488ce4039a279f2a57',1,'FatFile::exists()'],['../class_fat_file_system.html#aee58c6352652f216577196e32a594b67',1,'FatFileSystem::exists()']]], - ['extended_5fboot_5fsig',['EXTENDED_BOOT_SIG',['../_fat_structs_8h.html#aefadfae26e4cc8d57c1ff727a9d1cd20',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_6.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_6.html deleted file mode 100644 index f75a754e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_6.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_6.js deleted file mode 100644 index 804b1804..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_6.js +++ /dev/null @@ -1,98 +0,0 @@ -var searchData= -[ - ['f',['F',['../_sys_call_8h.html#a0e3009529aac180ed5f48296d6670d6b',1,'SysCall.h']]], - ['fail',['fail',['../classios.html#a15269e67d05d4fe83a6cf344d542f8ae',1,'ios']]], - ['failbit',['failbit',['../classios__base.html#a36157154001bcce17827db6786e35efd',1,'ios_base']]], - ['fat12_5fsupport',['FAT12_SUPPORT',['../_sd_fat_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): FatLibConfig.h']]], - ['fat12eoc',['FAT12EOC',['../_fat_structs_8h.html#af314c45d1d37d09c9e44847326232466',1,'FatStructs.h']]], - ['fat12eoc_5fmin',['FAT12EOC_MIN',['../_fat_structs_8h.html#a48951911b522ebf72bf5561c3402aa15',1,'FatStructs.h']]], - ['fat16',['fat16',['../unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887',1,'cache_t']]], - ['fat16eoc',['FAT16EOC',['../_fat_structs_8h.html#afcd95ebc621a46c82b9997c8b9208550',1,'FatStructs.h']]], - ['fat16eoc_5fmin',['FAT16EOC_MIN',['../_fat_structs_8h.html#a2f549b850b74666ba7d922bcb373896e',1,'FatStructs.h']]], - ['fat32',['fat32',['../unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83',1,'cache_t']]], - ['fat32_5fboot',['fat32_boot',['../structfat32__boot.html',1,'']]], - ['fat32_5fboot_5ft',['fat32_boot_t',['../_fat_structs_8h.html#a38fa081d004647a828095d31b07ec491',1,'FatStructs.h']]], - ['fat32_5ffsinfo',['fat32_fsinfo',['../structfat32__fsinfo.html',1,'']]], - ['fat32_5ffsinfo_5ft',['fat32_fsinfo_t',['../_fat_structs_8h.html#a6030ed0fce3a819326a2548407fc8556',1,'FatStructs.h']]], - ['fat32backbootblock',['fat32BackBootBlock',['../structbios_parm_block.html#a7a4e93790b6e66f090c1551020b099bd',1,'biosParmBlock::fat32BackBootBlock()'],['../structfat32__boot.html#ac93acdae62dab5cd1f7a35187992dbf2',1,'fat32_boot::fat32BackBootBlock()']]], - ['fat32eoc',['FAT32EOC',['../_fat_structs_8h.html#a67a9dbf970f43fadd41a6a9fede60c47',1,'FatStructs.h']]], - ['fat32eoc_5fmin',['FAT32EOC_MIN',['../_fat_structs_8h.html#a8f97a312e990c3f4faf7e98c3256aae5',1,'FatStructs.h']]], - ['fat32flags',['fat32Flags',['../structbios_parm_block.html#a626ac3dc473d764688b8171916eecf44',1,'biosParmBlock::fat32Flags()'],['../structfat32__boot.html#aaa31a140202021bf33aed72765531b3f',1,'fat32_boot::fat32Flags()']]], - ['fat32fsinfo',['fat32FSInfo',['../structbios_parm_block.html#a25ea392d8284e6c1d007cb8fcad4b86c',1,'biosParmBlock::fat32FSInfo()'],['../structfat32__boot.html#a03ff6d1197c08688f20c7aad40206bc4',1,'fat32_boot::fat32FSInfo()']]], - ['fat32mask',['FAT32MASK',['../_fat_structs_8h.html#a7491c79fff0bda3b026ffa098a28d6df',1,'FatStructs.h']]], - ['fat32reserved',['fat32Reserved',['../structbios_parm_block.html#a351f87fe3446b1a71963a30bbdc23218',1,'biosParmBlock::fat32Reserved()'],['../structfat32__boot.html#a3343ad07c664fb7564d68c5194ea7da9',1,'fat32_boot::fat32Reserved()']]], - ['fat32rootcluster',['fat32RootCluster',['../structbios_parm_block.html#a77ca01bd99f746e05dd872cbd2979937',1,'biosParmBlock::fat32RootCluster()'],['../structfat32__boot.html#aa216677f22a95dd86ed2e61604883a13',1,'fat32_boot::fat32RootCluster()']]], - ['fat32version',['fat32Version',['../structbios_parm_block.html#abad4f6f0c14dad9f5b7d43de94e685e8',1,'biosParmBlock::fat32Version()'],['../structfat32__boot.html#a29c37e1163772493efb524c5ca0e1aa8',1,'fat32_boot::fat32Version()']]], - ['fat_5fboot',['fat_boot',['../structfat__boot.html',1,'']]], - ['fat_5fboot_5ft',['fat_boot_t',['../_fat_structs_8h.html#aedac4595ee08198da26c14b9891a07d5',1,'FatStructs.h']]], - ['fat_5fdate',['FAT_DATE',['../_fat_structs_8h.html#a44899ad42ddf32ff1c1a73b5251b304a',1,'FatStructs.h']]], - ['fat_5fday',['FAT_DAY',['../_fat_structs_8h.html#a4cc8bc105529bf9e9c11e8ef099d68b0',1,'FatStructs.h']]], - ['fat_5fdefault_5fdate',['FAT_DEFAULT_DATE',['../_fat_structs_8h.html#a42eeb0322bced1f7b527c707f8bd54a4',1,'FatStructs.h']]], - ['fat_5fdefault_5ftime',['FAT_DEFAULT_TIME',['../_fat_structs_8h.html#a23c2510407ec3be457e0e4807644deb2',1,'FatStructs.h']]], - ['fat_5fhour',['FAT_HOUR',['../_fat_structs_8h.html#ae7c733d49a5570054f6db3bd53332ba1',1,'FatStructs.h']]], - ['fat_5fminute',['FAT_MINUTE',['../_fat_structs_8h.html#a1b09676a41ae6c9e19664bdcd5b1d34e',1,'FatStructs.h']]], - ['fat_5fmonth',['FAT_MONTH',['../_fat_structs_8h.html#a429bc2d96f5bc26dc3bd6cc2bd535b84',1,'FatStructs.h']]], - ['fat_5fsecond',['FAT_SECOND',['../_fat_structs_8h.html#a4d553e2088d42e01d6c08ee84e611b00',1,'FatStructs.h']]], - ['fat_5ftime',['FAT_TIME',['../_fat_structs_8h.html#a375720927be5a39475d48b2d75dae29a',1,'FatStructs.h']]], - ['fat_5fyear',['FAT_YEAR',['../_fat_structs_8h.html#a279a75f907dd2603543c7bdad00ff603',1,'FatStructs.h']]], - ['fatcache',['FatCache',['../class_fat_cache.html',1,'FatCache'],['../class_fat_volume.html#a1e97a7aed860b898c403cb29455b3fe7',1,'FatVolume::FatCache()']]], - ['fatcount',['fatCount',['../structbios_parm_block.html#a7c03f147c3fb18f0df03d346050af13b',1,'biosParmBlock::fatCount()'],['../structfat__boot.html#a04d3b6a45acf28a80ff909dc1b33da2f',1,'fat_boot::fatCount()'],['../structfat32__boot.html#a7882fa8744bd171bfa1512bd442574bc',1,'fat32_boot::fatCount()'],['../class_fat_volume.html#acdedc6a200b01e401c9cd9b511eae6ec',1,'FatVolume::fatCount()']]], - ['fatfile',['FatFile',['../class_fat_file.html',1,'FatFile'],['../class_fat_volume.html#a18fb15a715ea85037ab802286853103e',1,'FatVolume::FatFile()'],['../class_fat_file.html#a7b591c9b92165fa8e4eae8c30c30e533',1,'FatFile::FatFile()'],['../class_fat_file.html#a38f9a296138648d6135cbbbf41ef6b92',1,'FatFile::FatFile(const char *path, oflag_t oflag)']]], - ['fatfile_2eh',['FatFile.h',['../_fat_file_8h.html',1,'']]], - ['fatfilesystem',['FatFileSystem',['../class_fat_file_system.html',1,'FatFileSystem'],['../class_fat_volume.html#ac095954ff68b78a07c0cf5fabbb2db6f',1,'FatVolume::FatFileSystem()']]], - ['fatfilesystem_2eh',['FatFileSystem.h',['../_fat_file_system_8h.html',1,'']]], - ['fatlibconfig_2eh',['FatLibConfig.h',['../_fat_lib_config_8h.html',1,'']]], - ['fatpos_5ft',['FatPos_t',['../struct_fat_pos__t.html',1,'']]], - ['fatstartblock',['fatStartBlock',['../class_fat_volume.html#a260bc030ab188a481dd34d6062f7b9d2',1,'FatVolume']]], - ['fatstreambase',['FatStreamBase',['../class_fat_stream_base.html',1,'']]], - ['fatstructs_2eh',['FatStructs.h',['../_fat_structs_8h.html',1,'']]], - ['fattype',['fatType',['../class_fat_volume.html#a0d736f0e8f03476b896307fbe5427376',1,'FatVolume']]], - ['fatvolume',['FatVolume',['../class_fat_volume.html',1,'FatVolume'],['../class_fat_volume.html#a026de2bb58026e4edea130db2949b84c',1,'FatVolume::FatVolume()']]], - ['fatvolume_2eh',['FatVolume.h',['../_fat_volume_8h.html',1,'']]], - ['fbs',['fbs',['../unioncache__t.html#ad1a4f1c0e8b8ca4d530427dbc920c764',1,'cache_t']]], - ['fbs32',['fbs32',['../unioncache__t.html#ad0613173ed4e83920eedfeb33102848a',1,'cache_t']]], - ['fclose',['fclose',['../class_stdio_stream.html#a4ddd4658d49182013d2fa2a181e96c5a',1,'StdioStream']]], - ['feof',['feof',['../class_stdio_stream.html#acb38c3211feedbf2206eb1d9a3a9d24f',1,'StdioStream']]], - ['ferror',['ferror',['../class_stdio_stream.html#afd64cec6440b923660b444f6d5f0586e',1,'StdioStream']]], - ['fflush',['fflush',['../class_stdio_stream.html#a7ce32ec7ea3f2fd8ea42b9633890f1c0',1,'StdioStream']]], - ['fgetc',['fgetc',['../class_stdio_stream.html#a160bd2828cb7e7370cffe1046eff8899',1,'StdioStream']]], - ['fgets',['fgets',['../class_fat_file.html#a31ef26b3ee37cf5f5f4c6024c0ddab69',1,'FatFile::fgets()'],['../class_stdio_stream.html#aa240c1021a1aad1cc57f63a483541dc7',1,'StdioStream::fgets()']]], - ['file',['File',['../class_file.html',1,'File'],['../class_file.html#af72feff53281f269ac592cba92397cd4',1,'File::File()']]], - ['file_5fread',['FILE_READ',['../_arduino_files_8h.html#ad52d51659a75e25d96fb04d22ff718cb',1,'ArduinoFiles.h']]], - ['file_5fwrite',['FILE_WRITE',['../_arduino_files_8h.html#ace34e503254fa9004599ddf122264c8f',1,'ArduinoFiles.h']]], - ['fileattr',['fileAttr',['../class_fat_file.html#a28ebaf42f0173adeb9faa1884337c8f8',1,'FatFile']]], - ['filesize',['fileSize',['../structdirectory_entry.html#ac2445d99b50f925f662952e0ccd26a02',1,'directoryEntry::fileSize()'],['../class_fat_file.html#a874940574b9c99e763526465adf8dc28',1,'FatFile::fileSize()']]], - ['filesystemtype',['fileSystemType',['../structfat__boot.html#aee529e32908406866f3ec3c17c4632fa',1,'fat_boot::fileSystemType()'],['../structfat32__boot.html#a13ee6c63e17d634b6826bfdfa94cbd78',1,'fat32_boot::fileSystemType()']]], - ['fill',['fill',['../classios__base.html#ade5bd46462e075999c3a5c2cff2015f1',1,'ios_base::fill()'],['../classios__base.html#aa5683f9bdf295311bd5a6d3cdc2fedd5',1,'ios_base::fill(char c)']]], - ['firstblock',['firstBlock',['../class_fat_file.html#ac87b753811e540c7b799da56fa89724b',1,'FatFile']]], - ['firstcluster',['firstCluster',['../class_fat_file.html#ad6233a5122080219b6d8148b1bec4b6a',1,'FatFile']]], - ['firstclusterhigh',['firstClusterHigh',['../structdirectory_entry.html#a3b492598b2b05e8425d2a500443613bd',1,'directoryEntry']]], - ['firstclusterlow',['firstClusterLow',['../structdirectory_entry.html#a74bd660417a9c3501eae353326c14bb9',1,'directoryEntry']]], - ['firstsector',['firstSector',['../structpartition_table.html#a02bbdff840c854dc96fa0b6da8589d86',1,'partitionTable']]], - ['flags',['flags',['../structfname__t.html#a39c69edff13165c6e03b308104e7286d',1,'fname_t::flags()'],['../classios__base.html#a2a73a30a8b157cc1cc92bb55b0a62e4a',1,'ios_base::flags() const'],['../classios__base.html#ae67e900dc12e4c7cbc0741ad1c70d6c2',1,'ios_base::flags(fmtflags fl)']]], - ['flush',['flush',['../class_minimum_serial.html#a872f0ff70f0e256352004f83d13fff28',1,'MinimumSerial::flush()'],['../class_print_file.html#a53c4cb94af030fdf83a9160ec9a96949',1,'PrintFile::flush()'],['../class_file.html#af87fa862de707575b8badd044a5af80e',1,'File::flush()'],['../classostream.html#af6be1f30d824f5a65d27d5b5d20b8c6c',1,'ostream::flush()'],['../iostream_8h.html#a2f6f5344fca38fd4fe7b6231fd992a0d',1,'flush(): iostream.h']]], - ['fmtflags',['fmtflags',['../classios__base.html#ac9a54e52cef4f01ac0afd8ae896a3413',1,'ios_base']]], - ['fname_5fflag_5flc_5fbase',['FNAME_FLAG_LC_BASE',['../_fat_file_8h.html#a79e43960e1b4eecf274f5faea9c3168c',1,'FatFile.h']]], - ['fname_5fflag_5flc_5fext',['FNAME_FLAG_LC_EXT',['../_fat_file_8h.html#a135b7572768b09661aa38afaceec7296',1,'FatFile.h']]], - ['fname_5fflag_5flost_5fchars',['FNAME_FLAG_LOST_CHARS',['../_fat_file_8h.html#acd45286b7dfc5ba68be18c8c3a9d298d',1,'FatFile.h']]], - ['fname_5fflag_5fmixed_5fcase',['FNAME_FLAG_MIXED_CASE',['../_fat_file_8h.html#a63994c21f3b723a55247f063a1b01c9c',1,'FatFile.h']]], - ['fname_5fflag_5fneed_5flfn',['FNAME_FLAG_NEED_LFN',['../_fat_file_8h.html#a1a041207a19d2fd9a1e2739343ccb29b',1,'FatFile.h']]], - ['fname_5ft',['fname_t',['../structfname__t.html',1,'']]], - ['fopen',['fopen',['../class_stdio_stream.html#a4ffc37225fb6deed98905aa71d1f9c4b',1,'StdioStream']]], - ['fputc',['fputc',['../class_stdio_stream.html#a9f23cfa6b112a5da6ae08340af23c57b',1,'StdioStream']]], - ['fputs',['fputs',['../class_stdio_stream.html#a6adea52f55ef7d97cdb54e9e11fc2daa',1,'StdioStream']]], - ['fread',['fread',['../class_stdio_stream.html#a2d363b02abcef82b25ff025d50375bce',1,'StdioStream']]], - ['freeclustercount',['freeClusterCount',['../class_fat_volume.html#a1683b063fc6202ab85470b9610f16f93',1,'FatVolume']]], - ['freecount',['freeCount',['../structfat32__fsinfo.html#a6c2d84388c0a38a74f7682fd602492c7',1,'fat32_fsinfo']]], - ['freestack',['FreeStack',['../_free_stack_8h.html#a2c0121d5649d35329a8d0a71e4ffb89b',1,'FreeStack.h']]], - ['freestack_2eh',['FreeStack.h',['../_free_stack_8h.html',1,'']]], - ['fsbegin',['fsBegin',['../class_sd_fat.html#add6a9a3ad07585f6e0e5c35e35cacb9a',1,'SdFat::fsBegin()'],['../class_sd_fat_sdio.html#aac0e8d86182a0e0566c4671c15f3df61',1,'SdFatSdio::fsBegin()'],['../class_sd_fat_sdio_e_x.html#ae7c3cc13d2ec18ab14b4ff88348cc7a0',1,'SdFatSdioEX::fsBegin()']]], - ['fseek',['fseek',['../class_stdio_stream.html#a71584fd5c5cda3c31ce6cdbcc56f104d',1,'StdioStream']]], - ['fsinfo',['fsinfo',['../unioncache__t.html#a46c7b14586a6248824a97101111cbae1',1,'cache_t']]], - ['fsinfo_5flead_5fsig',['FSINFO_LEAD_SIG',['../_fat_structs_8h.html#a7a7a74a7315ad523e3b0c9dbd44d9a32',1,'FatStructs.h']]], - ['fsinfo_5fstruct_5fsig',['FSINFO_STRUCT_SIG',['../_fat_structs_8h.html#a9bf6b77df7bec6c49d81562c54371e81',1,'FatStructs.h']]], - ['fstream',['fstream',['../classfstream.html',1,'fstream'],['../classfstream.html#aed23877c52f828cab8de7a23603b3b6c',1,'fstream::fstream()']]], - ['fstream_2eh',['fstream.h',['../fstream_8h.html',1,'']]], - ['ftell',['ftell',['../class_stdio_stream.html#a809639fc5fb4fa5b6789dc121659f386',1,'StdioStream']]], - ['fwrite',['fwrite',['../class_stdio_stream.html#ad79465afb52579cbc801f4585c3f9c25',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_7.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_7.html deleted file mode 100644 index 88acd946..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_7.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_7.js deleted file mode 100644 index 5ac197d3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_7.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['gcount',['gcount',['../classistream.html#ad0a3db5199ca44b191a9675f2dd3a098',1,'istream']]], - ['get',['get',['../classistream.html#a36573c9b7fc522e6c85a73221019fd11',1,'istream::get()'],['../classistream.html#a9c7313d6f21f1f7ac9b0e759e74b4db2',1,'istream::get(char &ch)'],['../classistream.html#a2c963fd04375e5faa1b7a4362986269a',1,'istream::get(char *str, streamsize n, char delim='\n')']]], - ['getc',['getc',['../class_stdio_stream.html#a28ba31e7b526607744bfa41844ffce31',1,'StdioStream']]], - ['geterror',['getError',['../class_fat_file.html#ad0dbbd083180f44c7a3ce7124d4ce19c',1,'FatFile']]], - ['getline',['getline',['../classistream.html#a7ea6a5edd6b44a6e1ed297fb278b5d52',1,'istream']]], - ['getname',['getName',['../class_fat_file.html#aafa565e286440aab612cdb430fc01da5',1,'FatFile']]], - ['getpos',['getpos',['../class_fat_file.html#aaa4f9886887947815a61eaf015996932',1,'FatFile']]], - ['getsfn',['getSFN',['../class_fat_file.html#aba30e92a66f8e0d2f815c85662772a58',1,'FatFile']]], - ['getwriteerror',['getWriteError',['../class_fat_file.html#a8062c0d3a118e8d77d0310418703d5f5',1,'FatFile']]], - ['good',['good',['../classios.html#a0192d754476f243d7f13dc16e851c7cc',1,'ios']]], - ['goodbit',['goodbit',['../classios__base.html#a07a00996a6e525b88bdfe7935d5ead05',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_8.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_8.html deleted file mode 100644 index b74d5fd8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_8.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_8.js deleted file mode 100644 index 035f01b9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['halt',['halt',['../class_sys_call.html#a9b1ef8900e97f572ca561760b4dd4191',1,'SysCall']]], - ['headcount',['headCount',['../structbios_parm_block.html#a2324ca82e2a7da4d91f458fa32a6e239',1,'biosParmBlock::headCount()'],['../structfat__boot.html#ae31da876cd9f48de5268a129218df2c2',1,'fat_boot::headCount()'],['../structfat32__boot.html#a1a5298db692526bc64243766d6b54181',1,'fat32_boot::headCount()']]], - ['hex',['hex',['../classios__base.html#a3608e51eb0a80ea94ddadd5b713a3750',1,'ios_base::hex()'],['../ios_8h.html#ace2036d970905192360d622140bfe336',1,'hex(): ios.h']]], - ['hidddensectors',['hidddenSectors',['../structbios_parm_block.html#a9413199be8525190d40589f60c22bcab',1,'biosParmBlock::hidddenSectors()'],['../structfat__boot.html#a18f1b4c245fe7bd09f5a9430c005e23a',1,'fat_boot::hidddenSectors()'],['../structfat32__boot.html#ab10224aa4bba42b262fcd3479e279e1f',1,'fat32_boot::hidddenSectors()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_9.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_9.html deleted file mode 100644 index 95e88dd2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_9.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_9.js deleted file mode 100644 index 6a271f30..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_9.js +++ /dev/null @@ -1,38 +0,0 @@ -var searchData= -[ - ['ibufstream',['ibufstream',['../classibufstream.html',1,'ibufstream'],['../classibufstream.html#afe28f27d24a62a21428b60fe8834dd05',1,'ibufstream::ibufstream()'],['../classibufstream.html#a819561105ef7dc3828e0cfedfed708d8',1,'ibufstream::ibufstream(const char *str)']]], - ['ifstream',['ifstream',['../classifstream.html',1,'ifstream'],['../classifstream.html#a11f4bfaa5c37cfcf8878c367fd861a88',1,'ifstream::ifstream()']]], - ['ignore',['ignore',['../classistream.html#a12597b03d86b66047a5581bbd26eb032',1,'istream']]], - ['implement_5fspi_5fport_5fselection',['IMPLEMENT_SPI_PORT_SELECTION',['../_sd_fat_config_8h.html#aa13678c06fd801cb8f00b497a517d91e',1,'SdFatConfig.h']]], - ['in',['in',['../classios__base.html#ae5432e3c269064480652c4602f5f74ad',1,'ios_base']]], - ['include_5fsdios',['INCLUDE_SDIOS',['../_sd_fat_config_8h.html#a7cc6c9647297d65f8e823de70740630b',1,'SdFatConfig.h']]], - ['init',['init',['../classibufstream.html#a1d7bae17d9d2c79218085251946f322a',1,'ibufstream::init()'],['../classobufstream.html#a8f75dbadab2fed7770d01a2cc2628258',1,'obufstream::init()'],['../class_fat_cache.html#ae1d8a2da1493b5ffca0520184daaddf1',1,'FatCache::init()'],['../class_fat_volume.html#acab819fa25a91dad1cc698a7e1e0eb32',1,'FatVolume::init()'],['../class_fat_volume.html#a034d997a1e7a0b2b664a4357bcccd256',1,'FatVolume::init(uint8_t part)']]], - ['initerrorhalt',['initErrorHalt',['../class_sd_file_system.html#a8e1f26486bb878a24fa9868e59dbbbc2',1,'SdFileSystem::initErrorHalt()'],['../class_sd_file_system.html#a24bd0f699cf0fe11fd2148b15c49251a',1,'SdFileSystem::initErrorHalt(Print *pr)'],['../class_sd_file_system.html#a893833a880e2a83757480ba4c1351041',1,'SdFileSystem::initErrorHalt(char const *msg)'],['../class_sd_file_system.html#a3077b1a53d789d0401b707963cb28f46',1,'SdFileSystem::initErrorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#a2a1e4cc8056ba23b55dfa2c6486b8798',1,'SdFileSystem::initErrorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#ab03d98012dea18733c3252f27832de69',1,'SdFileSystem::initErrorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['initerrorprint',['initErrorPrint',['../class_sd_file_system.html#ae31c9cbd7e1c03129d6c99b25f73cd50',1,'SdFileSystem::initErrorPrint()'],['../class_sd_file_system.html#a066707dce0667213b5f083d59f67448d',1,'SdFileSystem::initErrorPrint(Print *pr)'],['../class_sd_file_system.html#a538796f79fd9db9c5bbeefd9defe639a',1,'SdFileSystem::initErrorPrint(char const *msg)'],['../class_sd_file_system.html#ad9855d33ebd465715b706d0926291b13',1,'SdFileSystem::initErrorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#ad6ffec5a7d82be46d46b8a4f82d0803b',1,'SdFileSystem::initErrorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a8a2018b6366145a9843d3d29a47d6560',1,'SdFileSystem::initErrorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['internal',['internal',['../classios__base.html#afc720b7f6f461ec8e9cf5505059e5d7c',1,'ios_base::internal()'],['../ios_8h.html#a8dd76c1ce8fced364a98428ca1eea7a6',1,'internal(): ios.h']]], - ['invalidate',['invalidate',['../class_fat_cache.html#a70071a128d647b49b523dbb2f5f944a5',1,'FatCache']]], - ['ios',['ios',['../classios.html',1,'ios'],['../classios.html#adc5dbd7b69da79493ebc84aa1e681aaa',1,'ios::ios()']]], - ['ios_2eh',['ios.h',['../ios_8h.html',1,'']]], - ['ios_5fbase',['ios_base',['../classios__base.html',1,'']]], - ['iostate',['iostate',['../classios__base.html#aef19291eeae0f072ac42c6ba1fe3033c',1,'ios_base']]], - ['iostream',['iostream',['../classiostream.html',1,'']]], - ['iostream_2eh',['iostream.h',['../iostream_8h.html',1,'']]], - ['is_5fopen',['is_open',['../classfstream.html#ae4a71c6f3da2f168ec222739d796fc8b',1,'fstream::is_open()'],['../classifstream.html#aaa16c6422ea371995d02159f2e6707b2',1,'ifstream::is_open()'],['../classofstream.html#a9c97eb2eb6e35ae87cf7f7453a67e70a',1,'ofstream::is_open()']]], - ['isbusy',['isBusy',['../class_sdio_card.html#a560bdfc96932d073c2b0610600560f78',1,'SdioCard::isBusy()'],['../class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328',1,'SdSpiCard::isBusy()']]], - ['isdir',['isDir',['../class_fat_file.html#a933360b20b496421b2bd9ee7a95563a6',1,'FatFile']]], - ['isdirectory',['isDirectory',['../class_file.html#a6ba5bdb943363cda56649238ccb18c27',1,'File']]], - ['isdirseparator',['isDirSeparator',['../_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'FatFile.h']]], - ['isdirty',['isDirty',['../class_fat_cache.html#ae50287d95bd78558db1e4aa97d7b2c06',1,'FatCache']]], - ['isfile',['isFile',['../class_fat_file.html#acc5a87da1a5c8cb9758bfeaa7ae47b57',1,'FatFile']]], - ['ishidden',['isHidden',['../class_fat_file.html#ae216b4a2bc44a9cfb88478fa051a1fd8',1,'FatFile']]], - ['islfn',['isLFN',['../class_fat_file.html#af8f456ab790e818bfdd225cf6ffd40f3',1,'FatFile']]], - ['isopen',['isOpen',['../class_fat_file.html#a8b8a2850c086d3ce79bee64a23fbf7a6',1,'FatFile']]], - ['isreadonly',['isReadOnly',['../class_fat_file.html#abaf639ec8f86f34aeb7e6b3615526f0b',1,'FatFile']]], - ['isroot',['isRoot',['../class_fat_file.html#a03421a0c28649332f55e6ca06d3aeedb',1,'FatFile']]], - ['isroot32',['isRoot32',['../class_fat_file.html#a8fda8004720ec4cc55710869dbb52e35',1,'FatFile']]], - ['isrootfixed',['isRootFixed',['../class_fat_file.html#a0cc65089f7ce6c1ff92edbf0bff59dee',1,'FatFile']]], - ['issubdir',['isSubDir',['../class_fat_file.html#abfd02c5d26f7d4f8739a8610116a6660',1,'FatFile']]], - ['issystem',['isSystem',['../class_fat_file.html#a48087bdeb6b94fc27e0f74c3d90af5a9',1,'FatFile']]], - ['istream',['istream',['../classistream.html',1,'']]], - ['istream_2eh',['istream.h',['../istream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_a.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_a.html deleted file mode 100644 index 3148a8e5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_a.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_a.js deleted file mode 100644 index e043c526..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jump',['jump',['../structfat__boot.html#a83f9f2d1d0130f25f34c90dfc82e3751',1,'fat_boot::jump()'],['../structfat32__boot.html#a2d93fc193a64ecffbd71ead207fe4810',1,'fat32_boot::jump()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_b.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_b.html deleted file mode 100644 index f2a3c8d0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_b.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_b.js deleted file mode 100644 index a37596e4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['khzsdclk',['kHzSdClk',['../class_sdio_card.html#a3532a1a4b8a43a51ed9b5853186203cb',1,'SdioCard']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_c.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_c.html deleted file mode 100644 index 63768107..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_c.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_c.js deleted file mode 100644 index aaf99c93..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_c.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['lastaccessdate',['lastAccessDate',['../structdirectory_entry.html#abca70dc5c5fcbe199fd78df010111331',1,'directoryEntry']]], - ['lastwritedate',['lastWriteDate',['../structdirectory_entry.html#a12b2e7cf87482a942a0b5d3df6c51468',1,'directoryEntry']]], - ['lastwritetime',['lastWriteTime',['../structdirectory_entry.html#a7bab435322d1928f66fbce53ee1f402d',1,'directoryEntry']]], - ['lbn',['lbn',['../class_fat_cache.html#a9f981b53e212f79937e5f6381b169374',1,'FatCache']]], - ['ldir_5fname1_5fdim',['LDIR_NAME1_DIM',['../_fat_structs_8h.html#af843af29c67dd30ca7c5684806bf02fc',1,'FatStructs.h']]], - ['ldir_5fname2_5fdim',['LDIR_NAME2_DIM',['../_fat_structs_8h.html#a99cae591c59e261f54617617e173e7e0',1,'FatStructs.h']]], - ['ldir_5fname3_5fdim',['LDIR_NAME3_DIM',['../_fat_structs_8h.html#a99fbd27fa9e5003a8d77ca7fc14d2090',1,'FatStructs.h']]], - ['ldir_5ford_5flast_5flong_5fentry',['LDIR_ORD_LAST_LONG_ENTRY',['../_fat_structs_8h.html#a8cfb60b9eaf04dcdc6e4f5a466af5540',1,'FatStructs.h']]], - ['ldir_5ft',['ldir_t',['../_fat_structs_8h.html#aa1b540ee1eedd1aa9b267d11cba0d9e2',1,'FatStructs.h']]], - ['leadsignature',['leadSignature',['../structfat32__fsinfo.html#aa8ee056cc1beb1355e15610c1beba5e3',1,'fat32_fsinfo']]], - ['left',['left',['../classios__base.html#ad364df9af2cfde1f40bd8e10c62bb215',1,'ios_base::left()'],['../ios_8h.html#a24a80a73f0a0d2d72d1cb74f49ff4759',1,'left(): ios.h']]], - ['legal83char',['legal83Char',['../class_fat_file.html#a94df8090f16e9666cdc53ca20f6aff90',1,'FatFile']]], - ['len',['len',['../structfname__t.html#a471184cc4c2671526d7d6fb80b2fe20c',1,'fname_t']]], - ['length',['length',['../classobufstream.html#ac650708e968b0c0545a3badeb809cf15',1,'obufstream']]], - ['lfn',['lfn',['../structfname__t.html#a76ffd7abd5b7d3acf90b329c905770fd',1,'fname_t']]], - ['longdirectoryentry',['longDirectoryEntry',['../structlong_directory_entry.html',1,'']]], - ['ls',['ls',['../class_fat_file.html#ad49f688a494b351ccbb0102dcfafb925',1,'FatFile::ls(uint8_t flags=0)'],['../class_fat_file.html#acabf31ff85e696fbf384c49428012fea',1,'FatFile::ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)'],['../class_fat_file_system.html#a2398fb37a7a9d5e0dc0ffde6a44a993d',1,'FatFileSystem::ls(uint8_t flags=0)'],['../class_fat_file_system.html#a122b61dbec5051304bcc81bc08b1b99d',1,'FatFileSystem::ls(const char *path, uint8_t flags=0)'],['../class_fat_file_system.html#ae12fb8bfad5c4a8e052dda70a5a0ed93',1,'FatFileSystem::ls(print_t *pr, uint8_t flags=0)'],['../class_fat_file_system.html#aa79695db8e910300507210b3067d39fd',1,'FatFileSystem::ls(print_t *pr, const char *path, uint8_t flags)']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_d.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_d.html deleted file mode 100644 index cc52c79f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_d.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_d.js deleted file mode 100644 index 30a4bf7a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_d.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['maintain_5ffree_5fcluster_5fcount',['MAINTAIN_FREE_CLUSTER_COUNT',['../_sd_fat_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): FatLibConfig.h']]], - ['masterbootrecord',['masterBootRecord',['../structmaster_boot_record.html',1,'']]], - ['mbr',['mbr',['../unioncache__t.html#a6ac10bfb1ebb1139c448456679663bb6',1,'cache_t']]], - ['mbr_5ft',['mbr_t',['../_fat_structs_8h.html#a7c429e5097f101c8c97663d6c4155bd9',1,'FatStructs.h']]], - ['mbrsig0',['mbrSig0',['../structmaster_boot_record.html#a42b0b413ecb21ac5314d4f6bca05308f',1,'masterBootRecord']]], - ['mbrsig1',['mbrSig1',['../structmaster_boot_record.html#aafbbcb4f6a2d1181c6458d4c9603df4f',1,'masterBootRecord']]], - ['mediatype',['mediaType',['../structbios_parm_block.html#a4237e7c3ba247516d546c149954e5042',1,'biosParmBlock::mediaType()'],['../structfat__boot.html#a63eaf7185663369af2527309634d3c90',1,'fat_boot::mediaType()'],['../structfat32__boot.html#a3b1ab5d2dc872c0d80cd4f34622de417',1,'fat32_boot::mediaType()']]], - ['minimumserial',['MinimumSerial',['../class_minimum_serial.html',1,'']]], - ['minimumserial_2eh',['MinimumSerial.h',['../_minimum_serial_8h.html',1,'']]], - ['mkdir',['mkdir',['../class_fat_file.html#abab5b9f72cc796388dd4eed01d13d90d',1,'FatFile::mkdir()'],['../class_fat_file_system.html#a231c62c98ba8ac3c2624dc5ad2053ebf',1,'FatFileSystem::mkdir()']]], - ['mustbezero',['mustBeZero',['../structlong_directory_entry.html#af3055930e869875e49b32ef0b49c3649',1,'longDirectoryEntry']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_e.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_e.html deleted file mode 100644 index 85b39bd4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_e.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_e.js deleted file mode 100644 index cc1d64b3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_e.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['name',['name',['../structdirectory_entry.html#a05dc993ea55a1a742de5970541a31ecb',1,'directoryEntry::name()'],['../class_file.html#a3d7c8f86311b9aad2bcc43e677d927ed',1,'File::name()']]], - ['name1',['name1',['../structlong_directory_entry.html#a629f1ca5ba2ccce6cac5295578b6e7b4',1,'longDirectoryEntry']]], - ['name2',['name2',['../structlong_directory_entry.html#ad763b5a3da4b8d326d9888493fbb819a',1,'longDirectoryEntry']]], - ['name3',['name3',['../structlong_directory_entry.html#a6f14c81b7d224dc4431217f92601257a',1,'longDirectoryEntry']]], - ['nextfree',['nextFree',['../structfat32__fsinfo.html#a539b3bb0a2ead9df417df9ac8b6b1606',1,'fat32_fsinfo']]], - ['noboolalpha',['noboolalpha',['../ios_8h.html#aa6a1ec04992fc8090ca775a39678be01',1,'ios.h']]], - ['noshowbase',['noshowbase',['../ios_8h.html#ab861ff5f863de0ae002b65390dde36b0',1,'ios.h']]], - ['noshowpoint',['noshowpoint',['../ios_8h.html#ad85399d1b75151cf9e2436f2a1ccfc13',1,'ios.h']]], - ['noshowpos',['noshowpos',['../ios_8h.html#a985805b22ffb4ce2f5298168662bd2d7',1,'ios.h']]], - ['noskipws',['noskipws',['../ios_8h.html#a773b847300db776fde08a0b562792131',1,'ios.h']]], - ['nouppercase',['nouppercase',['../ios_8h.html#a24b96fb317e056b34aa84c4bb965a79a',1,'ios.h']]], - ['null',['NULL',['../_stdio_stream_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_f.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_f.html deleted file mode 100644 index 89fa15a6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_f.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_f.js deleted file mode 100644 index 1fb63a9e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/all_f.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['obufstream',['obufstream',['../classobufstream.html',1,'obufstream'],['../classobufstream.html#a74f7dbcf1131b77d3665aa85d6629722',1,'obufstream::obufstream()'],['../classobufstream.html#a7af0555c5c08ebf9cbc70fc5e2f67db7',1,'obufstream::obufstream(char *buf, size_t size)']]], - ['oct',['oct',['../classios__base.html#a4155540f8d3ffdb8d25a2f50ee4df08f',1,'ios_base::oct()'],['../ios_8h.html#ae661b435df22f8e8e643817f4f915123',1,'oct(): ios.h']]], - ['oemid',['oemId',['../structfat__boot.html#adc034212201e879fea1eb44db43e55a5',1,'fat_boot::oemId()'],['../structfat32__boot.html#af623a473a960ea20904dce0edfb6bb9d',1,'fat32_boot::oemId()']]], - ['off_5ftype',['off_type',['../classios__base.html#a45de7cca0d01da781f4b886179c65c22',1,'ios_base']]], - ['ofstream',['ofstream',['../classofstream.html',1,'ofstream'],['../classofstream.html#ae8a8145adf2cfe1f948ad482ed504b75',1,'ofstream::ofstream()']]], - ['open',['open',['../class_fat_file.html#a3567b0760afe1250334b6c85c2ad5869',1,'FatFile::open(FatFileSystem *fs, const char *path, oflag_t oflag)'],['../class_fat_file.html#ab44920bb9cd5414b8e69c9dc4343394a',1,'FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)'],['../class_fat_file.html#a58d6ea245f1bc3ae7a6df311cd25052f',1,'FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)'],['../class_fat_file.html#a2da94d4556eebd807669e0514433fffa',1,'FatFile::open(const char *path, oflag_t oflag=O_RDONLY)'],['../class_fat_file_system.html#a1590dbde58cf1622a18d1350058a6e18',1,'FatFileSystem::open(const char *path, oflag_t oflag=FILE_READ)'],['../class_fat_file_system.html#a7c44842544967e0083bec1a6089e5061',1,'FatFileSystem::open(const String &path, oflag_t oflag=FILE_READ)'],['../classfstream.html#a85b24d94552991f33caf4c3a83420879',1,'fstream::open()'],['../classifstream.html#a169694d6535fd551fd6db48a2867590e',1,'ifstream::open()'],['../classofstream.html#a4b9d30c742fbe01baa336406c7afdcb2',1,'ofstream::open()']]], - ['openmode',['openmode',['../classios__base.html#aaa192ec0dccc43050715553a34644523',1,'ios_base']]], - ['opennext',['openNext',['../class_fat_file.html#acda9b1bf547d43e183e657bee053a48d',1,'FatFile']]], - ['opennextfile',['openNextFile',['../class_file.html#a49946976035a0811200dc92d5843b8dc',1,'File']]], - ['openroot',['openRoot',['../class_fat_file.html#a7e0c0548fed3a69e7284b91b694439d4',1,'FatFile']]], - ['operator_20bool',['operator bool',['../class_minimum_serial.html#a73a1a2a92604ecb8507afde0022aedd8',1,'MinimumSerial::operator bool()'],['../class_file.html#af171fbf441c899cf71d88b8b0b83d38b',1,'File::operator bool()']]], - ['operator_20const_20void_20_2a',['operator const void *',['../classios.html#aa919219fd2fa41d49c8573b36bb04418',1,'ios']]], - ['operator_21',['operator!',['../classios.html#aea64e05b9aa58bd75ca636692f881fb6',1,'ios']]], - ['operator_3c_3c',['operator<<',['../classostream.html#a4dfc0cdb38bced959ba7cf963db38c30',1,'ostream::operator<<(ostream &(*pf)(ostream &str))'],['../classostream.html#af52c607ea168aff1025222c62cad392f',1,'ostream::operator<<(ios_base &(*pf)(ios_base &str))'],['../classostream.html#a63e3999be154253cf92a45c22e548f51',1,'ostream::operator<<(bool arg)'],['../classostream.html#a618b5d6861dde2347847102b89e0ccfa',1,'ostream::operator<<(const char *arg)'],['../classostream.html#aebe24ff723b806cbee19deb2165d0a5b',1,'ostream::operator<<(const signed char *arg)'],['../classostream.html#ac0cf68ffa4706994f47acb1fa37c601a',1,'ostream::operator<<(const unsigned char *arg)'],['../classostream.html#a1d1e11d2fadaf4c9e34194a1f28572e4',1,'ostream::operator<<(char arg)'],['../classostream.html#ad06f8c6c47667e9c7b14620882c09434',1,'ostream::operator<<(signed char arg)'],['../classostream.html#a69912ec4a8536f289b716e95953d09d7',1,'ostream::operator<<(unsigned char arg)'],['../classostream.html#a8065697d56d5e5d1a0ca50c1916b4955',1,'ostream::operator<<(double arg)'],['../classostream.html#a6c68e418e19d9dcdfe6b1790b2621666',1,'ostream::operator<<(float arg)'],['../classostream.html#a227c47e2b631f29d8873b00290bb4872',1,'ostream::operator<<(short arg)'],['../classostream.html#ace10a3a767dc55faff2cec71cd0a89b1',1,'ostream::operator<<(unsigned short arg)'],['../classostream.html#a62488f7ce7822c777ea27d15223b8e5f',1,'ostream::operator<<(int arg)'],['../classostream.html#ad31df6cd88c7248c01808e40889a7907',1,'ostream::operator<<(unsigned int arg)'],['../classostream.html#a15db9977ed82e503bd3cd1f585acf9e6',1,'ostream::operator<<(long arg)'],['../classostream.html#aaedd44fefa48cf3f0967fcd699a2909d',1,'ostream::operator<<(unsigned long arg)'],['../classostream.html#a2a8febd7c07f078120dd69bb71f25a94',1,'ostream::operator<<(const void *arg)'],['../classostream.html#a99ee8d9265d9354f197d02a3d17116be',1,'ostream::operator<<(const __FlashStringHelper *arg)'],['../iostream_8h.html#aa125ac928f3377cbc6e3cf288b9378fd',1,'operator<<(ostream &os, const setfill &arg): iostream.h'],['../iostream_8h.html#a23d4c29ef8ae37ec7d972d0b66187652',1,'operator<<(ostream &os, const setprecision &arg): iostream.h'],['../iostream_8h.html#a331649f2fdb01ed069dc18a5fad781b1',1,'operator<<(ostream &os, const setw &arg): iostream.h']]], - ['operator_3e_3e',['operator>>',['../classistream.html#aa67d3b8ac67e2097d876a66657ec6067',1,'istream::operator>>(istream &(*pf)(istream &str))'],['../classistream.html#ac6e2f17c80edd19deecdc20f804c424e',1,'istream::operator>>(ios_base &(*pf)(ios_base &str))'],['../classistream.html#a5a0a2c0e06abadb79951ebe34f36d62a',1,'istream::operator>>(ios &(*pf)(ios &str))'],['../classistream.html#a99db66d2e192f02deff0171ad098271f',1,'istream::operator>>(char *str)'],['../classistream.html#addaf5e0f39a15cc213117165dfef0d77',1,'istream::operator>>(char &ch)'],['../classistream.html#a390af4d28adbdc537e436f2121d1c862',1,'istream::operator>>(signed char *str)'],['../classistream.html#a49ab1a573fbf69809d19a52855a30072',1,'istream::operator>>(signed char &ch)'],['../classistream.html#a52e85d01198968330f20026a52cb9f72',1,'istream::operator>>(unsigned char *str)'],['../classistream.html#a74875fcf9ccdc0dca4b46a0b66821798',1,'istream::operator>>(unsigned char &ch)'],['../classistream.html#a3708636d095d360695e9c23335639317',1,'istream::operator>>(bool &arg)'],['../classistream.html#a662060e885a0551c390b7042b3b9e4a5',1,'istream::operator>>(short &arg)'],['../classistream.html#a31a706a374c5a594e400734b8992e2a0',1,'istream::operator>>(unsigned short &arg)'],['../classistream.html#ae8451bc86d83828892d9d67c67b7f02b',1,'istream::operator>>(int &arg)'],['../classistream.html#a35c9847ebf7b822c5ec9742e9de19345',1,'istream::operator>>(unsigned int &arg)'],['../classistream.html#aa26e7f35e74d96803bb0dfb3fb0dc154',1,'istream::operator>>(long &arg)'],['../classistream.html#a5aafa4c7f6615a7f1441962b61b8ef59',1,'istream::operator>>(unsigned long &arg)'],['../classistream.html#af9bf453725ce1d9ef62142a7ee38936e',1,'istream::operator>>(double &arg)'],['../classistream.html#aa8efce6fecab80cf7a17d5dfa31f5aa8',1,'istream::operator>>(float &arg)'],['../classistream.html#a62ef4762feacc64a8acdcbf8f1296936',1,'istream::operator>>(void *&arg)'],['../iostream_8h.html#a4a4079de901e0f3f10c743115bd345b2',1,'operator>>(istream &obj, const setfill &arg): iostream.h'],['../iostream_8h.html#a2f819cd0ccda31a8b648f20534469308',1,'operator>>(istream &is, const setprecision &arg): iostream.h'],['../iostream_8h.html#a8d1b3da6f1074322a6e9e11ff4ce8c33',1,'operator>>(istream &is, const setw &arg): iostream.h']]], - ['ord',['ord',['../structlong_directory_entry.html#a1b65e85dd63d0708cd1b875ce4e5e338',1,'longDirectoryEntry']]], - ['ostream',['ostream',['../classostream.html',1,'']]], - ['ostream_2eh',['ostream.h',['../ostream_8h.html',1,'']]], - ['out',['out',['../classios__base.html#a4c1d517774c0d11af3424e90395f26ae',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_0.html deleted file mode 100644 index e935fdf7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_0.js deleted file mode 100644 index a9adadb3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['arduinoinstream',['ArduinoInStream',['../class_arduino_in_stream.html',1,'']]], - ['arduinooutstream',['ArduinoOutStream',['../class_arduino_out_stream.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_1.html deleted file mode 100644 index 3df6e80a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_1.js deleted file mode 100644 index db111f8d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['baseblockdriver',['BaseBlockDriver',['../class_base_block_driver.html',1,'']]], - ['biosparmblock',['biosParmBlock',['../structbios_parm_block.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_2.html deleted file mode 100644 index 028694ff..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_2.js deleted file mode 100644 index 2cec96aa..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['cache_5ft',['cache_t',['../unioncache__t.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_3.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_3.html deleted file mode 100644 index 2b1abe38..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_3.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_3.js deleted file mode 100644 index 6d9643ba..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['directoryentry',['directoryEntry',['../structdirectory_entry.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_4.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_4.html deleted file mode 100644 index 87352149..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_4.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_4.js deleted file mode 100644 index 29dc35eb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_4.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['fat32_5fboot',['fat32_boot',['../structfat32__boot.html',1,'']]], - ['fat32_5ffsinfo',['fat32_fsinfo',['../structfat32__fsinfo.html',1,'']]], - ['fat_5fboot',['fat_boot',['../structfat__boot.html',1,'']]], - ['fatcache',['FatCache',['../class_fat_cache.html',1,'']]], - ['fatfile',['FatFile',['../class_fat_file.html',1,'']]], - ['fatfilesystem',['FatFileSystem',['../class_fat_file_system.html',1,'']]], - ['fatpos_5ft',['FatPos_t',['../struct_fat_pos__t.html',1,'']]], - ['fatstreambase',['FatStreamBase',['../class_fat_stream_base.html',1,'']]], - ['fatvolume',['FatVolume',['../class_fat_volume.html',1,'']]], - ['file',['File',['../class_file.html',1,'']]], - ['fname_5ft',['fname_t',['../structfname__t.html',1,'']]], - ['fstream',['fstream',['../classfstream.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_5.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_5.html deleted file mode 100644 index ba8b1c69..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_5.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_5.js deleted file mode 100644 index 356cc7b1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_5.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['ibufstream',['ibufstream',['../classibufstream.html',1,'']]], - ['ifstream',['ifstream',['../classifstream.html',1,'']]], - ['ios',['ios',['../classios.html',1,'']]], - ['ios_5fbase',['ios_base',['../classios__base.html',1,'']]], - ['iostream',['iostream',['../classiostream.html',1,'']]], - ['istream',['istream',['../classistream.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_6.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_6.html deleted file mode 100644 index f5850938..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_6.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_6.js deleted file mode 100644 index 61b2f456..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['longdirectoryentry',['longDirectoryEntry',['../structlong_directory_entry.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_7.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_7.html deleted file mode 100644 index 6418529c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_7.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_7.js deleted file mode 100644 index 5be458c2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['masterbootrecord',['masterBootRecord',['../structmaster_boot_record.html',1,'']]], - ['minimumserial',['MinimumSerial',['../class_minimum_serial.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_8.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_8.html deleted file mode 100644 index 87af6f60..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_8.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_8.js deleted file mode 100644 index 7979fbb9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['obufstream',['obufstream',['../classobufstream.html',1,'']]], - ['ofstream',['ofstream',['../classofstream.html',1,'']]], - ['ostream',['ostream',['../classostream.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_9.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_9.html deleted file mode 100644 index f830ae04..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_9.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_9.js deleted file mode 100644 index fcf5b92a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['partitiontable',['partitionTable',['../structpartition_table.html',1,'']]], - ['printfile',['PrintFile',['../class_print_file.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_a.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_a.html deleted file mode 100644 index 0fd3b7ac..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_a.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_a.js deleted file mode 100644 index 5a74c247..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/classes_a.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['sd2card',['Sd2Card',['../class_sd2_card.html',1,'']]], - ['sdbasefile',['SdBaseFile',['../class_sd_base_file.html',1,'']]], - ['sdfat',['SdFat',['../class_sd_fat.html',1,'']]], - ['sdfatex',['SdFatEX',['../class_sd_fat_e_x.html',1,'']]], - ['sdfatsdio',['SdFatSdio',['../class_sd_fat_sdio.html',1,'']]], - ['sdfatsdioex',['SdFatSdioEX',['../class_sd_fat_sdio_e_x.html',1,'']]], - ['sdfatsoftspi',['SdFatSoftSpi',['../class_sd_fat_soft_spi.html',1,'']]], - ['sdfatsoftspiex',['SdFatSoftSpiEX',['../class_sd_fat_soft_spi_e_x.html',1,'']]], - ['sdfile',['SdFile',['../class_sd_file.html',1,'']]], - ['sdfilesystem',['SdFileSystem',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocard_20_3e',['SdFileSystem< SdioCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocardex_20_3e',['SdFileSystem< SdioCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicard_20_3e',['SdFileSystem< SdSpiCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicardex_20_3e',['SdFileSystem< SdSpiCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdiocard',['SdioCard',['../class_sdio_card.html',1,'']]], - ['sdiocardex',['SdioCardEX',['../class_sdio_card_e_x.html',1,'']]], - ['sdspicard',['SdSpiCard',['../class_sd_spi_card.html',1,'']]], - ['sdspicardex',['SdSpiCardEX',['../class_sd_spi_card_e_x.html',1,'']]], - ['setfill',['setfill',['../structsetfill.html',1,'']]], - ['setprecision',['setprecision',['../structsetprecision.html',1,'']]], - ['setw',['setw',['../structsetw.html',1,'']]], - ['stdiostream',['StdioStream',['../class_stdio_stream.html',1,'']]], - ['syscall',['SysCall',['../class_sys_call.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/close.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/close.png deleted file mode 100644 index 9342d3df..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/close.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_0.html deleted file mode 100644 index 3bffafa9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_0.js deleted file mode 100644 index 73b9bad7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['check_5fflash_5fprogramming',['CHECK_FLASH_PROGRAMMING',['../_sd_fat_config_8h.html#a63747c9ac4e3d78579690cf9eb38c4df',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_1.html deleted file mode 100644 index ca5bb94e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_1.js deleted file mode 100644 index 567d919e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['destructor_5fcloses_5ffile',['DESTRUCTOR_CLOSES_FILE',['../_sd_fat_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): FatLibConfig.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_2.html deleted file mode 100644 index 7cc1a74c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_2.js deleted file mode 100644 index 0ac9ddd8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_2.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['enable_5farduino_5ffeatures',['ENABLE_ARDUINO_FEATURES',['../_fat_lib_config_8h.html#a9a8c1ea8596f35f7f33a24b642567206',1,'FatLibConfig.h']]], - ['enable_5fextended_5ftransfer_5fclass',['ENABLE_EXTENDED_TRANSFER_CLASS',['../_sd_fat_config_8h.html#aad4f0ecbc65cdc3a7be544225b44f86a',1,'SdFatConfig.h']]], - ['enable_5fsdio_5fclass',['ENABLE_SDIO_CLASS',['../_sd_fat_config_8h.html#a1d106f3a0ba8577abdcc9ce3961ef90b',1,'SdFatConfig.h']]], - ['enable_5fsoftware_5fspi_5fclass',['ENABLE_SOFTWARE_SPI_CLASS',['../_sd_fat_config_8h.html#acc3d779d87b785bb7236b9b3acf7e619',1,'SdFatConfig.h']]], - ['endl_5fcalls_5fflush',['ENDL_CALLS_FLUSH',['../_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): FatLibConfig.h']]], - ['eof',['EOF',['../_stdio_stream_8h.html#a59adc4c82490d23754cd39c2fb99b0da',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_3.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_3.html deleted file mode 100644 index 3d0ac123..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_3.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_3.js deleted file mode 100644 index a89012ff..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['f',['F',['../_sys_call_8h.html#a0e3009529aac180ed5f48296d6670d6b',1,'SysCall.h']]], - ['fat12_5fsupport',['FAT12_SUPPORT',['../_sd_fat_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): FatLibConfig.h']]], - ['file_5fread',['FILE_READ',['../_arduino_files_8h.html#ad52d51659a75e25d96fb04d22ff718cb',1,'ArduinoFiles.h']]], - ['file_5fwrite',['FILE_WRITE',['../_arduino_files_8h.html#ace34e503254fa9004599ddf122264c8f',1,'ArduinoFiles.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_4.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_4.html deleted file mode 100644 index 201f927f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_4.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_4.js deleted file mode 100644 index 93543167..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_4.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['implement_5fspi_5fport_5fselection',['IMPLEMENT_SPI_PORT_SELECTION',['../_sd_fat_config_8h.html#aa13678c06fd801cb8f00b497a517d91e',1,'SdFatConfig.h']]], - ['include_5fsdios',['INCLUDE_SDIOS',['../_sd_fat_config_8h.html#a7cc6c9647297d65f8e823de70740630b',1,'SdFatConfig.h']]], - ['isdirseparator',['isDirSeparator',['../_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'FatFile.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_5.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_5.html deleted file mode 100644 index 92d51a58..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_5.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_5.js deleted file mode 100644 index df3950f5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['maintain_5ffree_5fcluster_5fcount',['MAINTAIN_FREE_CLUSTER_COUNT',['../_sd_fat_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): FatLibConfig.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_6.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_6.html deleted file mode 100644 index fa5d74ce..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_6.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_6.js deleted file mode 100644 index b45fe3da..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['null',['NULL',['../_stdio_stream_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_7.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_7.html deleted file mode 100644 index 99054085..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_7.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_7.js deleted file mode 100644 index 9894a74e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_7.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['pgm_5fread_5fbyte',['pgm_read_byte',['../_fat_file_8h.html#a48c60b057902adf805797f183286728d',1,'FatFile.h']]], - ['pgm_5fread_5fword',['pgm_read_word',['../_fat_file_8h.html#a910fb5f01313d339d3b835d45e1e5ad0',1,'FatFile.h']]], - ['progmem',['PROGMEM',['../_fat_file_8h.html#a75acaba9e781937468d0911423bc0c35',1,'FatFile.h']]], - ['pstr',['PSTR',['../_fat_file_8h.html#a9c00057fd19e916cc1aa0a5949336beb',1,'FatFile.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_8.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_8.html deleted file mode 100644 index 9098e183..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_8.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_8.js deleted file mode 100644 index 7c309170..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['sd_5ffat_5fversion',['SD_FAT_VERSION',['../_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210',1,'SdFat.h']]], - ['sd_5fhas_5fcustom_5fspi',['SD_HAS_CUSTOM_SPI',['../_sd_fat_config_8h.html#a838861a01379e94361148d22e62b1977',1,'SdFatConfig.h']]], - ['seek_5fcur',['SEEK_CUR',['../_stdio_stream_8h.html#a4c8d0b76b470ba65a43ca46a88320f39',1,'StdioStream.h']]], - ['seek_5fend',['SEEK_END',['../_stdio_stream_8h.html#ad2a2e6c114780c3071efd24f16c7f7d8',1,'StdioStream.h']]], - ['seek_5fset',['SEEK_SET',['../_stdio_stream_8h.html#a0d112bae8fd35be772185b6ec6bcbe64',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_9.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_9.html deleted file mode 100644 index bdebe602..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_9.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_9.js deleted file mode 100644 index a93232be..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_9.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['use_5ffcntl_5fh',['USE_FCNTL_H',['../_sd_fat_config_8h.html#ab4b7255422e65730612f1f6af1a26752',1,'SdFatConfig.h']]], - ['use_5flong_5ffile_5fnames',['USE_LONG_FILE_NAMES',['../_sd_fat_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): FatLibConfig.h']]], - ['use_5fmulti_5fblock_5fio',['USE_MULTI_BLOCK_IO',['../_sd_fat_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): SdFatConfig.h'],['../_fat_lib_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): FatLibConfig.h']]], - ['use_5fsd_5fcrc',['USE_SD_CRC',['../_sd_fat_config_8h.html#af2e76ffb2fdb830175abf513dd640fdd',1,'SdFatConfig.h']]], - ['use_5fseparate_5ffat_5fcache',['USE_SEPARATE_FAT_CACHE',['../_sd_fat_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): FatLibConfig.h']]], - ['use_5fstandard_5fspi_5flibrary',['USE_STANDARD_SPI_LIBRARY',['../_sd_fat_config_8h.html#a3dc42547ca4567cb789bec55759afeb2',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_a.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_a.html deleted file mode 100644 index d6b491aa..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_a.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_a.js deleted file mode 100644 index beb44631..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/defines_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['wdt_5fyield_5ftime_5fmicros',['WDT_YIELD_TIME_MICROS',['../_sd_fat_config_8h.html#a4e8a928d86c50c91c0bfc9a442373e14',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enums_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enums_0.html deleted file mode 100644 index 9efcd1b7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enums_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enums_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enums_0.js deleted file mode 100644 index 82b6107c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['seekdir',['seekdir',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191e',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_0.html deleted file mode 100644 index 03fdfad9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_0.js deleted file mode 100644 index 1836d03f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['beg',['beg',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea6639b4dd9e9b57ffef4a176cd1a1e7bb',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_1.html deleted file mode 100644 index abeea564..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_1.js deleted file mode 100644 index 8d0da198..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['cur',['cur',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea53910041525b9e2f33bfc3bb4482134c',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_2.html deleted file mode 100644 index 90289986..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_2.js deleted file mode 100644 index b1792d51..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/enumvalues_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['end',['end',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191eaae47c0ae984e90b38907783a1a804811',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_0.html deleted file mode 100644 index 49606c82..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_0.js deleted file mode 100644 index ff5b52d2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['arduinofiles_2eh',['ArduinoFiles.h',['../_arduino_files_8h.html',1,'']]], - ['arduinostream_2eh',['ArduinoStream.h',['../_arduino_stream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_1.html deleted file mode 100644 index c8871748..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_1.js deleted file mode 100644 index 22718b39..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['blockdriver_2eh',['BlockDriver.h',['../_block_driver_8h.html',1,'']]], - ['bufstream_2eh',['bufstream.h',['../bufstream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_2.html deleted file mode 100644 index 99bdf21c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_2.js deleted file mode 100644 index 2aca7f97..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['fatfile_2eh',['FatFile.h',['../_fat_file_8h.html',1,'']]], - ['fatfilesystem_2eh',['FatFileSystem.h',['../_fat_file_system_8h.html',1,'']]], - ['fatlibconfig_2eh',['FatLibConfig.h',['../_fat_lib_config_8h.html',1,'']]], - ['fatstructs_2eh',['FatStructs.h',['../_fat_structs_8h.html',1,'']]], - ['fatvolume_2eh',['FatVolume.h',['../_fat_volume_8h.html',1,'']]], - ['freestack_2eh',['FreeStack.h',['../_free_stack_8h.html',1,'']]], - ['fstream_2eh',['fstream.h',['../fstream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_3.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_3.html deleted file mode 100644 index f8e543a8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_3.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_3.js deleted file mode 100644 index 19c93d78..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_3.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['ios_2eh',['ios.h',['../ios_8h.html',1,'']]], - ['iostream_2eh',['iostream.h',['../iostream_8h.html',1,'']]], - ['istream_2eh',['istream.h',['../istream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_4.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_4.html deleted file mode 100644 index 2ebb46c7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_4.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_4.js deleted file mode 100644 index 13b542ba..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['minimumserial_2eh',['MinimumSerial.h',['../_minimum_serial_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_5.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_5.html deleted file mode 100644 index 268b7eb5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_5.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_5.js deleted file mode 100644 index fbe6ff45..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ostream_2eh',['ostream.h',['../ostream_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_6.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_6.html deleted file mode 100644 index 98fc6666..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_6.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_6.js deleted file mode 100644 index 74d0dc93..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/files_6.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['sdfat_2eh',['SdFat.h',['../_sd_fat_8h.html',1,'']]], - ['sdfatconfig_2eh',['SdFatConfig.h',['../_sd_fat_config_8h.html',1,'']]], - ['sdios_2eh',['sdios.h',['../sdios_8h.html',1,'']]], - ['sdspicard_2eh',['SdSpiCard.h',['../_sd_spi_card_8h.html',1,'']]], - ['stdiostream_2eh',['StdioStream.h',['../_stdio_stream_8h.html',1,'']]], - ['syscall_2eh',['SysCall.h',['../_sys_call_8h.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_0.html deleted file mode 100644 index 0539c8ce..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_0.js deleted file mode 100644 index 53143e8d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['arduinoinstream',['ArduinoInStream',['../class_arduino_in_stream.html#a61ee22a5824849ec3261ee2f814dfb93',1,'ArduinoInStream']]], - ['arduinooutstream',['ArduinoOutStream',['../class_arduino_out_stream.html#a228b667f9f53dc91c6ed7735d34f04a8',1,'ArduinoOutStream']]], - ['available',['available',['../class_minimum_serial.html#a2abe4370989968938b5dc4872d51c3df',1,'MinimumSerial::available()'],['../class_print_file.html#a600592235b2bee6bdb3a9701d0d6eee3',1,'PrintFile::available()'],['../class_file.html#acf613c4e75bae85f543b30e701ebcc44',1,'File::available()'],['../class_fat_file.html#ac1fa779d98db7ffdb96f8019ab0060d6',1,'FatFile::available()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_1.html deleted file mode 100644 index 4878b3d1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_1.js deleted file mode 100644 index 732d024d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_1.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['bad',['bad',['../classios.html#a78be4e3069a644ff36d83a70b080c321',1,'ios']]], - ['begin',['begin',['../class_minimum_serial.html#a5c56beb3472bb97f949defeecacda52c',1,'MinimumSerial::begin()'],['../class_sd_file_system.html#ad94237ef45c52698e97b04e8c131f21e',1,'SdFileSystem::begin()'],['../class_sd_fat.html#abfafe10a64b28e6c1698ed82d340f624',1,'SdFat::begin()'],['../class_sd_fat_sdio.html#ac742b37bd8f2f4eb4df44b37c98398e0',1,'SdFatSdio::begin()'],['../class_sd_fat_sdio_e_x.html#a5af596a3788fa3c321a6cce2fc4e2824',1,'SdFatSdioEX::begin()'],['../class_sd_fat_soft_spi.html#a061019e4b5e17fad3cf8b0e3a08532e4',1,'SdFatSoftSpi::begin()'],['../class_sd_fat_e_x.html#a25acc97272c6004a6a4118bacef07467',1,'SdFatEX::begin()'],['../class_sd_fat_soft_spi_e_x.html#af84b3a6a61dd4c7f3c2c4bb17a8a6609',1,'SdFatSoftSpiEX::begin()'],['../class_sd2_card.html#a8506e1a2d7c4d8ec3f26e8b62ea81cd7',1,'Sd2Card::begin()'],['../class_fat_file_system.html#a5dda20d3dcbfc8c641babbb2c9aac382',1,'FatFileSystem::begin()'],['../class_sdio_card.html#ac749bdad92a4465d062f5d21a7f4faf5',1,'SdioCard::begin()'],['../class_sdio_card_e_x.html#adf877d2c8641cdbd52657004c34ec18a',1,'SdioCardEX::begin()'],['../class_sd_spi_card.html#a824cd60ef8ac2b06262597d6f30a4ea7',1,'SdSpiCard::begin()'],['../class_sd_spi_card_e_x.html#a4fd0b23d230c6ad7dc406e798bbd5470',1,'SdSpiCardEX::begin()']]], - ['block',['block',['../class_fat_cache.html#ab3d9c4f94af61065b6d6d0892827fd8a',1,'FatCache']]], - ['blockspercluster',['blocksPerCluster',['../class_fat_volume.html#af6ab43bc0853febb38298406c4067a43',1,'FatVolume']]], - ['blocksperfat',['blocksPerFat',['../class_fat_volume.html#adb87da3b10344f28a92dfade492b8398',1,'FatVolume']]], - ['boolalpha',['boolalpha',['../ios_8h.html#a0016daaaf730481e2ad36972fa7abb17',1,'ios.h']]], - ['buf',['buf',['../classobufstream.html#a4f699181bd3727f4288f4f95a5ce207f',1,'obufstream']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_10.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_10.html deleted file mode 100644 index 6f6fbae2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_10.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_10.js deleted file mode 100644 index 20d588bb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_10.js +++ /dev/null @@ -1,32 +0,0 @@ -var searchData= -[ - ['sdbasefile',['SdBaseFile',['../class_sd_base_file.html#af23fd43105b4eb629f4b66fa695a5cf3',1,'SdBaseFile']]], - ['sdfat',['SdFat',['../class_sd_fat.html#a68d0e890435e3e71e5e44db1736add1e',1,'SdFat']]], - ['sdfatex',['SdFatEX',['../class_sd_fat_e_x.html#aef4d79f9a36785543f48ddc18ac2af78',1,'SdFatEX']]], - ['sdfile',['SdFile',['../class_sd_file.html#ad05be3a1fb635448d15a154424b6c33f',1,'SdFile']]], - ['sdspicard',['SdSpiCard',['../class_sd_spi_card.html#a0441c5da53bd3bd72fb833fc940f25e8',1,'SdSpiCard']]], - ['seek',['seek',['../class_file.html#a2d41ea52356b769e05e1242685758c08',1,'File']]], - ['seekcur',['seekCur',['../class_fat_file.html#a5812037ea30777cc350698ad26f2c73f',1,'FatFile']]], - ['seekend',['seekEnd',['../class_fat_file.html#a84f677f4e75ef6fa2eb632f4cdf6b486',1,'FatFile']]], - ['seekg',['seekg',['../classistream.html#a52d637b1aeca9946085a4a72e0208aec',1,'istream::seekg(pos_type pos)'],['../classistream.html#a60dd48a3b374fb9cbdc59e1f930dea95',1,'istream::seekg(off_type off, seekdir way)']]], - ['seekp',['seekp',['../classostream.html#a18b453d2770a8852c312cbda919c4687',1,'ostream::seekp(pos_type pos)'],['../classostream.html#af6265a5be29237517b30673667ba4213',1,'ostream::seekp(off_type off, seekdir way)']]], - ['seekset',['seekSet',['../class_fat_file.html#ab067190d25733ed7e697d9890f61fd7a',1,'FatFile']]], - ['setcwd',['setCwd',['../class_fat_file.html#a360ef9c05e677271bed6c0a4d663634c',1,'FatFile']]], - ['setf',['setf',['../classios__base.html#ab5db835cb45bba7684ebf72d9a3cccb4',1,'ios_base::setf(fmtflags fl)'],['../classios__base.html#a74dbc93607ab7d68a87ec326b92b6c81',1,'ios_base::setf(fmtflags fl, fmtflags mask)']]], - ['setfill',['setfill',['../structsetfill.html#abcd87f0632678d277df55406d25c8325',1,'setfill']]], - ['setpos',['setpos',['../class_fat_file.html#acf264de4e3ca36c5e8a39e56173c9044',1,'FatFile']]], - ['setprecision',['setprecision',['../structsetprecision.html#a73fce143591989f56ef887a2ea86ac45',1,'setprecision']]], - ['setstate',['setstate',['../classios.html#aee5d194656bdfb0c8621b23ea2f51afb',1,'ios']]], - ['setw',['setw',['../structsetw.html#afd8bfd075474f63df3c8b44ad47517d2',1,'setw']]], - ['showbase',['showbase',['../ios_8h.html#a73159e1398939807aeae6015dd86f2f4',1,'ios.h']]], - ['showpoint',['showpoint',['../ios_8h.html#a322f5897ace09768cd782f0c8f222770',1,'ios.h']]], - ['showpos',['showpos',['../ios_8h.html#a80798554dbfece679adb0e05eb855943',1,'ios.h']]], - ['size',['size',['../class_file.html#a603d3cd3319142d00a7ebd434970b017',1,'File']]], - ['skipwhite',['skipWhite',['../classistream.html#a0f7468be86d93de5d33fa99095898279',1,'istream']]], - ['skipws',['skipws',['../ios_8h.html#a972282e5d9d894f61c8a54423858c0a4',1,'ios.h']]], - ['spistart',['spiStart',['../class_sd_spi_card.html#aa39feb6ebb269071ac6843a424ac311c',1,'SdSpiCard']]], - ['spistop',['spiStop',['../class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1',1,'SdSpiCard']]], - ['stdiostream',['StdioStream',['../class_stdio_stream.html#a96b2c027e76bfca6d6835c9ae1be2ad2',1,'StdioStream']]], - ['sync',['sync',['../class_fat_file.html#a67f3dc4896c542d695e11aac927f585e',1,'FatFile::sync()'],['../class_fat_cache.html#a4d76d4f46ce5994f6fc4678a7b4f8cf1',1,'FatCache::sync()']]], - ['syncblocks',['syncBlocks',['../class_base_block_driver.html#a5361ff2658d7654bf00b97c54c6aa2aa',1,'BaseBlockDriver::syncBlocks()'],['../class_sdio_card.html#affcd36a5c3a42042fe24716671f06632',1,'SdioCard::syncBlocks()'],['../class_sdio_card_e_x.html#a02699a39ef940441ef0f1049742c5aa7',1,'SdioCardEX::syncBlocks()'],['../class_sd_spi_card.html#a1b6d5f412c4ad75c2f575ca75c56c095',1,'SdSpiCard::syncBlocks()'],['../class_sd_spi_card_e_x.html#af4a7c15bae6add50d66d066c0927a021',1,'SdSpiCardEX::syncBlocks()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_11.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_11.html deleted file mode 100644 index dd88d8b7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_11.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_11.js deleted file mode 100644 index 0c4a4d7a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_11.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['tellg',['tellg',['../classistream.html#a18332bdcb7fbe33ca06045c786cac4c3',1,'istream']]], - ['tellp',['tellp',['../classostream.html#a92dec0e2bc8352df1419d1cdc434e619',1,'ostream']]], - ['timestamp',['timestamp',['../class_fat_file.html#aa53a8d1d2467ad9af7d61cbf8ee85243',1,'FatFile::timestamp(FatFile *file)'],['../class_fat_file.html#a56dabdf73833b7e961c4530eb8e16d23',1,'FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)']]], - ['truncate',['truncate',['../class_fat_file.html#aa6e663098a578635d37d92e82d18d616',1,'FatFile::truncate()'],['../class_fat_file_system.html#ad60cb13557f35578f868e03e9ccb8be1',1,'FatFileSystem::truncate()']]], - ['type',['type',['../class_sdio_card.html#a2151106a93280ae41bab654428214661',1,'SdioCard::type()'],['../class_sd_spi_card.html#a48f1e3f107d7242518bdfed78acb46bc',1,'SdSpiCard::type()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_12.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_12.html deleted file mode 100644 index 7093d19f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_12.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_12.js deleted file mode 100644 index e5df2462..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_12.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['ungetc',['ungetc',['../class_stdio_stream.html#ac00e0dd906c2e857ece53794c6c92786',1,'StdioStream']]], - ['unsetf',['unsetf',['../classios__base.html#a3bf7d054a433ed15e8b984e16f630fa4',1,'ios_base']]], - ['uppercase',['uppercase',['../ios_8h.html#af5d5e1a0effa1b500bb882feed5a2061',1,'ios.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_13.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_13.html deleted file mode 100644 index 051a1eb8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_13.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_13.js deleted file mode 100644 index 04c50c2e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_13.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['vol',['vol',['../class_fat_file_system.html#a4ca68fe47bb675df0a80df1ed7a53698',1,'FatFileSystem']]], - ['volume',['volume',['../class_fat_file.html#ae813920a21860b25f25d95c934dada0f',1,'FatFile']]], - ['volumeblockcount',['volumeBlockCount',['../class_fat_volume.html#ada9f893c796559c132ef9da061f04a39',1,'FatVolume']]], - ['vwd',['vwd',['../class_fat_file_system.html#acf257d02b7166683bda2abc5058004bf',1,'FatFileSystem']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_14.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_14.html deleted file mode 100644 index d5fdbda4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_14.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_14.js deleted file mode 100644 index ef3473f3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_14.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['width',['width',['../classios__base.html#afa30e7644b4eae5928ad9c487ad387de',1,'ios_base::width()'],['../classios__base.html#ab2ba0f005bbf3d8ebed93b64068492e0',1,'ios_base::width(unsigned n)']]], - ['wipe',['wipe',['../class_fat_file_system.html#a36d7831f92acfbfef1c4a24dd7103dc4',1,'FatFileSystem::wipe()'],['../class_fat_volume.html#a8088aa74cf601996905dadd2eea6966c',1,'FatVolume::wipe()']]], - ['write',['write',['../class_minimum_serial.html#a0ca1d9631fe5f2f00878bd481dbbd3aa',1,'MinimumSerial::write()'],['../class_print_file.html#a460b033ff85e85f684f8d9b615645db1',1,'PrintFile::write(uint8_t b)'],['../class_print_file.html#a29c1d534d21c3a82ad04232d37119a57',1,'PrintFile::write(const uint8_t *buf, size_t size)'],['../class_file.html#a618a6b2b7e81bfb93e0d3c158f614f90',1,'File::write(uint8_t b)'],['../class_file.html#aa531c1641a2363e1f6b9d103f37433da',1,'File::write(const uint8_t *buf, size_t size)'],['../class_fat_file.html#aa4a5b81161994cea07938702cdfce49f',1,'FatFile::write(const char *str)'],['../class_fat_file.html#a5524bd9f3b8f54ee163e391cba618186',1,'FatFile::write(uint8_t b)'],['../class_fat_file.html#a0ab9df44a9ee4b6eb0a78f15f1e30004',1,'FatFile::write(const void *buf, size_t nbyte)']]], - ['writeblock',['writeBlock',['../class_base_block_driver.html#a87df3db1b400286883661525441d39fa',1,'BaseBlockDriver::writeBlock()'],['../class_sdio_card.html#ae53e5f72ddf9ace3f47774d968e064ed',1,'SdioCard::writeBlock()'],['../class_sdio_card_e_x.html#ab34379d6663461dd0000180e640b73be',1,'SdioCardEX::writeBlock()'],['../class_sd_spi_card.html#a03a0bdb0f37a88076f24a2133cf5b4ed',1,'SdSpiCard::writeBlock()'],['../class_sd_spi_card_e_x.html#a6bd5e6bcfc2ab9574daa11bdd342be7b',1,'SdSpiCardEX::writeBlock()']]], - ['writeblocks',['writeBlocks',['../class_base_block_driver.html#a3d6520b21252ebfb17b0cac0b87689b1',1,'BaseBlockDriver::writeBlocks()'],['../class_sdio_card.html#a8b811f875497e90e75fbe6c2d41d89cb',1,'SdioCard::writeBlocks()'],['../class_sdio_card_e_x.html#a0e504921296a473da074d4a60d573f29',1,'SdioCardEX::writeBlocks()'],['../class_sd_spi_card.html#a181d96fe44891b7caabcd47dd29ac913',1,'SdSpiCard::writeBlocks()'],['../class_sd_spi_card_e_x.html#a9a7a5815b56c2cc77590a72635593762',1,'SdSpiCardEX::writeBlocks()']]], - ['writedata',['writeData',['../class_sdio_card.html#a8467e7ffafa45ff930b38a6f18e9547a',1,'SdioCard::writeData()'],['../class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa',1,'SdSpiCard::writeData()']]], - ['writestart',['writeStart',['../class_sdio_card.html#a6216b2b1c42bd585669955f774292f78',1,'SdioCard::writeStart(uint32_t lba)'],['../class_sdio_card.html#a55b31eb21c986c8476bf42e975801e05',1,'SdioCard::writeStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a56d4750a5d2f693943eec985cb61ffe2',1,'SdSpiCard::writeStart(uint32_t blockNumber)'],['../class_sd_spi_card.html#a8bf0dc991308dcd2a7427bad89a9e2ba',1,'SdSpiCard::writeStart(uint32_t blockNumber, uint32_t eraseCount)']]], - ['writestop',['writeStop',['../class_sdio_card.html#acb560c2ea1f30c646b96f02e728b0fe1',1,'SdioCard::writeStop()'],['../class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0',1,'SdSpiCard::writeStop()']]], - ['ws',['ws',['../iostream_8h.html#a8adf4c714b8c8f201dedc83ee04556b1',1,'iostream.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_15.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_15.html deleted file mode 100644 index 546d13e6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_15.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_15.js deleted file mode 100644 index 685c4a73..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['yield',['yield',['../class_sys_call.html#a2219ba5ea8e411b022a3a00df5f380e0',1,'SysCall']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_2.html deleted file mode 100644 index 67d2a392..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_2.js deleted file mode 100644 index d370df0f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_2.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['cacheclear',['cacheClear',['../class_fat_volume.html#aa1e3b1d0c21d202deb82668068ab00e8',1,'FatVolume']]], - ['card',['card',['../class_sd_file_system.html#ab5dcfbeeb7caa38a38db86003341eb07',1,'SdFileSystem::card()'],['../class_sd_fat_sdio_e_x.html#ac3fe2fd93b491918ec77308ec7c0290c',1,'SdFatSdioEX::card()']]], - ['cardbegin',['cardBegin',['../class_sd_fat.html#ae380e4572776db851b2f80a3ed143fca',1,'SdFat::cardBegin()'],['../class_sd_fat_sdio.html#ac49062cc8fb2a42564d0ff05b4c0be8b',1,'SdFatSdio::cardBegin()'],['../class_sd_fat_sdio_e_x.html#a18f3cf979d7e72105c4642b0ebb56324',1,'SdFatSdioEX::cardBegin()']]], - ['carderrorcode',['cardErrorCode',['../class_sd_file_system.html#aedfd5a0830c955bc5514e52f2f2dd066',1,'SdFileSystem']]], - ['carderrordata',['cardErrorData',['../class_sd_file_system.html#a0602ab3c04ea33293649f0a15fc81e05',1,'SdFileSystem']]], - ['cardsize',['cardSize',['../class_sdio_card.html#a3d8f9a92f7faec77094ec65e6c41dd45',1,'SdioCard::cardSize()'],['../class_sd_spi_card.html#afca8bd6b7e465bf9c475ba375c4deec8',1,'SdSpiCard::cardSize()']]], - ['chdir',['chdir',['../class_fat_file_system.html#a5667915e63187a43a71dfada63800865',1,'FatFileSystem::chdir(bool set_cwd=false)'],['../class_fat_file_system.html#a44af1b98e8d986d12107b654453acbc4',1,'FatFileSystem::chdir(const char *path, bool set_cwd=false)']]], - ['chvol',['chvol',['../class_fat_file_system.html#af24917d6e00c8766dab168eb834047ec',1,'FatFileSystem']]], - ['clear',['clear',['../classfstream.html#a682b278a6a299ffb21b8737717ff12bf',1,'fstream::clear()'],['../classofstream.html#a09edfdb3dbda20aff105e751001313f0',1,'ofstream::clear()'],['../classios.html#aa49ed6670d1743e7a373b2d915ec739a',1,'ios::clear()']]], - ['clearerr',['clearerr',['../class_stdio_stream.html#aa737e5680fc2808a03a603ea8559d82b',1,'StdioStream']]], - ['clearerror',['clearError',['../class_fat_file.html#a052e2c15a39b322a5307b693b8835b22',1,'FatFile']]], - ['clearwriteerror',['clearWriteError',['../class_fat_file.html#aeca2a2eff91e6aa55fe1b0e3860c9a05',1,'FatFile']]], - ['close',['close',['../class_fat_file.html#afd16af325e0642e4bff6430b7d8bb18b',1,'FatFile::close()'],['../classfstream.html#ac5720ee620c09d63dd186823e688ea9a',1,'fstream::close()'],['../classifstream.html#ac5892f472afdef6160f5fe2401b16dce',1,'ifstream::close()'],['../classofstream.html#a240f3752c7ff7a78d10c143d2083715f',1,'ofstream::close()']]], - ['clustercount',['clusterCount',['../class_fat_volume.html#ae724879a554174e31a737f73da418009',1,'FatVolume']]], - ['clustersizeshift',['clusterSizeShift',['../class_fat_volume.html#ab36468240ef6846578ad7f58d1bc41ac',1,'FatVolume']]], - ['contiguousrange',['contiguousRange',['../class_fat_file.html#aa367708bcc8bc0e0c45c0c2a812c65da',1,'FatFile']]], - ['createcontiguous',['createContiguous',['../class_fat_file.html#a0afc2a1cffa238d1cb2049bfa2d8d199',1,'FatFile::createContiguous(FatFile *dirFile, const char *path, uint32_t size)'],['../class_fat_file.html#a0853fbd44aee2798d14d8e3aed78f8bf',1,'FatFile::createContiguous(const char *path, uint32_t size)']]], - ['curcluster',['curCluster',['../class_fat_file.html#a526f3dd56ce205690e45ffc86ef6f891',1,'FatFile']]], - ['curposition',['curPosition',['../class_fat_file.html#a97e0620949f97e9b9c91ed1094d728aa',1,'FatFile']]], - ['curtimems',['curTimeMS',['../_sys_call_8h.html#a7a1c5babdcf00c78d4d2e6a012bd9e68',1,'SysCall.h']]], - ['cwd',['cwd',['../class_fat_file.html#a3b68e603ad8e47bad915f0547e580adb',1,'FatFile']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_3.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_3.html deleted file mode 100644 index 1f0eedb3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_3.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_3.js deleted file mode 100644 index dae4ac05..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_3.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['datastartblock',['dataStartBlock',['../class_fat_volume.html#a55906112e0d151db3b144d29630f5066',1,'FatVolume']]], - ['datetimecallback',['dateTimeCallback',['../class_fat_file.html#a29a623f50df057e8b49045ba6611ec2b',1,'FatFile']]], - ['datetimecallbackcancel',['dateTimeCallbackCancel',['../class_fat_file.html#a5df02f1d037e6091375488af25244ebc',1,'FatFile']]], - ['dbgfat',['dbgFat',['../class_fat_volume.html#a25c6311b70fa274b3be94ff25fdebba7',1,'FatVolume']]], - ['dec',['dec',['../ios_8h.html#ada38ab90e22f0ebb638cb864a35c562d',1,'ios.h']]], - ['dir_5fis_5ffile',['DIR_IS_FILE',['../_fat_structs_8h.html#a5ce8bde4d6ff3950df951e84c7bb8d58',1,'FatStructs.h']]], - ['dir_5fis_5ffile_5for_5fsubdir',['DIR_IS_FILE_OR_SUBDIR',['../_fat_structs_8h.html#a9d99b04fa090825a9b9c2468fa81e627',1,'FatStructs.h']]], - ['dir_5fis_5fhidden',['DIR_IS_HIDDEN',['../_fat_structs_8h.html#a5137c8165addb9d32c6094d03a9d029d',1,'FatStructs.h']]], - ['dir_5fis_5flong_5fname',['DIR_IS_LONG_NAME',['../_fat_structs_8h.html#a504c3d996b412f386becc27a8c49cd2c',1,'FatStructs.h']]], - ['dir_5fis_5fsubdir',['DIR_IS_SUBDIR',['../_fat_structs_8h.html#ace8ed88fcb41afc4d2fe0eabf96e71c6',1,'FatStructs.h']]], - ['dir_5fis_5fsystem',['DIR_IS_SYSTEM',['../_fat_structs_8h.html#a46cad0d590c5e290c52ccf660b316dd9',1,'FatStructs.h']]], - ['direntry',['dirEntry',['../class_fat_file.html#a6858d18c807411a071fd6d1b39d50087',1,'FatFile']]], - ['dirindex',['dirIndex',['../class_fat_file.html#ae5ec24d4a94d3780384d3f2b731c7eb9',1,'FatFile']]], - ['dirname',['dirName',['../class_fat_file.html#a648461081fe07578780f4cd3f246cb66',1,'FatFile']]], - ['dirsize',['dirSize',['../class_fat_file.html#ae2ed15f05c9ccbce355e7a8d3ce8382d',1,'FatFile']]], - ['dirty',['dirty',['../class_fat_cache.html#ab4d3b0c16bb6a116c7d01afff2dcb307',1,'FatCache']]], - ['dmpfile',['dmpFile',['../class_fat_file.html#a4f01d27954ae49aeb6888ac7302f55d9',1,'FatFile']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_4.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_4.html deleted file mode 100644 index c5bf87a4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_4.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_4.js deleted file mode 100644 index d7256582..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_4.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['endl',['endl',['../iostream_8h.html#ab9868f8e151efc1705646437dbb59bb2',1,'iostream.h']]], - ['eof',['eof',['../classios.html#a7aa5ea2f670d64eb3dcb3b62eddd576c',1,'ios']]], - ['erase',['erase',['../class_sdio_card.html#a1ce82b035257790ed8e4a9be3d966b80',1,'SdioCard::erase()'],['../class_sdio_card_e_x.html#a58362f3ddf4bc5ce632cce6768b2d780',1,'SdioCardEX::erase()'],['../class_sd_spi_card.html#a1caa13d19df6596b2c0dd62365c75362',1,'SdSpiCard::erase()']]], - ['erasesingleblockenable',['eraseSingleBlockEnable',['../class_sd_spi_card.html#aed4591884254c9f58daa8738d7c1ccdd',1,'SdSpiCard']]], - ['error',['error',['../class_sd_spi_card.html#aa12ad53111abcb187d3c6119a3a77592',1,'SdSpiCard']]], - ['errorcode',['errorCode',['../class_sdio_card.html#a4ff272009a24fc4078ac87c2d87ccd16',1,'SdioCard::errorCode()'],['../class_sd_spi_card.html#a4c736fb8d6d9d734d5e262875c74f054',1,'SdSpiCard::errorCode()']]], - ['errordata',['errorData',['../class_sdio_card.html#a8251b9aa0d623487e80cf908fc1625b5',1,'SdioCard::errorData()'],['../class_sd_spi_card.html#a10bb2f65b1ca85ad14de19e61a283262',1,'SdSpiCard::errorData()']]], - ['errorhalt',['errorHalt',['../class_sd_file_system.html#a855267374306bfee2df67642c99d4d18',1,'SdFileSystem::errorHalt()'],['../class_sd_file_system.html#ae1f79a2974ebe134e70f898c32d97e98',1,'SdFileSystem::errorHalt(Print *pr)'],['../class_sd_file_system.html#a32c20dfa6a8cb8af95f25847b19bdbca',1,'SdFileSystem::errorHalt(char const *msg)'],['../class_sd_file_system.html#a27fb329d6aee79a63c20386218ce7e9e',1,'SdFileSystem::errorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#af856494745a9842d9728dfeabf19c51e',1,'SdFileSystem::errorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a746c80d048c30baf0b281e16932670a2',1,'SdFileSystem::errorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['errorline',['errorLine',['../class_sdio_card.html#aafa9feb1b5a90f3cf96456b6b286bfdf',1,'SdioCard']]], - ['errorprint',['errorPrint',['../class_sd_file_system.html#ab0b78154d6874c29279ba81f36ccb09c',1,'SdFileSystem::errorPrint()'],['../class_sd_file_system.html#a03736274debea71fef5e2ff34d7ec3dc',1,'SdFileSystem::errorPrint(Print *pr)'],['../class_sd_file_system.html#a2e2436b7b2666737cbaf4b22218bc69f',1,'SdFileSystem::errorPrint(const char *msg)'],['../class_sd_file_system.html#a0eb6b92a0700ba932f6127962981d153',1,'SdFileSystem::errorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#a1ccb1f937f42e9c1331c942bc357f6da',1,'SdFileSystem::errorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a43344a079d9af92ea4b550914d0512f6',1,'SdFileSystem::errorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['exists',['exists',['../class_fat_file.html#a50242f98dea0d4488ce4039a279f2a57',1,'FatFile::exists()'],['../class_fat_file_system.html#aee58c6352652f216577196e32a594b67',1,'FatFileSystem::exists()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_5.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_5.html deleted file mode 100644 index a34446ce..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_5.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_5.js deleted file mode 100644 index c88a4612..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_5.js +++ /dev/null @@ -1,42 +0,0 @@ -var searchData= -[ - ['fail',['fail',['../classios.html#a15269e67d05d4fe83a6cf344d542f8ae',1,'ios']]], - ['fat_5fdate',['FAT_DATE',['../_fat_structs_8h.html#a44899ad42ddf32ff1c1a73b5251b304a',1,'FatStructs.h']]], - ['fat_5fday',['FAT_DAY',['../_fat_structs_8h.html#a4cc8bc105529bf9e9c11e8ef099d68b0',1,'FatStructs.h']]], - ['fat_5fhour',['FAT_HOUR',['../_fat_structs_8h.html#ae7c733d49a5570054f6db3bd53332ba1',1,'FatStructs.h']]], - ['fat_5fminute',['FAT_MINUTE',['../_fat_structs_8h.html#a1b09676a41ae6c9e19664bdcd5b1d34e',1,'FatStructs.h']]], - ['fat_5fmonth',['FAT_MONTH',['../_fat_structs_8h.html#a429bc2d96f5bc26dc3bd6cc2bd535b84',1,'FatStructs.h']]], - ['fat_5fsecond',['FAT_SECOND',['../_fat_structs_8h.html#a4d553e2088d42e01d6c08ee84e611b00',1,'FatStructs.h']]], - ['fat_5ftime',['FAT_TIME',['../_fat_structs_8h.html#a375720927be5a39475d48b2d75dae29a',1,'FatStructs.h']]], - ['fat_5fyear',['FAT_YEAR',['../_fat_structs_8h.html#a279a75f907dd2603543c7bdad00ff603',1,'FatStructs.h']]], - ['fatcount',['fatCount',['../class_fat_volume.html#acdedc6a200b01e401c9cd9b511eae6ec',1,'FatVolume']]], - ['fatfile',['FatFile',['../class_fat_file.html#a7b591c9b92165fa8e4eae8c30c30e533',1,'FatFile::FatFile()'],['../class_fat_file.html#a38f9a296138648d6135cbbbf41ef6b92',1,'FatFile::FatFile(const char *path, oflag_t oflag)']]], - ['fatstartblock',['fatStartBlock',['../class_fat_volume.html#a260bc030ab188a481dd34d6062f7b9d2',1,'FatVolume']]], - ['fattype',['fatType',['../class_fat_volume.html#a0d736f0e8f03476b896307fbe5427376',1,'FatVolume']]], - ['fatvolume',['FatVolume',['../class_fat_volume.html#a026de2bb58026e4edea130db2949b84c',1,'FatVolume']]], - ['fclose',['fclose',['../class_stdio_stream.html#a4ddd4658d49182013d2fa2a181e96c5a',1,'StdioStream']]], - ['feof',['feof',['../class_stdio_stream.html#acb38c3211feedbf2206eb1d9a3a9d24f',1,'StdioStream']]], - ['ferror',['ferror',['../class_stdio_stream.html#afd64cec6440b923660b444f6d5f0586e',1,'StdioStream']]], - ['fflush',['fflush',['../class_stdio_stream.html#a7ce32ec7ea3f2fd8ea42b9633890f1c0',1,'StdioStream']]], - ['fgetc',['fgetc',['../class_stdio_stream.html#a160bd2828cb7e7370cffe1046eff8899',1,'StdioStream']]], - ['fgets',['fgets',['../class_fat_file.html#a31ef26b3ee37cf5f5f4c6024c0ddab69',1,'FatFile::fgets()'],['../class_stdio_stream.html#aa240c1021a1aad1cc57f63a483541dc7',1,'StdioStream::fgets()']]], - ['file',['File',['../class_file.html#af72feff53281f269ac592cba92397cd4',1,'File']]], - ['fileattr',['fileAttr',['../class_fat_file.html#a28ebaf42f0173adeb9faa1884337c8f8',1,'FatFile']]], - ['filesize',['fileSize',['../class_fat_file.html#a874940574b9c99e763526465adf8dc28',1,'FatFile']]], - ['fill',['fill',['../classios__base.html#ade5bd46462e075999c3a5c2cff2015f1',1,'ios_base::fill()'],['../classios__base.html#aa5683f9bdf295311bd5a6d3cdc2fedd5',1,'ios_base::fill(char c)']]], - ['firstblock',['firstBlock',['../class_fat_file.html#ac87b753811e540c7b799da56fa89724b',1,'FatFile']]], - ['firstcluster',['firstCluster',['../class_fat_file.html#ad6233a5122080219b6d8148b1bec4b6a',1,'FatFile']]], - ['flags',['flags',['../classios__base.html#a2a73a30a8b157cc1cc92bb55b0a62e4a',1,'ios_base::flags() const'],['../classios__base.html#ae67e900dc12e4c7cbc0741ad1c70d6c2',1,'ios_base::flags(fmtflags fl)']]], - ['flush',['flush',['../class_minimum_serial.html#a872f0ff70f0e256352004f83d13fff28',1,'MinimumSerial::flush()'],['../class_print_file.html#a53c4cb94af030fdf83a9160ec9a96949',1,'PrintFile::flush()'],['../class_file.html#af87fa862de707575b8badd044a5af80e',1,'File::flush()'],['../classostream.html#af6be1f30d824f5a65d27d5b5d20b8c6c',1,'ostream::flush()'],['../iostream_8h.html#a2f6f5344fca38fd4fe7b6231fd992a0d',1,'flush(): iostream.h']]], - ['fopen',['fopen',['../class_stdio_stream.html#a4ffc37225fb6deed98905aa71d1f9c4b',1,'StdioStream']]], - ['fputc',['fputc',['../class_stdio_stream.html#a9f23cfa6b112a5da6ae08340af23c57b',1,'StdioStream']]], - ['fputs',['fputs',['../class_stdio_stream.html#a6adea52f55ef7d97cdb54e9e11fc2daa',1,'StdioStream']]], - ['fread',['fread',['../class_stdio_stream.html#a2d363b02abcef82b25ff025d50375bce',1,'StdioStream']]], - ['freeclustercount',['freeClusterCount',['../class_fat_volume.html#a1683b063fc6202ab85470b9610f16f93',1,'FatVolume']]], - ['freestack',['FreeStack',['../_free_stack_8h.html#a2c0121d5649d35329a8d0a71e4ffb89b',1,'FreeStack.h']]], - ['fsbegin',['fsBegin',['../class_sd_fat.html#add6a9a3ad07585f6e0e5c35e35cacb9a',1,'SdFat::fsBegin()'],['../class_sd_fat_sdio.html#aac0e8d86182a0e0566c4671c15f3df61',1,'SdFatSdio::fsBegin()'],['../class_sd_fat_sdio_e_x.html#ae7c3cc13d2ec18ab14b4ff88348cc7a0',1,'SdFatSdioEX::fsBegin()']]], - ['fseek',['fseek',['../class_stdio_stream.html#a71584fd5c5cda3c31ce6cdbcc56f104d',1,'StdioStream']]], - ['fstream',['fstream',['../classfstream.html#aed23877c52f828cab8de7a23603b3b6c',1,'fstream']]], - ['ftell',['ftell',['../class_stdio_stream.html#a809639fc5fb4fa5b6789dc121659f386',1,'StdioStream']]], - ['fwrite',['fwrite',['../class_stdio_stream.html#ad79465afb52579cbc801f4585c3f9c25',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_6.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_6.html deleted file mode 100644 index 6fd4b1f3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_6.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_6.js deleted file mode 100644 index 6e73c6e5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_6.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['gcount',['gcount',['../classistream.html#ad0a3db5199ca44b191a9675f2dd3a098',1,'istream']]], - ['get',['get',['../classistream.html#a36573c9b7fc522e6c85a73221019fd11',1,'istream::get()'],['../classistream.html#a9c7313d6f21f1f7ac9b0e759e74b4db2',1,'istream::get(char &ch)'],['../classistream.html#a2c963fd04375e5faa1b7a4362986269a',1,'istream::get(char *str, streamsize n, char delim='\n')']]], - ['getc',['getc',['../class_stdio_stream.html#a28ba31e7b526607744bfa41844ffce31',1,'StdioStream']]], - ['geterror',['getError',['../class_fat_file.html#ad0dbbd083180f44c7a3ce7124d4ce19c',1,'FatFile']]], - ['getline',['getline',['../classistream.html#a7ea6a5edd6b44a6e1ed297fb278b5d52',1,'istream']]], - ['getname',['getName',['../class_fat_file.html#aafa565e286440aab612cdb430fc01da5',1,'FatFile']]], - ['getpos',['getpos',['../class_fat_file.html#aaa4f9886887947815a61eaf015996932',1,'FatFile']]], - ['getsfn',['getSFN',['../class_fat_file.html#aba30e92a66f8e0d2f815c85662772a58',1,'FatFile']]], - ['getwriteerror',['getWriteError',['../class_fat_file.html#a8062c0d3a118e8d77d0310418703d5f5',1,'FatFile']]], - ['good',['good',['../classios.html#a0192d754476f243d7f13dc16e851c7cc',1,'ios']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_7.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_7.html deleted file mode 100644 index 6e09abf1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_7.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_7.js deleted file mode 100644 index 42d85c2a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['halt',['halt',['../class_sys_call.html#a9b1ef8900e97f572ca561760b4dd4191',1,'SysCall']]], - ['hex',['hex',['../ios_8h.html#ace2036d970905192360d622140bfe336',1,'ios.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_8.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_8.html deleted file mode 100644 index d59ea971..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_8.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_8.js deleted file mode 100644 index 579e16e1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_8.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['ibufstream',['ibufstream',['../classibufstream.html#afe28f27d24a62a21428b60fe8834dd05',1,'ibufstream::ibufstream()'],['../classibufstream.html#a819561105ef7dc3828e0cfedfed708d8',1,'ibufstream::ibufstream(const char *str)']]], - ['ifstream',['ifstream',['../classifstream.html#a11f4bfaa5c37cfcf8878c367fd861a88',1,'ifstream']]], - ['ignore',['ignore',['../classistream.html#a12597b03d86b66047a5581bbd26eb032',1,'istream']]], - ['init',['init',['../classibufstream.html#a1d7bae17d9d2c79218085251946f322a',1,'ibufstream::init()'],['../classobufstream.html#a8f75dbadab2fed7770d01a2cc2628258',1,'obufstream::init()'],['../class_fat_cache.html#ae1d8a2da1493b5ffca0520184daaddf1',1,'FatCache::init()'],['../class_fat_volume.html#acab819fa25a91dad1cc698a7e1e0eb32',1,'FatVolume::init()'],['../class_fat_volume.html#a034d997a1e7a0b2b664a4357bcccd256',1,'FatVolume::init(uint8_t part)']]], - ['initerrorhalt',['initErrorHalt',['../class_sd_file_system.html#a8e1f26486bb878a24fa9868e59dbbbc2',1,'SdFileSystem::initErrorHalt()'],['../class_sd_file_system.html#a24bd0f699cf0fe11fd2148b15c49251a',1,'SdFileSystem::initErrorHalt(Print *pr)'],['../class_sd_file_system.html#a893833a880e2a83757480ba4c1351041',1,'SdFileSystem::initErrorHalt(char const *msg)'],['../class_sd_file_system.html#a3077b1a53d789d0401b707963cb28f46',1,'SdFileSystem::initErrorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#a2a1e4cc8056ba23b55dfa2c6486b8798',1,'SdFileSystem::initErrorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#ab03d98012dea18733c3252f27832de69',1,'SdFileSystem::initErrorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['initerrorprint',['initErrorPrint',['../class_sd_file_system.html#ae31c9cbd7e1c03129d6c99b25f73cd50',1,'SdFileSystem::initErrorPrint()'],['../class_sd_file_system.html#a066707dce0667213b5f083d59f67448d',1,'SdFileSystem::initErrorPrint(Print *pr)'],['../class_sd_file_system.html#a538796f79fd9db9c5bbeefd9defe639a',1,'SdFileSystem::initErrorPrint(char const *msg)'],['../class_sd_file_system.html#ad9855d33ebd465715b706d0926291b13',1,'SdFileSystem::initErrorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#ad6ffec5a7d82be46d46b8a4f82d0803b',1,'SdFileSystem::initErrorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a8a2018b6366145a9843d3d29a47d6560',1,'SdFileSystem::initErrorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['internal',['internal',['../ios_8h.html#a8dd76c1ce8fced364a98428ca1eea7a6',1,'ios.h']]], - ['invalidate',['invalidate',['../class_fat_cache.html#a70071a128d647b49b523dbb2f5f944a5',1,'FatCache']]], - ['ios',['ios',['../classios.html#adc5dbd7b69da79493ebc84aa1e681aaa',1,'ios']]], - ['is_5fopen',['is_open',['../classfstream.html#ae4a71c6f3da2f168ec222739d796fc8b',1,'fstream::is_open()'],['../classifstream.html#aaa16c6422ea371995d02159f2e6707b2',1,'ifstream::is_open()'],['../classofstream.html#a9c97eb2eb6e35ae87cf7f7453a67e70a',1,'ofstream::is_open()']]], - ['isbusy',['isBusy',['../class_sdio_card.html#a560bdfc96932d073c2b0610600560f78',1,'SdioCard::isBusy()'],['../class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328',1,'SdSpiCard::isBusy()']]], - ['isdir',['isDir',['../class_fat_file.html#a933360b20b496421b2bd9ee7a95563a6',1,'FatFile']]], - ['isdirectory',['isDirectory',['../class_file.html#a6ba5bdb943363cda56649238ccb18c27',1,'File']]], - ['isdirty',['isDirty',['../class_fat_cache.html#ae50287d95bd78558db1e4aa97d7b2c06',1,'FatCache']]], - ['isfile',['isFile',['../class_fat_file.html#acc5a87da1a5c8cb9758bfeaa7ae47b57',1,'FatFile']]], - ['ishidden',['isHidden',['../class_fat_file.html#ae216b4a2bc44a9cfb88478fa051a1fd8',1,'FatFile']]], - ['islfn',['isLFN',['../class_fat_file.html#af8f456ab790e818bfdd225cf6ffd40f3',1,'FatFile']]], - ['isopen',['isOpen',['../class_fat_file.html#a8b8a2850c086d3ce79bee64a23fbf7a6',1,'FatFile']]], - ['isreadonly',['isReadOnly',['../class_fat_file.html#abaf639ec8f86f34aeb7e6b3615526f0b',1,'FatFile']]], - ['isroot',['isRoot',['../class_fat_file.html#a03421a0c28649332f55e6ca06d3aeedb',1,'FatFile']]], - ['isroot32',['isRoot32',['../class_fat_file.html#a8fda8004720ec4cc55710869dbb52e35',1,'FatFile']]], - ['isrootfixed',['isRootFixed',['../class_fat_file.html#a0cc65089f7ce6c1ff92edbf0bff59dee',1,'FatFile']]], - ['issubdir',['isSubDir',['../class_fat_file.html#abfd02c5d26f7d4f8739a8610116a6660',1,'FatFile']]], - ['issystem',['isSystem',['../class_fat_file.html#a48087bdeb6b94fc27e0f74c3d90af5a9',1,'FatFile']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_9.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_9.html deleted file mode 100644 index 5ccec429..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_9.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_9.js deleted file mode 100644 index a37596e4..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['khzsdclk',['kHzSdClk',['../class_sdio_card.html#a3532a1a4b8a43a51ed9b5853186203cb',1,'SdioCard']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_a.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_a.html deleted file mode 100644 index 3958eb7b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_a.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_a.js deleted file mode 100644 index 0f3e7bdb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_a.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['lbn',['lbn',['../class_fat_cache.html#a9f981b53e212f79937e5f6381b169374',1,'FatCache']]], - ['left',['left',['../ios_8h.html#a24a80a73f0a0d2d72d1cb74f49ff4759',1,'ios.h']]], - ['legal83char',['legal83Char',['../class_fat_file.html#a94df8090f16e9666cdc53ca20f6aff90',1,'FatFile']]], - ['length',['length',['../classobufstream.html#ac650708e968b0c0545a3badeb809cf15',1,'obufstream']]], - ['ls',['ls',['../class_fat_file.html#ad49f688a494b351ccbb0102dcfafb925',1,'FatFile::ls(uint8_t flags=0)'],['../class_fat_file.html#acabf31ff85e696fbf384c49428012fea',1,'FatFile::ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)'],['../class_fat_file_system.html#a2398fb37a7a9d5e0dc0ffde6a44a993d',1,'FatFileSystem::ls(uint8_t flags=0)'],['../class_fat_file_system.html#a122b61dbec5051304bcc81bc08b1b99d',1,'FatFileSystem::ls(const char *path, uint8_t flags=0)'],['../class_fat_file_system.html#ae12fb8bfad5c4a8e052dda70a5a0ed93',1,'FatFileSystem::ls(print_t *pr, uint8_t flags=0)'],['../class_fat_file_system.html#aa79695db8e910300507210b3067d39fd',1,'FatFileSystem::ls(print_t *pr, const char *path, uint8_t flags)']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_b.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_b.html deleted file mode 100644 index b99b702d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_b.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_b.js deleted file mode 100644 index b9e2c887..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mkdir',['mkdir',['../class_fat_file.html#abab5b9f72cc796388dd4eed01d13d90d',1,'FatFile::mkdir()'],['../class_fat_file_system.html#a231c62c98ba8ac3c2624dc5ad2053ebf',1,'FatFileSystem::mkdir()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_c.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_c.html deleted file mode 100644 index 3a33d874..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_c.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_c.js deleted file mode 100644 index 3652b234..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_c.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['name',['name',['../class_file.html#a3d7c8f86311b9aad2bcc43e677d927ed',1,'File']]], - ['noboolalpha',['noboolalpha',['../ios_8h.html#aa6a1ec04992fc8090ca775a39678be01',1,'ios.h']]], - ['noshowbase',['noshowbase',['../ios_8h.html#ab861ff5f863de0ae002b65390dde36b0',1,'ios.h']]], - ['noshowpoint',['noshowpoint',['../ios_8h.html#ad85399d1b75151cf9e2436f2a1ccfc13',1,'ios.h']]], - ['noshowpos',['noshowpos',['../ios_8h.html#a985805b22ffb4ce2f5298168662bd2d7',1,'ios.h']]], - ['noskipws',['noskipws',['../ios_8h.html#a773b847300db776fde08a0b562792131',1,'ios.h']]], - ['nouppercase',['nouppercase',['../ios_8h.html#a24b96fb317e056b34aa84c4bb965a79a',1,'ios.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_d.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_d.html deleted file mode 100644 index 31b75b88..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_d.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_d.js deleted file mode 100644 index 211ffe05..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_d.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['obufstream',['obufstream',['../classobufstream.html#a74f7dbcf1131b77d3665aa85d6629722',1,'obufstream::obufstream()'],['../classobufstream.html#a7af0555c5c08ebf9cbc70fc5e2f67db7',1,'obufstream::obufstream(char *buf, size_t size)']]], - ['oct',['oct',['../ios_8h.html#ae661b435df22f8e8e643817f4f915123',1,'ios.h']]], - ['ofstream',['ofstream',['../classofstream.html#ae8a8145adf2cfe1f948ad482ed504b75',1,'ofstream']]], - ['open',['open',['../class_fat_file.html#a3567b0760afe1250334b6c85c2ad5869',1,'FatFile::open(FatFileSystem *fs, const char *path, oflag_t oflag)'],['../class_fat_file.html#ab44920bb9cd5414b8e69c9dc4343394a',1,'FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)'],['../class_fat_file.html#a58d6ea245f1bc3ae7a6df311cd25052f',1,'FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)'],['../class_fat_file.html#a2da94d4556eebd807669e0514433fffa',1,'FatFile::open(const char *path, oflag_t oflag=O_RDONLY)'],['../class_fat_file_system.html#a1590dbde58cf1622a18d1350058a6e18',1,'FatFileSystem::open(const char *path, oflag_t oflag=FILE_READ)'],['../class_fat_file_system.html#a7c44842544967e0083bec1a6089e5061',1,'FatFileSystem::open(const String &path, oflag_t oflag=FILE_READ)'],['../classfstream.html#a85b24d94552991f33caf4c3a83420879',1,'fstream::open()'],['../classifstream.html#a169694d6535fd551fd6db48a2867590e',1,'ifstream::open()'],['../classofstream.html#a4b9d30c742fbe01baa336406c7afdcb2',1,'ofstream::open()']]], - ['opennext',['openNext',['../class_fat_file.html#acda9b1bf547d43e183e657bee053a48d',1,'FatFile']]], - ['opennextfile',['openNextFile',['../class_file.html#a49946976035a0811200dc92d5843b8dc',1,'File']]], - ['openroot',['openRoot',['../class_fat_file.html#a7e0c0548fed3a69e7284b91b694439d4',1,'FatFile']]], - ['operator_20bool',['operator bool',['../class_minimum_serial.html#a73a1a2a92604ecb8507afde0022aedd8',1,'MinimumSerial::operator bool()'],['../class_file.html#af171fbf441c899cf71d88b8b0b83d38b',1,'File::operator bool()']]], - ['operator_20const_20void_20_2a',['operator const void *',['../classios.html#aa919219fd2fa41d49c8573b36bb04418',1,'ios']]], - ['operator_21',['operator!',['../classios.html#aea64e05b9aa58bd75ca636692f881fb6',1,'ios']]], - ['operator_3c_3c',['operator<<',['../classostream.html#a4dfc0cdb38bced959ba7cf963db38c30',1,'ostream::operator<<(ostream &(*pf)(ostream &str))'],['../classostream.html#af52c607ea168aff1025222c62cad392f',1,'ostream::operator<<(ios_base &(*pf)(ios_base &str))'],['../classostream.html#a63e3999be154253cf92a45c22e548f51',1,'ostream::operator<<(bool arg)'],['../classostream.html#a618b5d6861dde2347847102b89e0ccfa',1,'ostream::operator<<(const char *arg)'],['../classostream.html#aebe24ff723b806cbee19deb2165d0a5b',1,'ostream::operator<<(const signed char *arg)'],['../classostream.html#ac0cf68ffa4706994f47acb1fa37c601a',1,'ostream::operator<<(const unsigned char *arg)'],['../classostream.html#a1d1e11d2fadaf4c9e34194a1f28572e4',1,'ostream::operator<<(char arg)'],['../classostream.html#ad06f8c6c47667e9c7b14620882c09434',1,'ostream::operator<<(signed char arg)'],['../classostream.html#a69912ec4a8536f289b716e95953d09d7',1,'ostream::operator<<(unsigned char arg)'],['../classostream.html#a8065697d56d5e5d1a0ca50c1916b4955',1,'ostream::operator<<(double arg)'],['../classostream.html#a6c68e418e19d9dcdfe6b1790b2621666',1,'ostream::operator<<(float arg)'],['../classostream.html#a227c47e2b631f29d8873b00290bb4872',1,'ostream::operator<<(short arg)'],['../classostream.html#ace10a3a767dc55faff2cec71cd0a89b1',1,'ostream::operator<<(unsigned short arg)'],['../classostream.html#a62488f7ce7822c777ea27d15223b8e5f',1,'ostream::operator<<(int arg)'],['../classostream.html#ad31df6cd88c7248c01808e40889a7907',1,'ostream::operator<<(unsigned int arg)'],['../classostream.html#a15db9977ed82e503bd3cd1f585acf9e6',1,'ostream::operator<<(long arg)'],['../classostream.html#aaedd44fefa48cf3f0967fcd699a2909d',1,'ostream::operator<<(unsigned long arg)'],['../classostream.html#a2a8febd7c07f078120dd69bb71f25a94',1,'ostream::operator<<(const void *arg)'],['../classostream.html#a99ee8d9265d9354f197d02a3d17116be',1,'ostream::operator<<(const __FlashStringHelper *arg)'],['../iostream_8h.html#aa125ac928f3377cbc6e3cf288b9378fd',1,'operator<<(ostream &os, const setfill &arg): iostream.h'],['../iostream_8h.html#a23d4c29ef8ae37ec7d972d0b66187652',1,'operator<<(ostream &os, const setprecision &arg): iostream.h'],['../iostream_8h.html#a331649f2fdb01ed069dc18a5fad781b1',1,'operator<<(ostream &os, const setw &arg): iostream.h']]], - ['operator_3e_3e',['operator>>',['../classistream.html#aa67d3b8ac67e2097d876a66657ec6067',1,'istream::operator>>(istream &(*pf)(istream &str))'],['../classistream.html#ac6e2f17c80edd19deecdc20f804c424e',1,'istream::operator>>(ios_base &(*pf)(ios_base &str))'],['../classistream.html#a5a0a2c0e06abadb79951ebe34f36d62a',1,'istream::operator>>(ios &(*pf)(ios &str))'],['../classistream.html#a99db66d2e192f02deff0171ad098271f',1,'istream::operator>>(char *str)'],['../classistream.html#addaf5e0f39a15cc213117165dfef0d77',1,'istream::operator>>(char &ch)'],['../classistream.html#a390af4d28adbdc537e436f2121d1c862',1,'istream::operator>>(signed char *str)'],['../classistream.html#a49ab1a573fbf69809d19a52855a30072',1,'istream::operator>>(signed char &ch)'],['../classistream.html#a52e85d01198968330f20026a52cb9f72',1,'istream::operator>>(unsigned char *str)'],['../classistream.html#a74875fcf9ccdc0dca4b46a0b66821798',1,'istream::operator>>(unsigned char &ch)'],['../classistream.html#a3708636d095d360695e9c23335639317',1,'istream::operator>>(bool &arg)'],['../classistream.html#a662060e885a0551c390b7042b3b9e4a5',1,'istream::operator>>(short &arg)'],['../classistream.html#a31a706a374c5a594e400734b8992e2a0',1,'istream::operator>>(unsigned short &arg)'],['../classistream.html#ae8451bc86d83828892d9d67c67b7f02b',1,'istream::operator>>(int &arg)'],['../classistream.html#a35c9847ebf7b822c5ec9742e9de19345',1,'istream::operator>>(unsigned int &arg)'],['../classistream.html#aa26e7f35e74d96803bb0dfb3fb0dc154',1,'istream::operator>>(long &arg)'],['../classistream.html#a5aafa4c7f6615a7f1441962b61b8ef59',1,'istream::operator>>(unsigned long &arg)'],['../classistream.html#af9bf453725ce1d9ef62142a7ee38936e',1,'istream::operator>>(double &arg)'],['../classistream.html#aa8efce6fecab80cf7a17d5dfa31f5aa8',1,'istream::operator>>(float &arg)'],['../classistream.html#a62ef4762feacc64a8acdcbf8f1296936',1,'istream::operator>>(void *&arg)'],['../iostream_8h.html#a4a4079de901e0f3f10c743115bd345b2',1,'operator>>(istream &obj, const setfill &arg): iostream.h'],['../iostream_8h.html#a2f819cd0ccda31a8b648f20534469308',1,'operator>>(istream &is, const setprecision &arg): iostream.h'],['../iostream_8h.html#a8d1b3da6f1074322a6e9e11ff4ce8c33',1,'operator>>(istream &is, const setw &arg): iostream.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_e.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_e.html deleted file mode 100644 index cddb9bb5..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_e.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_e.js deleted file mode 100644 index 759641db..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_e.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['peek',['peek',['../class_print_file.html#a3a2a66f4a0cb69ab4edc66d39997fda7',1,'PrintFile::peek()'],['../class_file.html#a0e5025f39bd584563bfe4b05fc1db268',1,'File::peek()'],['../class_fat_file.html#ac05b7136b887539426856c623869aa3a',1,'FatFile::peek()'],['../classistream.html#a4022265e0ede3698454f1ff59348c14a',1,'istream::peek()']]], - ['position',['position',['../class_file.html#aae991c597c0bc4c5eb44c1f3b06a21ec',1,'File']]], - ['precision',['precision',['../classios__base.html#aba92f0687644fc14f202958635ce276f',1,'ios_base::precision() const'],['../classios__base.html#a5b70cc65fc2c276136fea99bddedb6f0',1,'ios_base::precision(unsigned int n)']]], - ['print',['print',['../class_stdio_stream.html#ad3f6ee8e8ca5dcf6dabfd88199b172e2',1,'StdioStream::print(char c)'],['../class_stdio_stream.html#a1158ea5f9bf041f21b1733b7811c9bb9',1,'StdioStream::print(const char *str)'],['../class_stdio_stream.html#aac4d7b3548d03b8fd70adf12c7ee315c',1,'StdioStream::print(const __FlashStringHelper *str)'],['../class_stdio_stream.html#a26f5b98560b6771225005b073166108b',1,'StdioStream::print(double val, uint8_t prec=2)'],['../class_stdio_stream.html#a06b6eb9f0a7000fdcc73cd6af8d40560',1,'StdioStream::print(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a7129f85c7c5f16867f467731ef84dee9',1,'StdioStream::print(T val)']]], - ['printcreatedatetime',['printCreateDateTime',['../class_fat_file.html#a558530f20314a8d8ee3d1a488fc7f46e',1,'FatFile']]], - ['printdec',['printDec',['../class_stdio_stream.html#ac0a907feb1e4b7e00de99857b4c0a470',1,'StdioStream::printDec(char n)'],['../class_stdio_stream.html#a2707ea97f6113c226781469f4f39ff62',1,'StdioStream::printDec(signed char n)'],['../class_stdio_stream.html#a6e6ac78caa6259a4c4934707bf497a2b',1,'StdioStream::printDec(unsigned char n)'],['../class_stdio_stream.html#a218af88db35f38babf01d6e0a9cdceeb',1,'StdioStream::printDec(int16_t n)'],['../class_stdio_stream.html#a90b2999af94a3578fff7579c2acf8e35',1,'StdioStream::printDec(uint16_t n)'],['../class_stdio_stream.html#ad4591f1234b57f63c1acf0f3392099ac',1,'StdioStream::printDec(int32_t n)'],['../class_stdio_stream.html#a8b6c2c80342abe45e6f564e9bd5bb7ea',1,'StdioStream::printDec(uint32_t n)'],['../class_stdio_stream.html#aaa8921947d4dbbae840d285cb633e8aa',1,'StdioStream::printDec(double value, uint8_t prec)'],['../class_stdio_stream.html#a6a09284b1c6d0769c27916a2e131e749',1,'StdioStream::printDec(float value, uint8_t prec)']]], - ['printfatdate',['printFatDate',['../class_fat_file.html#a8fdb038aafdf3a17ac80b53c063aa73b',1,'FatFile::printFatDate(uint16_t fatDate)'],['../class_fat_file.html#ada5364f66204b1a64afbf9d2e6cd2b0b',1,'FatFile::printFatDate(print_t *pr, uint16_t fatDate)']]], - ['printfattime',['printFatTime',['../class_fat_file.html#a7740731f08ef97de7dfbc9b075c4c7d1',1,'FatFile::printFatTime(uint16_t fatTime)'],['../class_fat_file.html#a4e7e56ba52ca17c602af1b85684b09a9',1,'FatFile::printFatTime(print_t *pr, uint16_t fatTime)']]], - ['printfield',['printField',['../class_fat_file.html#a7478cad0f9e5079311b9e1fa558016ff',1,'FatFile::printField(float value, char term, uint8_t prec=2)'],['../class_fat_file.html#abd3e1747511216462b3ef98167156cbb',1,'FatFile::printField(int16_t value, char term)'],['../class_fat_file.html#a9972c2419c293ef9c382bff666b9ae4d',1,'FatFile::printField(uint16_t value, char term)'],['../class_fat_file.html#a41b3b32dd8482429b74c7af3432d6cf8',1,'FatFile::printField(int32_t value, char term)'],['../class_fat_file.html#a097240f08baadeb1c64b63eab9afb088',1,'FatFile::printField(uint32_t value, char term)'],['../class_stdio_stream.html#a4988592ada39c4b4c603b061f84d183f',1,'StdioStream::printField(double value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a3b90b2317cc391f94784a847f5313c08',1,'StdioStream::printField(float value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a02c2ad1a2e71e82d238b8386cf3e6c41',1,'StdioStream::printField(T value, char term)']]], - ['printfile',['PrintFile',['../class_print_file.html#a537ea4364a7958550acf2c8ddb8791ec',1,'PrintFile']]], - ['printfilesize',['printFileSize',['../class_fat_file.html#a12a5d2de2737c201aa39ca1bd2ab9c47',1,'FatFile']]], - ['printhex',['printHex',['../class_stdio_stream.html#add39b2b4ec3daa7c8922e96ce5d368bc',1,'StdioStream']]], - ['printhexln',['printHexln',['../class_stdio_stream.html#aec6ebea511489b0ef6b61d9132d93af9',1,'StdioStream']]], - ['println',['println',['../class_stdio_stream.html#ad0cd3acc05a91456f505752377bd405a',1,'StdioStream::println()'],['../class_stdio_stream.html#a3793dd66cf347a1ca0b7b167e948cce9',1,'StdioStream::println(double val, uint8_t prec=2)'],['../class_stdio_stream.html#aac250d041a7844c8db1cbd2d97ecfdaa',1,'StdioStream::println(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a3b14532768d07e6ed89c762d04792c12',1,'StdioStream::println(T val)']]], - ['printmodifydatetime',['printModifyDateTime',['../class_fat_file.html#a05cee5df46a370bf916d3ba597c82e39',1,'FatFile']]], - ['printname',['printName',['../class_fat_file.html#ad1cbc3aeb0f5193b7a26595966da9621',1,'FatFile::printName()'],['../class_fat_file.html#afe18a787fb8640e2d2483370c770f82f',1,'FatFile::printName(print_t *pr)']]], - ['printsfn',['printSFN',['../class_fat_file.html#a791cd7aade71f609aab62ec018aea3c0',1,'FatFile']]], - ['put',['put',['../classostream.html#a11aad8a1efd284ccfa91cbfb78d089bd',1,'ostream']]], - ['putc',['putc',['../class_stdio_stream.html#adf9e552212aad6fc2284da0ee62d04dc',1,'StdioStream']]], - ['putcrlf',['putCRLF',['../class_stdio_stream.html#a09ccc4b6cabc3502c1052e85d94e84ef',1,'StdioStream']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_f.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_f.html deleted file mode 100644 index 49672926..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_f.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_f.js deleted file mode 100644 index 7511368a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/functions_f.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['rdstate',['rdstate',['../classios.html#afe4d084ba0d2704a27525147d1463c36',1,'ios']]], - ['read',['read',['../class_minimum_serial.html#a4890dd60f2ffb61eba0821cc80d411ad',1,'MinimumSerial::read()'],['../class_file.html#a4c46a1975e66c37977bf07c58ec10b4e',1,'File::read()'],['../class_fat_file.html#a60ae55ff6fe158c2340071d702a363c5',1,'FatFile::read()'],['../class_fat_file.html#a200e6e0553d5b709520c9dfac9ef77dd',1,'FatFile::read(void *buf, size_t nbyte)'],['../class_fat_cache.html#ac2bb0b8f2ce3ab5cd86cf30b4a663cea',1,'FatCache::read()']]], - ['readblock',['readBlock',['../class_base_block_driver.html#a16bb3305f3130253dd7ab6e19aa1b524',1,'BaseBlockDriver::readBlock()'],['../class_sdio_card.html#ac94605c428fa9258106835cceec470d8',1,'SdioCard::readBlock()'],['../class_sdio_card_e_x.html#a49609f0409ef01284bc83b10a8ec5efe',1,'SdioCardEX::readBlock()'],['../class_sd_spi_card.html#a4393634a82c6683ee94d1fefe0be332a',1,'SdSpiCard::readBlock()'],['../class_sd_spi_card_e_x.html#abb69c8bd538dafed1e7f33382ee48d61',1,'SdSpiCardEX::readBlock()']]], - ['readblocks',['readBlocks',['../class_base_block_driver.html#a3a029a2d02fc7cbdd7c15c8d622565c4',1,'BaseBlockDriver::readBlocks()'],['../class_sdio_card.html#a7de36d26a01dc39b7dc122c54ee03b12',1,'SdioCard::readBlocks()'],['../class_sdio_card_e_x.html#a1b50db2f87246f4ff1af4782152c5fee',1,'SdioCardEX::readBlocks()'],['../class_sd_spi_card.html#ac630f77c3137923b47c1bd12a9bbfadf',1,'SdSpiCard::readBlocks()'],['../class_sd_spi_card_e_x.html#a9e158cda94fadd12267fe7e63d06622a',1,'SdSpiCardEX::readBlocks()']]], - ['readcid',['readCID',['../class_sdio_card.html#add77777fbcf91cc41e8ec62fda169e79',1,'SdioCard::readCID()'],['../class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea',1,'SdSpiCard::readCID()']]], - ['readcsd',['readCSD',['../class_sdio_card.html#a1da0ca418c153e24b4e13b4c1e20d450',1,'SdioCard::readCSD()'],['../class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290',1,'SdSpiCard::readCSD()']]], - ['readdata',['readData',['../class_sdio_card.html#a9dc1cd99d0136e514faaecf56a6318d2',1,'SdioCard::readData()'],['../class_sd_spi_card.html#a3a1d1b4b4ceb42fcd41aaf6649482770',1,'SdSpiCard::readData()']]], - ['readdir',['readDir',['../class_fat_file.html#a1325afe074c3efecff666678cd9f116a',1,'FatFile']]], - ['readline',['readline',['../class_arduino_in_stream.html#ad4c60f813b8df6dd1d6696a3458de09c',1,'ArduinoInStream']]], - ['readocr',['readOCR',['../class_sdio_card.html#adc583f7a27f57ce55ce474b1379b9303',1,'SdioCard::readOCR()'],['../class_sd_spi_card.html#ab446e49338b3ce834a750ac6dae35f61',1,'SdSpiCard::readOCR()']]], - ['readstart',['readStart',['../class_sdio_card.html#a73beed782d16173b2e7b0e29c663f6fb',1,'SdioCard::readStart(uint32_t lba)'],['../class_sdio_card.html#a788171db84a1d724808d56ab9608e3a4',1,'SdioCard::readStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a3b1710d11496c32ba4323831e00ac6d1',1,'SdSpiCard::readStart()']]], - ['readstatus',['readStatus',['../class_sd_spi_card.html#a91d0413599efe0d63c8c2dfe4a12d9ae',1,'SdSpiCard']]], - ['readstop',['readStop',['../class_sdio_card.html#a5bd3f206d790149340783135d08eb701',1,'SdioCard::readStop()'],['../class_sd_spi_card.html#afdac7c399fa1ba3f904cf503526e007e',1,'SdSpiCard::readStop()']]], - ['remove',['remove',['../class_fat_file.html#ac837a537fbcca14c7aa390c5fc9f4e7c',1,'FatFile::remove()'],['../class_fat_file.html#afe820bbb056863e91ec482961c8dc695',1,'FatFile::remove(FatFile *dirFile, const char *path)'],['../class_fat_file_system.html#abf7d7d0dab43083d5be10d70ff4669e4',1,'FatFileSystem::remove()']]], - ['rename',['rename',['../class_fat_file.html#a4b42f2454ff462555c07ea094a92a1e0',1,'FatFile::rename()'],['../class_fat_file_system.html#a0187891a24017b41bd7c5ba63e659e65',1,'FatFileSystem::rename()']]], - ['rewind',['rewind',['../class_fat_file.html#a5aac6e0b3cb08fc8b8668e916a8b0ca5',1,'FatFile::rewind()'],['../class_stdio_stream.html#ad985866675193d2ee1dde9e27b0d08da',1,'StdioStream::rewind()']]], - ['rewinddirectory',['rewindDirectory',['../class_file.html#ae1419603dea25a6c8480b941d7ac63a3',1,'File']]], - ['right',['right',['../ios_8h.html#aee80fd600c5c58a2bebbd48afdcf8280',1,'ios.h']]], - ['rmdir',['rmdir',['../class_fat_file.html#a9515bac181d33e7f0125e88fa2ccd283',1,'FatFile::rmdir()'],['../class_fat_file_system.html#aaed2edc7ff7fedb163458c870bb41b33',1,'FatFileSystem::rmdir()']]], - ['rmrfstar',['rmRfStar',['../class_fat_file.html#ac780a80526f86d3def701ecdc99d8bfe',1,'FatFile']]], - ['rootdirentrycount',['rootDirEntryCount',['../class_fat_volume.html#a31d0efaf3e47c9342da0dfb3735eecf1',1,'FatVolume']]], - ['rootdirstart',['rootDirStart',['../class_fat_volume.html#a372f1f1fab71f5744eaf538156abe64d',1,'FatVolume']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/mag_sel.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/mag_sel.png deleted file mode 100644 index 81f6040a..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/mag_sel.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/nomatches.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/nomatches.html deleted file mode 100644 index b1ded27e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
-
No Matches
-
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/pages_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/pages_0.html deleted file mode 100644 index d7528582..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/pages_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/pages_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/pages_0.js deleted file mode 100644 index b18ff997..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['arduino_20_25sdfat_20library',['Arduino %SdFat Library',['../index.html',1,'']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/related_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/related_0.html deleted file mode 100644 index 575b0401..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/related_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/related_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/related_0.js deleted file mode 100644 index 42581316..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/related_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['fatcache',['FatCache',['../class_fat_volume.html#a1e97a7aed860b898c403cb29455b3fe7',1,'FatVolume']]], - ['fatfile',['FatFile',['../class_fat_volume.html#a18fb15a715ea85037ab802286853103e',1,'FatVolume']]], - ['fatfilesystem',['FatFileSystem',['../class_fat_volume.html#ac095954ff68b78a07c0cf5fabbb2db6f',1,'FatVolume']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/search.css b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/search.css deleted file mode 100644 index 3cf9df94..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/search.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/search.js deleted file mode 100644 index a554ab9c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program 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 2 of the License, or - (at your option) any later version. - - This program 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 this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_0.js deleted file mode 100644 index f638c2bc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['blockdriver',['BlockDriver',['../_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb',1,'BlockDriver.h']]], - ['bpb_5ft',['bpb_t',['../_fat_structs_8h.html#a5c8af240713e05e7e6c959006ced35fb',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_1.html deleted file mode 100644 index 7af807db..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_1.js deleted file mode 100644 index d85cd764..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['dir_5ft',['dir_t',['../_fat_structs_8h.html#a803db59d4e16a0c54a647afc6a7954e3',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_2.html deleted file mode 100644 index 745d076c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_2.js deleted file mode 100644 index c41622d8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['fat32_5fboot_5ft',['fat32_boot_t',['../_fat_structs_8h.html#a38fa081d004647a828095d31b07ec491',1,'FatStructs.h']]], - ['fat32_5ffsinfo_5ft',['fat32_fsinfo_t',['../_fat_structs_8h.html#a6030ed0fce3a819326a2548407fc8556',1,'FatStructs.h']]], - ['fat_5fboot_5ft',['fat_boot_t',['../_fat_structs_8h.html#aedac4595ee08198da26c14b9891a07d5',1,'FatStructs.h']]], - ['fmtflags',['fmtflags',['../classios__base.html#ac9a54e52cef4f01ac0afd8ae896a3413',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_3.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_3.html deleted file mode 100644 index def60a5b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_3.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_3.js deleted file mode 100644 index 14dc331b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['iostate',['iostate',['../classios__base.html#aef19291eeae0f072ac42c6ba1fe3033c',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_4.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_4.html deleted file mode 100644 index ef733ad2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_4.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_4.js deleted file mode 100644 index 54a61258..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ldir_5ft',['ldir_t',['../_fat_structs_8h.html#aa1b540ee1eedd1aa9b267d11cba0d9e2',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_5.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_5.html deleted file mode 100644 index 94db6d21..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_5.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_5.js deleted file mode 100644 index 765b832d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mbr_5ft',['mbr_t',['../_fat_structs_8h.html#a7c429e5097f101c8c97663d6c4155bd9',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_6.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_6.html deleted file mode 100644 index bda8ea1c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_6.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_6.js deleted file mode 100644 index d83d28fc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_6.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['off_5ftype',['off_type',['../classios__base.html#a45de7cca0d01da781f4b886179c65c22',1,'ios_base']]], - ['openmode',['openmode',['../classios__base.html#aaa192ec0dccc43050715553a34644523',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_7.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_7.html deleted file mode 100644 index 565b233f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_7.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_7.js deleted file mode 100644 index d9134e72..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['part_5ft',['part_t',['../_fat_structs_8h.html#a37251e7d5c69a159be727a3fc8c9d0e6',1,'FatStructs.h']]], - ['pos_5ftype',['pos_type',['../classios__base.html#abe85cf1f181b8bce8022f05ab76aae7f',1,'ios_base']]], - ['print_5ft',['print_t',['../_fat_volume_8h.html#ac62f6449331cfe1a71f29be30efe7890',1,'FatVolume.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_8.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_8.html deleted file mode 100644 index 3063e032..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_8.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_8.js deleted file mode 100644 index e8ea77a9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/typedefs_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['streamsize',['streamsize',['../classios__base.html#a82836e1d3cc603fba8f0b54d323a2dff',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_0.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_0.html deleted file mode 100644 index 51f7bd6b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_0.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_0.js deleted file mode 100644 index c3aa3dc7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5f_5fbrkval',['__brkval',['../_free_stack_8h.html#ad193a2cc121e0d4614a1c21eb463fb56',1,'FreeStack.h']]], - ['_5f_5fbss_5fend',['__bss_end',['../_free_stack_8h.html#adbad17f740c2d7f2bc4833681c93c932',1,'FreeStack.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_1.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_1.html deleted file mode 100644 index f46154d8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_1.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_1.js deleted file mode 100644 index 4f7759a9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['adjustfield',['adjustfield',['../classios__base.html#adaaf735381254aa096ebe3605e8bbd0a',1,'ios_base']]], - ['app',['app',['../classios__base.html#a8380aac3c405730708888fdc68905820',1,'ios_base']]], - ['ate',['ate',['../classios__base.html#aa434355c165500065276d955d8b36e99',1,'ios_base']]], - ['attr',['attr',['../structlong_directory_entry.html#aa36bf1210d0c2b3b80948e5f697eb02e',1,'longDirectoryEntry']]], - ['attributes',['attributes',['../structdirectory_entry.html#a16c6cde55c8175c90935c386f1cfb21a',1,'directoryEntry']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_10.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_10.html deleted file mode 100644 index b62b717e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_10.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_10.js deleted file mode 100644 index 887ae386..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_10.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['reserved1',['reserved1',['../structfat__boot.html#affa7e6efb3ccea19ba7ea0ddadce7463',1,'fat_boot::reserved1()'],['../structfat32__boot.html#a7075c3c00aae071110fd1acb2e6fd599',1,'fat32_boot::reserved1()'],['../structfat32__fsinfo.html#ac24bd4801a60a54e5133ed1bb71bcdaa',1,'fat32_fsinfo::reserved1()']]], - ['reserved2',['reserved2',['../structfat32__fsinfo.html#a9ec0e2756cd7e169268798a558df3814',1,'fat32_fsinfo']]], - ['reservednt',['reservedNT',['../structdirectory_entry.html#afe7d00be85f3b78549b21610050da52b',1,'directoryEntry']]], - ['reservedsectorcount',['reservedSectorCount',['../structbios_parm_block.html#adb4830c345b27293c7d7b97b77f52e01',1,'biosParmBlock::reservedSectorCount()'],['../structfat__boot.html#a13f272a8f780fb43a400f873a3fd7b73',1,'fat_boot::reservedSectorCount()'],['../structfat32__boot.html#a8e490f05ad3552dfbdf8f9332d287ba0',1,'fat32_boot::reservedSectorCount()']]], - ['right',['right',['../classios__base.html#aec064a12730b5d87e718c1864e29ac64',1,'ios_base']]], - ['rootdirentrycount',['rootDirEntryCount',['../structbios_parm_block.html#a9a1b24bb2dbb3a123c4ffc703954d71d',1,'biosParmBlock::rootDirEntryCount()'],['../structfat__boot.html#a2124f89e12307df944f08e6657dbf4af',1,'fat_boot::rootDirEntryCount()'],['../structfat32__boot.html#a94185496fb56c6e0e8078fc3803e9142',1,'fat32_boot::rootDirEntryCount()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_11.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_11.html deleted file mode 100644 index 2ce8561a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_11.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_11.js deleted file mode 100644 index 6e928ac2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_11.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['sectorspercluster',['sectorsPerCluster',['../structbios_parm_block.html#a45d5e2d8c93a028a074e8ce3dc751ab5',1,'biosParmBlock::sectorsPerCluster()'],['../structfat__boot.html#ab3063726125b16a2ccad719548d79abd',1,'fat_boot::sectorsPerCluster()'],['../structfat32__boot.html#a63ded2780732f166f7b7d36bc6aed702',1,'fat32_boot::sectorsPerCluster()']]], - ['sectorsperfat16',['sectorsPerFat16',['../structbios_parm_block.html#a24d6e5a9069491d5db6dbe747336985b',1,'biosParmBlock::sectorsPerFat16()'],['../structfat__boot.html#a0d5ab13399759acfa571e49b85600db1',1,'fat_boot::sectorsPerFat16()'],['../structfat32__boot.html#aeaa78272cd42b162ea448e1642f75cab',1,'fat32_boot::sectorsPerFat16()']]], - ['sectorsperfat32',['sectorsPerFat32',['../structbios_parm_block.html#ad80429df03a6b80f79b18cb6e1008d64',1,'biosParmBlock::sectorsPerFat32()'],['../structfat32__boot.html#aa00db084ff2f7e25febef321469adeb9',1,'fat32_boot::sectorsPerFat32()']]], - ['sectorspertrack',['sectorsPerTrack',['../structfat__boot.html#a6d5ceaf374e0607be8b8162bf657f282',1,'fat_boot::sectorsPerTrack()'],['../structfat32__boot.html#a9525b2e63f84a5cf62ea20199cedf5de',1,'fat32_boot::sectorsPerTrack()']]], - ['sectorspertrtack',['sectorsPerTrtack',['../structbios_parm_block.html#a7c27cb7f66c2c9d5266d896e8df227c7',1,'biosParmBlock']]], - ['seqpos',['seqPos',['../structfname__t.html#a96b7c779dec8dd568be3290451078a4e',1,'fname_t']]], - ['sfn',['sfn',['../structfname__t.html#a37ed0c108b1feb81be4f8c041a4336bd',1,'fname_t']]], - ['showbase',['showbase',['../classios__base.html#a7e3373ab307feecfc228bc9bdb29cd01',1,'ios_base']]], - ['showpoint',['showpoint',['../classios__base.html#ac9bb172682e157f037bd7fb82a236ee6',1,'ios_base']]], - ['showpos',['showpos',['../classios__base.html#a7bfa4a883933105d10f8ce2693cb9f21',1,'ios_base']]], - ['skipws',['skipws',['../classios__base.html#a64977c777d6e45826d1be9763f17f824',1,'ios_base']]], - ['stream_5fbuf_5fsize',['STREAM_BUF_SIZE',['../_stdio_stream_8h.html#ad9a6150ef11e2616c1a99bc777df17d3',1,'StdioStream.h']]], - ['structsignature',['structSignature',['../structfat32__fsinfo.html#aa4a9ed657a0f58a7a1c75760c3a79fd4',1,'fat32_fsinfo']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_12.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_12.html deleted file mode 100644 index bba5857f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_12.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_12.js deleted file mode 100644 index 1307ab9a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_12.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['tailsignature',['tailSignature',['../structfat32__fsinfo.html#a484dd16425e4e687dc914d12309470e0',1,'fat32_fsinfo']]], - ['totalsectors',['totalSectors',['../structpartition_table.html#acf96e59ce648a9a0cf35751c3b6d7730',1,'partitionTable']]], - ['totalsectors16',['totalSectors16',['../structbios_parm_block.html#a686c686fde2fb109bea120f2f434db87',1,'biosParmBlock::totalSectors16()'],['../structfat__boot.html#ac8bd40dd9186882e423e10b0c83e89b7',1,'fat_boot::totalSectors16()'],['../structfat32__boot.html#acbcae2f15475a886f674f932da1deb3f',1,'fat32_boot::totalSectors16()']]], - ['totalsectors32',['totalSectors32',['../structbios_parm_block.html#abead42e130c40e2aa535202e7cb07578',1,'biosParmBlock::totalSectors32()'],['../structfat__boot.html#addeb2dd8f78418edbf544303d44133e2',1,'fat_boot::totalSectors32()'],['../structfat32__boot.html#ab79466016103c2762c6b057dd458d434',1,'fat32_boot::totalSectors32()']]], - ['trunc',['trunc',['../classios__base.html#ae62b8972f37509819e1384214071194b',1,'ios_base']]], - ['type',['type',['../structpartition_table.html#a3861cf276c728c4dd30ca04e74197ee8',1,'partitionTable::type()'],['../structlong_directory_entry.html#a9adb019dbf24cce65c8d1419cd000f91',1,'longDirectoryEntry::type()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_13.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_13.html deleted file mode 100644 index c92cbcc3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_13.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_13.js deleted file mode 100644 index 9ca0b15b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_13.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['ungetc_5fbuf_5fsize',['UNGETC_BUF_SIZE',['../_stdio_stream_8h.html#a785dd413c0d7b05f95df82d3453ecacd',1,'StdioStream.h']]], - ['uppercase',['uppercase',['../classios__base.html#ade3db1fe3249e87f4c47a9a8916793d9',1,'ios_base']]], - ['usuallyzero',['usuallyZero',['../structmaster_boot_record.html#afacfc863e98f64053cd9459c6dec948f',1,'masterBootRecord']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_14.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_14.html deleted file mode 100644 index 2c462043..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_14.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_14.js deleted file mode 100644 index abe9f74a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_14.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['volumelabel',['volumeLabel',['../structfat__boot.html#a9ee733f1b1abc0210ec8f9676bba2218',1,'fat_boot::volumeLabel()'],['../structfat32__boot.html#a8e6349f46344145a7320637a58107b3b',1,'fat32_boot::volumeLabel()']]], - ['volumeserialnumber',['volumeSerialNumber',['../structfat__boot.html#ac05e88a0d27f0340ba008834361d2b20',1,'fat_boot::volumeSerialNumber()'],['../structfat32__boot.html#a20768678da224faefd8acf12cabdbfb8',1,'fat32_boot::volumeSerialNumber()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_15.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_15.html deleted file mode 100644 index c86a5fd6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_15.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_15.js deleted file mode 100644 index 41474a9b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['w',['w',['../structsetw.html#ab48d915a24d3f3365c9eb76e138a6f4e',1,'setw']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_2.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_2.html deleted file mode 100644 index 15275b7a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_2.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_2.js deleted file mode 100644 index bee02c7f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_2.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['badbit',['badbit',['../classios__base.html#ac8c2c8f2f6bc9e6ce101c20e88ebce35',1,'ios_base']]], - ['basefield',['basefield',['../classios__base.html#a75ce5482aa207d7aa0265d138b50a102',1,'ios_base']]], - ['begincylinderhigh',['beginCylinderHigh',['../structpartition_table.html#a744f0c7f9ad4c426b10de085b4f52392',1,'partitionTable']]], - ['begincylinderlow',['beginCylinderLow',['../structpartition_table.html#a941fcb4df298f5f73ccca011bf40787a',1,'partitionTable']]], - ['beginhead',['beginHead',['../structpartition_table.html#a7d426694b8cf2151ae38568670a8c845',1,'partitionTable']]], - ['beginsector',['beginSector',['../structpartition_table.html#ae201c11d9671c9efc307c654a2b6c026',1,'partitionTable']]], - ['binary',['binary',['../classios__base.html#ac99947c17c2936d15243671366605602',1,'ios_base']]], - ['boolalpha',['boolalpha',['../classios__base.html#afa74acd95d4bbc7cc3551251aac2bf00',1,'ios_base']]], - ['boot',['boot',['../structpartition_table.html#adf386afb1f33046d8b6a1a0afa780ec9',1,'partitionTable']]], - ['bootcode',['bootCode',['../structfat__boot.html#acf9f5d9f61a6e680e11849f957ecf782',1,'fat_boot::bootCode()'],['../structfat32__boot.html#a7a74880066860140386edf3d9278b9f7',1,'fat32_boot::bootCode()']]], - ['bootsectorsig0',['bootSectorSig0',['../structfat__boot.html#a7951b888af4f357b84dd40af2ef7f29d',1,'fat_boot::bootSectorSig0()'],['../structfat32__boot.html#a1cb46a5427b641a6017a082bc56df1be',1,'fat32_boot::bootSectorSig0()']]], - ['bootsectorsig1',['bootSectorSig1',['../structfat__boot.html#afe8f58668ff594bb2022ce7c06b7726c',1,'fat_boot::bootSectorSig1()'],['../structfat32__boot.html#a53bc302a398f02a86d3b28f25a5ec8e2',1,'fat32_boot::bootSectorSig1()']]], - ['bootsig0',['BOOTSIG0',['../_fat_structs_8h.html#acb7f0c892eb84c121c5698b2605e95e3',1,'FatStructs.h']]], - ['bootsig1',['BOOTSIG1',['../_fat_structs_8h.html#a52f90172e11e828b411c803f29853753',1,'FatStructs.h']]], - ['bootsignature',['bootSignature',['../structfat__boot.html#a712dc388c530e91e4a692e7102d6bdc8',1,'fat_boot::bootSignature()'],['../structfat32__boot.html#ab79a1205277ecab05526fb0bac6e42f6',1,'fat32_boot::bootSignature()']]], - ['bytespersector',['bytesPerSector',['../structbios_parm_block.html#aec24d316af486445d55da14cbbfa6bf4',1,'biosParmBlock::bytesPerSector()'],['../structfat__boot.html#a60b2461f8ebf0ad295a95094e1bd7d65',1,'fat_boot::bytesPerSector()'],['../structfat32__boot.html#a03c7086a8c988257a6678179a67a3fee',1,'fat32_boot::bytesPerSector()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_3.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_3.html deleted file mode 100644 index fbc36712..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_3.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_3.js deleted file mode 100644 index e1851c22..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_3.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['c',['c',['../structsetfill.html#a42ffb4e6135c1274ae827cfed7793a82',1,'setfill']]], - ['cache_5ffor_5fread',['CACHE_FOR_READ',['../class_fat_cache.html#ab4b446515ff9a0cebc747630ddd10c93',1,'FatCache']]], - ['cache_5ffor_5fwrite',['CACHE_FOR_WRITE',['../class_fat_cache.html#a81cb572f33443bd6aee9aa33ec395d0f',1,'FatCache']]], - ['cache_5foption_5fno_5fread',['CACHE_OPTION_NO_READ',['../class_fat_cache.html#adf974f55e53ee0aaa85abb0d7d67181c',1,'FatCache']]], - ['cache_5freserve_5ffor_5fwrite',['CACHE_RESERVE_FOR_WRITE',['../class_fat_cache.html#a49d2896ff525ab77852f76df5c2a09c2',1,'FatCache']]], - ['cache_5fstatus_5fdirty',['CACHE_STATUS_DIRTY',['../class_fat_cache.html#aac8c38e5c545d0f80b13d816117f626e',1,'FatCache']]], - ['cache_5fstatus_5fmask',['CACHE_STATUS_MASK',['../class_fat_cache.html#ab70dc4a2e387f0e9bf392044c702ae32',1,'FatCache']]], - ['cache_5fstatus_5fmirror_5ffat',['CACHE_STATUS_MIRROR_FAT',['../class_fat_cache.html#a45236e1c0a2a098f08d3add0e4b1467a',1,'FatCache']]], - ['chksum',['chksum',['../structlong_directory_entry.html#a60c35531bc0e12f2d764d290244f8cc9',1,'longDirectoryEntry']]], - ['cluster',['cluster',['../struct_fat_pos__t.html#a7b50657b0debaf0e6231af2c74a655fe',1,'FatPos_t']]], - ['codearea',['codeArea',['../structmaster_boot_record.html#a26ca1fb4ebbff2cc1a54153b1dfcd688',1,'masterBootRecord']]], - ['creationdate',['creationDate',['../structdirectory_entry.html#a7b43372794655fe6604d3c17c02302fe',1,'directoryEntry']]], - ['creationtime',['creationTime',['../structdirectory_entry.html#a622bfa70c2cd9006108d7473d737a953',1,'directoryEntry']]], - ['creationtimetenths',['creationTimeTenths',['../structdirectory_entry.html#aa5e1ce5b411b88f005b28a3e7c7c5af6',1,'directoryEntry']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_4.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_4.html deleted file mode 100644 index 8067e67f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_4.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_4.js deleted file mode 100644 index 6ca820e8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_4.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['data',['data',['../unioncache__t.html#ae675b7a3a87d809070de111d1d1f1d81',1,'cache_t']]], - ['dec',['dec',['../classios__base.html#a2826aed005e7c1f6858060cddae7971a',1,'ios_base']]], - ['dir',['dir',['../unioncache__t.html#a7396fdbdb7c52bd1d72c5329ff32acd1',1,'cache_t']]], - ['dir_5fatt_5farchive',['DIR_ATT_ARCHIVE',['../_fat_structs_8h.html#a0d0745a2bc191d12f6e3294a890c4b13',1,'FatStructs.h']]], - ['dir_5fatt_5fdefined_5fbits',['DIR_ATT_DEFINED_BITS',['../_fat_structs_8h.html#ad0c6ed5cf186a40f98cc3929b52cf8ee',1,'FatStructs.h']]], - ['dir_5fatt_5fdirectory',['DIR_ATT_DIRECTORY',['../_fat_structs_8h.html#a5fe039a9af7304fc97a0e903acd217f7',1,'FatStructs.h']]], - ['dir_5fatt_5ffile_5ftype_5fmask',['DIR_ATT_FILE_TYPE_MASK',['../_fat_structs_8h.html#af006ada1b85a9761dd9538273c1ee97f',1,'FatStructs.h']]], - ['dir_5fatt_5fhidden',['DIR_ATT_HIDDEN',['../_fat_structs_8h.html#aed394afe98ff4b7876a5815319b6ef94',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname',['DIR_ATT_LONG_NAME',['../_fat_structs_8h.html#a0039e1903007eb7383a9fe4b80a3569e',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname_5fmask',['DIR_ATT_LONG_NAME_MASK',['../_fat_structs_8h.html#a74ddbd24c315a682449a51a2a35adf39',1,'FatStructs.h']]], - ['dir_5fatt_5fread_5fonly',['DIR_ATT_READ_ONLY',['../_fat_structs_8h.html#ae5efa2fd21e8a563a3a45f8a52538cde',1,'FatStructs.h']]], - ['dir_5fatt_5fsystem',['DIR_ATT_SYSTEM',['../_fat_structs_8h.html#a31c7e5c119c9ebc1237746c985cf385d',1,'FatStructs.h']]], - ['dir_5fatt_5fvolume_5fid',['DIR_ATT_VOLUME_ID',['../_fat_structs_8h.html#a410501be78b30a75224dd4e81a4a1105',1,'FatStructs.h']]], - ['dir_5fname_5f0xe5',['DIR_NAME_0XE5',['../_fat_structs_8h.html#a1696d3db9949d6e22d1c2c595fd14669',1,'FatStructs.h']]], - ['dir_5fname_5fdeleted',['DIR_NAME_DELETED',['../_fat_structs_8h.html#a8c08d4823047505f3231e86c5033d08c',1,'FatStructs.h']]], - ['dir_5fname_5ffree',['DIR_NAME_FREE',['../_fat_structs_8h.html#a0f1f0001102ae59b9e7c9e3b04cc06d8',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fbase',['DIR_NT_LC_BASE',['../_fat_structs_8h.html#a39f9b8960dba007b537e9b71c25384fe',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fext',['DIR_NT_LC_EXT',['../_fat_structs_8h.html#a8766a8bbab6ad3da38c1b308545d7572',1,'FatStructs.h']]], - ['disksignature',['diskSignature',['../structmaster_boot_record.html#a77151c641444c0653ff71a253f0423ef',1,'masterBootRecord']]], - ['drivenumber',['driveNumber',['../structfat__boot.html#aebd280b93563b75b9612d3db844b0d16',1,'fat_boot::driveNumber()'],['../structfat32__boot.html#aca415c1a6eb1c242d460a6d0ffa9ebec',1,'fat32_boot::driveNumber()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_5.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_5.html deleted file mode 100644 index 7e95e946..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_5.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_5.js deleted file mode 100644 index 09381d7b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_5.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['endcylinderhigh',['endCylinderHigh',['../structpartition_table.html#a32fea225b8ffd925ad919ffc56e9abda',1,'partitionTable']]], - ['endcylinderlow',['endCylinderLow',['../structpartition_table.html#ad7829e34be70084abe145227b0d18274',1,'partitionTable']]], - ['endhead',['endHead',['../structpartition_table.html#a4a3945bfd3a29f474984cb9f180dbd51',1,'partitionTable']]], - ['endsector',['endSector',['../structpartition_table.html#a27cdc4320c418ed0d833ab163ed77ad7',1,'partitionTable']]], - ['eofbit',['eofbit',['../classios__base.html#af75072b7ef2a931c77a2cb8e7ccda460',1,'ios_base']]], - ['extended_5fboot_5fsig',['EXTENDED_BOOT_SIG',['../_fat_structs_8h.html#aefadfae26e4cc8d57c1ff727a9d1cd20',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_6.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_6.html deleted file mode 100644 index 3d398e62..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_6.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_6.js deleted file mode 100644 index fecfaa21..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_6.js +++ /dev/null @@ -1,39 +0,0 @@ -var searchData= -[ - ['failbit',['failbit',['../classios__base.html#a36157154001bcce17827db6786e35efd',1,'ios_base']]], - ['fat12eoc',['FAT12EOC',['../_fat_structs_8h.html#af314c45d1d37d09c9e44847326232466',1,'FatStructs.h']]], - ['fat12eoc_5fmin',['FAT12EOC_MIN',['../_fat_structs_8h.html#a48951911b522ebf72bf5561c3402aa15',1,'FatStructs.h']]], - ['fat16',['fat16',['../unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887',1,'cache_t']]], - ['fat16eoc',['FAT16EOC',['../_fat_structs_8h.html#afcd95ebc621a46c82b9997c8b9208550',1,'FatStructs.h']]], - ['fat16eoc_5fmin',['FAT16EOC_MIN',['../_fat_structs_8h.html#a2f549b850b74666ba7d922bcb373896e',1,'FatStructs.h']]], - ['fat32',['fat32',['../unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83',1,'cache_t']]], - ['fat32backbootblock',['fat32BackBootBlock',['../structbios_parm_block.html#a7a4e93790b6e66f090c1551020b099bd',1,'biosParmBlock::fat32BackBootBlock()'],['../structfat32__boot.html#ac93acdae62dab5cd1f7a35187992dbf2',1,'fat32_boot::fat32BackBootBlock()']]], - ['fat32eoc',['FAT32EOC',['../_fat_structs_8h.html#a67a9dbf970f43fadd41a6a9fede60c47',1,'FatStructs.h']]], - ['fat32eoc_5fmin',['FAT32EOC_MIN',['../_fat_structs_8h.html#a8f97a312e990c3f4faf7e98c3256aae5',1,'FatStructs.h']]], - ['fat32flags',['fat32Flags',['../structbios_parm_block.html#a626ac3dc473d764688b8171916eecf44',1,'biosParmBlock::fat32Flags()'],['../structfat32__boot.html#aaa31a140202021bf33aed72765531b3f',1,'fat32_boot::fat32Flags()']]], - ['fat32fsinfo',['fat32FSInfo',['../structbios_parm_block.html#a25ea392d8284e6c1d007cb8fcad4b86c',1,'biosParmBlock::fat32FSInfo()'],['../structfat32__boot.html#a03ff6d1197c08688f20c7aad40206bc4',1,'fat32_boot::fat32FSInfo()']]], - ['fat32mask',['FAT32MASK',['../_fat_structs_8h.html#a7491c79fff0bda3b026ffa098a28d6df',1,'FatStructs.h']]], - ['fat32reserved',['fat32Reserved',['../structbios_parm_block.html#a351f87fe3446b1a71963a30bbdc23218',1,'biosParmBlock::fat32Reserved()'],['../structfat32__boot.html#a3343ad07c664fb7564d68c5194ea7da9',1,'fat32_boot::fat32Reserved()']]], - ['fat32rootcluster',['fat32RootCluster',['../structbios_parm_block.html#a77ca01bd99f746e05dd872cbd2979937',1,'biosParmBlock::fat32RootCluster()'],['../structfat32__boot.html#aa216677f22a95dd86ed2e61604883a13',1,'fat32_boot::fat32RootCluster()']]], - ['fat32version',['fat32Version',['../structbios_parm_block.html#abad4f6f0c14dad9f5b7d43de94e685e8',1,'biosParmBlock::fat32Version()'],['../structfat32__boot.html#a29c37e1163772493efb524c5ca0e1aa8',1,'fat32_boot::fat32Version()']]], - ['fat_5fdefault_5fdate',['FAT_DEFAULT_DATE',['../_fat_structs_8h.html#a42eeb0322bced1f7b527c707f8bd54a4',1,'FatStructs.h']]], - ['fat_5fdefault_5ftime',['FAT_DEFAULT_TIME',['../_fat_structs_8h.html#a23c2510407ec3be457e0e4807644deb2',1,'FatStructs.h']]], - ['fatcount',['fatCount',['../structbios_parm_block.html#a7c03f147c3fb18f0df03d346050af13b',1,'biosParmBlock::fatCount()'],['../structfat__boot.html#a04d3b6a45acf28a80ff909dc1b33da2f',1,'fat_boot::fatCount()'],['../structfat32__boot.html#a7882fa8744bd171bfa1512bd442574bc',1,'fat32_boot::fatCount()']]], - ['fbs',['fbs',['../unioncache__t.html#ad1a4f1c0e8b8ca4d530427dbc920c764',1,'cache_t']]], - ['fbs32',['fbs32',['../unioncache__t.html#ad0613173ed4e83920eedfeb33102848a',1,'cache_t']]], - ['filesize',['fileSize',['../structdirectory_entry.html#ac2445d99b50f925f662952e0ccd26a02',1,'directoryEntry']]], - ['filesystemtype',['fileSystemType',['../structfat__boot.html#aee529e32908406866f3ec3c17c4632fa',1,'fat_boot::fileSystemType()'],['../structfat32__boot.html#a13ee6c63e17d634b6826bfdfa94cbd78',1,'fat32_boot::fileSystemType()']]], - ['firstclusterhigh',['firstClusterHigh',['../structdirectory_entry.html#a3b492598b2b05e8425d2a500443613bd',1,'directoryEntry']]], - ['firstclusterlow',['firstClusterLow',['../structdirectory_entry.html#a74bd660417a9c3501eae353326c14bb9',1,'directoryEntry']]], - ['firstsector',['firstSector',['../structpartition_table.html#a02bbdff840c854dc96fa0b6da8589d86',1,'partitionTable']]], - ['flags',['flags',['../structfname__t.html#a39c69edff13165c6e03b308104e7286d',1,'fname_t']]], - ['fname_5fflag_5flc_5fbase',['FNAME_FLAG_LC_BASE',['../_fat_file_8h.html#a79e43960e1b4eecf274f5faea9c3168c',1,'FatFile.h']]], - ['fname_5fflag_5flc_5fext',['FNAME_FLAG_LC_EXT',['../_fat_file_8h.html#a135b7572768b09661aa38afaceec7296',1,'FatFile.h']]], - ['fname_5fflag_5flost_5fchars',['FNAME_FLAG_LOST_CHARS',['../_fat_file_8h.html#acd45286b7dfc5ba68be18c8c3a9d298d',1,'FatFile.h']]], - ['fname_5fflag_5fmixed_5fcase',['FNAME_FLAG_MIXED_CASE',['../_fat_file_8h.html#a63994c21f3b723a55247f063a1b01c9c',1,'FatFile.h']]], - ['fname_5fflag_5fneed_5flfn',['FNAME_FLAG_NEED_LFN',['../_fat_file_8h.html#a1a041207a19d2fd9a1e2739343ccb29b',1,'FatFile.h']]], - ['freecount',['freeCount',['../structfat32__fsinfo.html#a6c2d84388c0a38a74f7682fd602492c7',1,'fat32_fsinfo']]], - ['fsinfo',['fsinfo',['../unioncache__t.html#a46c7b14586a6248824a97101111cbae1',1,'cache_t']]], - ['fsinfo_5flead_5fsig',['FSINFO_LEAD_SIG',['../_fat_structs_8h.html#a7a7a74a7315ad523e3b0c9dbd44d9a32',1,'FatStructs.h']]], - ['fsinfo_5fstruct_5fsig',['FSINFO_STRUCT_SIG',['../_fat_structs_8h.html#a9bf6b77df7bec6c49d81562c54371e81',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_7.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_7.html deleted file mode 100644 index 7b791460..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_7.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_7.js deleted file mode 100644 index 26e40521..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['goodbit',['goodbit',['../classios__base.html#a07a00996a6e525b88bdfe7935d5ead05',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_8.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_8.html deleted file mode 100644 index 8ebc5f6b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_8.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_8.js deleted file mode 100644 index ad9850fb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['headcount',['headCount',['../structbios_parm_block.html#a2324ca82e2a7da4d91f458fa32a6e239',1,'biosParmBlock::headCount()'],['../structfat__boot.html#ae31da876cd9f48de5268a129218df2c2',1,'fat_boot::headCount()'],['../structfat32__boot.html#a1a5298db692526bc64243766d6b54181',1,'fat32_boot::headCount()']]], - ['hex',['hex',['../classios__base.html#a3608e51eb0a80ea94ddadd5b713a3750',1,'ios_base']]], - ['hidddensectors',['hidddenSectors',['../structbios_parm_block.html#a9413199be8525190d40589f60c22bcab',1,'biosParmBlock::hidddenSectors()'],['../structfat__boot.html#a18f1b4c245fe7bd09f5a9430c005e23a',1,'fat_boot::hidddenSectors()'],['../structfat32__boot.html#ab10224aa4bba42b262fcd3479e279e1f',1,'fat32_boot::hidddenSectors()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_9.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_9.html deleted file mode 100644 index 12136613..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_9.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_9.js deleted file mode 100644 index 58cb2a24..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['in',['in',['../classios__base.html#ae5432e3c269064480652c4602f5f74ad',1,'ios_base']]], - ['internal',['internal',['../classios__base.html#afc720b7f6f461ec8e9cf5505059e5d7c',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_a.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_a.html deleted file mode 100644 index 24819a37..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_a.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_a.js deleted file mode 100644 index e043c526..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jump',['jump',['../structfat__boot.html#a83f9f2d1d0130f25f34c90dfc82e3751',1,'fat_boot::jump()'],['../structfat32__boot.html#a2d93fc193a64ecffbd71ead207fe4810',1,'fat32_boot::jump()']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_b.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_b.html deleted file mode 100644 index b306931e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_b.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_b.js deleted file mode 100644 index 76ff7e4b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_b.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['lastaccessdate',['lastAccessDate',['../structdirectory_entry.html#abca70dc5c5fcbe199fd78df010111331',1,'directoryEntry']]], - ['lastwritedate',['lastWriteDate',['../structdirectory_entry.html#a12b2e7cf87482a942a0b5d3df6c51468',1,'directoryEntry']]], - ['lastwritetime',['lastWriteTime',['../structdirectory_entry.html#a7bab435322d1928f66fbce53ee1f402d',1,'directoryEntry']]], - ['ldir_5fname1_5fdim',['LDIR_NAME1_DIM',['../_fat_structs_8h.html#af843af29c67dd30ca7c5684806bf02fc',1,'FatStructs.h']]], - ['ldir_5fname2_5fdim',['LDIR_NAME2_DIM',['../_fat_structs_8h.html#a99cae591c59e261f54617617e173e7e0',1,'FatStructs.h']]], - ['ldir_5fname3_5fdim',['LDIR_NAME3_DIM',['../_fat_structs_8h.html#a99fbd27fa9e5003a8d77ca7fc14d2090',1,'FatStructs.h']]], - ['ldir_5ford_5flast_5flong_5fentry',['LDIR_ORD_LAST_LONG_ENTRY',['../_fat_structs_8h.html#a8cfb60b9eaf04dcdc6e4f5a466af5540',1,'FatStructs.h']]], - ['leadsignature',['leadSignature',['../structfat32__fsinfo.html#aa8ee056cc1beb1355e15610c1beba5e3',1,'fat32_fsinfo']]], - ['left',['left',['../classios__base.html#ad364df9af2cfde1f40bd8e10c62bb215',1,'ios_base']]], - ['len',['len',['../structfname__t.html#a471184cc4c2671526d7d6fb80b2fe20c',1,'fname_t']]], - ['lfn',['lfn',['../structfname__t.html#a76ffd7abd5b7d3acf90b329c905770fd',1,'fname_t']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_c.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_c.html deleted file mode 100644 index 75709df8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_c.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_c.js deleted file mode 100644 index 9df4d76a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_c.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['mbr',['mbr',['../unioncache__t.html#a6ac10bfb1ebb1139c448456679663bb6',1,'cache_t']]], - ['mbrsig0',['mbrSig0',['../structmaster_boot_record.html#a42b0b413ecb21ac5314d4f6bca05308f',1,'masterBootRecord']]], - ['mbrsig1',['mbrSig1',['../structmaster_boot_record.html#aafbbcb4f6a2d1181c6458d4c9603df4f',1,'masterBootRecord']]], - ['mediatype',['mediaType',['../structbios_parm_block.html#a4237e7c3ba247516d546c149954e5042',1,'biosParmBlock::mediaType()'],['../structfat__boot.html#a63eaf7185663369af2527309634d3c90',1,'fat_boot::mediaType()'],['../structfat32__boot.html#a3b1ab5d2dc872c0d80cd4f34622de417',1,'fat32_boot::mediaType()']]], - ['mustbezero',['mustBeZero',['../structlong_directory_entry.html#af3055930e869875e49b32ef0b49c3649',1,'longDirectoryEntry']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_d.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_d.html deleted file mode 100644 index 34c80a48..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_d.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_d.js deleted file mode 100644 index 786e88ff..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_d.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['name',['name',['../structdirectory_entry.html#a05dc993ea55a1a742de5970541a31ecb',1,'directoryEntry']]], - ['name1',['name1',['../structlong_directory_entry.html#a629f1ca5ba2ccce6cac5295578b6e7b4',1,'longDirectoryEntry']]], - ['name2',['name2',['../structlong_directory_entry.html#ad763b5a3da4b8d326d9888493fbb819a',1,'longDirectoryEntry']]], - ['name3',['name3',['../structlong_directory_entry.html#a6f14c81b7d224dc4431217f92601257a',1,'longDirectoryEntry']]], - ['nextfree',['nextFree',['../structfat32__fsinfo.html#a539b3bb0a2ead9df417df9ac8b6b1606',1,'fat32_fsinfo']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_e.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_e.html deleted file mode 100644 index 4a1c8a61..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_e.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_e.js deleted file mode 100644 index e40f1bb1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['oct',['oct',['../classios__base.html#a4155540f8d3ffdb8d25a2f50ee4df08f',1,'ios_base']]], - ['oemid',['oemId',['../structfat__boot.html#adc034212201e879fea1eb44db43e55a5',1,'fat_boot::oemId()'],['../structfat32__boot.html#af623a473a960ea20904dce0edfb6bb9d',1,'fat32_boot::oemId()']]], - ['ord',['ord',['../structlong_directory_entry.html#a1b65e85dd63d0708cd1b875ce4e5e338',1,'longDirectoryEntry']]], - ['out',['out',['../classios__base.html#a4c1d517774c0d11af3424e90395f26ae',1,'ios_base']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_f.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_f.html deleted file mode 100644 index cc86fb59..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_f.js b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_f.js deleted file mode 100644 index 64a608f3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/search/variables_f.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['p',['p',['../structsetprecision.html#a7cb7bb355a303fa39a8035615bde9348',1,'setprecision']]], - ['part',['part',['../structmaster_boot_record.html#aa4e294e50f311635c10c92f4c99227c5',1,'masterBootRecord']]], - ['position',['position',['../struct_fat_pos__t.html#a8e14c6f2705777502b543452743eaa26',1,'FatPos_t']]] -]; diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/splitbar.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/splitbar.png deleted file mode 100644 index fe895f2c..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/splitbar.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/struct_fat_pos__t-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/struct_fat_pos__t-members.html deleted file mode 100644 index e41994bc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/struct_fat_pos__t-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatPos_t Member List
-
-
- -

This is the complete list of members for FatPos_t, including all inherited members.

- - - - -
clusterFatPos_t
FatPos_t() (defined in FatPos_t)FatPos_tinline
positionFatPos_t
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/struct_fat_pos__t.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/struct_fat_pos__t.html deleted file mode 100644 index 39ef0715..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/struct_fat_pos__t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: FatPos_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
FatPos_t Struct Reference
-
-
- -

Internal type for file position - do not use in user apps. - More...

- -

#include <FatFile.h>

- - - - - - -

-Public Attributes

uint32_t cluster
 
uint32_t position
 
-

Detailed Description

-

Internal type for file position - do not use in user apps.

-

Member Data Documentation

- -

◆ cluster

- -
-
- - - - -
uint32_t FatPos_t::cluster
-
-

cluster for position

- -
-
- -

◆ position

- -
-
- - - - -
uint32_t FatPos_t::position
-
-

stream position

- -
-
-
The documentation for this struct was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structbios_parm_block-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structbios_parm_block-members.html deleted file mode 100644 index e3cec4bb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structbios_parm_block-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
biosParmBlock Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structbios_parm_block.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structbios_parm_block.html deleted file mode 100644 index 935aa8ea..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structbios_parm_block.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - -SdFat: biosParmBlock Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
biosParmBlock Struct Reference
-
-
- -

BIOS parameter block. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint16_t bytesPerSector
 
uint16_t fat32BackBootBlock
 
uint16_t fat32Flags
 
uint16_t fat32FSInfo
 
uint8_t fat32Reserved [12]
 
uint32_t fat32RootCluster
 
uint16_t fat32Version
 
uint8_t fatCount
 
uint16_t headCount
 
uint32_t hidddenSectors
 
uint8_t mediaType
 
uint16_t reservedSectorCount
 
uint16_t rootDirEntryCount
 
uint8_t sectorsPerCluster
 
uint16_t sectorsPerFat16
 
uint32_t sectorsPerFat32
 
uint16_t sectorsPerTrtack
 
uint16_t totalSectors16
 
uint32_t totalSectors32
 
-

Detailed Description

-

BIOS parameter block.

-

The BIOS parameter block describes the physical layout of a FAT volume.

-

Member Data Documentation

- -

◆ bytesPerSector

- -
-
- - - - -
uint16_t biosParmBlock::bytesPerSector
-
-

Count of bytes per sector. This value may take on only the following values: 512, 1024, 2048 or 4096

- -
-
- -

◆ fat32BackBootBlock

- -
-
- - - - -
uint16_t biosParmBlock::fat32BackBootBlock
-
-

If nonzero, indicates the sector number in the reserved area of the volume of a copy of the boot record. Usually 6. No value other than 6 is recommended.

- -
-
- -

◆ fat32Flags

- -
-
- - - - -
uint16_t biosParmBlock::fat32Flags
-
-

This field is only defined for FAT32 media and does not exist on FAT12 and FAT16 media. Bits 0-3 – Zero-based number of active FAT. Only valid if mirroring is disabled. Bits 4-6 – Reserved. Bit 7 – 0 means the FAT is mirrored at runtime into all FATs. – 1 means only one FAT is active; it is the one referenced in bits 0-3. Bits 8-15 – Reserved.

- -
-
- -

◆ fat32FSInfo

- -
-
- - - - -
uint16_t biosParmBlock::fat32FSInfo
-
-

Sector number of FSINFO structure in the reserved area of the FAT32 volume. Usually 1.

- -
-
- -

◆ fat32Reserved

- -
-
- - - - -
uint8_t biosParmBlock::fat32Reserved[12]
-
-

Reserved for future expansion. Code that formats FAT32 volumes should always set all of the bytes of this field to 0.

- -
-
- -

◆ fat32RootCluster

- -
-
- - - - -
uint32_t biosParmBlock::fat32RootCluster
-
-

Cluster number of the first cluster of the root directory for FAT32. This usually 2 but not required to be 2.

- -
-
- -

◆ fat32Version

- -
-
- - - - -
uint16_t biosParmBlock::fat32Version
-
-

FAT32 version. High byte is major revision number. Low byte is minor revision number. Only 0.0 define.

- -
-
- -

◆ fatCount

- -
-
- - - - -
uint8_t biosParmBlock::fatCount
-
-

The count of FAT data structures on the volume. This field should always contain the value 2 for any FAT volume of any type.

- -
-
- -

◆ headCount

- -
-
- - - - -
uint16_t biosParmBlock::headCount
-
-

Number of heads for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ hidddenSectors

- -
-
- - - - -
uint32_t biosParmBlock::hidddenSectors
-
-

Count of hidden sectors preceding the partition that contains this FAT volume. This field is generally only relevant for media visible on interrupt 0x13.

- -
-
- -

◆ mediaType

- -
-
- - - - -
uint8_t biosParmBlock::mediaType
-
-

This dates back to the old MS-DOS 1.x media determination and is no longer usually used for anything. 0xF8 is the standard value for fixed (nonremovable) media. For removable media, 0xF0 is frequently used. Legal values are 0xF0 or 0xF8-0xFF.

- -
-
- -

◆ reservedSectorCount

- -
-
- - - - -
uint16_t biosParmBlock::reservedSectorCount
-
-

Number of sectors before the first FAT. This value must not be zero.

- -
-
- -

◆ rootDirEntryCount

- -
-
- - - - -
uint16_t biosParmBlock::rootDirEntryCount
-
-

For FAT12 and FAT16 volumes, this field contains the count of 32-byte directory entries in the root directory. For FAT32 volumes, this field must be set to 0. For FAT12 and FAT16 volumes, this value should always specify a count that when multiplied by 32 results in a multiple of bytesPerSector. FAT16 volumes should use the value 512.

- -
-
- -

◆ sectorsPerCluster

- -
-
- - - - -
uint8_t biosParmBlock::sectorsPerCluster
-
-

Number of sectors per allocation unit. This value must be a power of 2 that is greater than 0. The legal values are 1, 2, 4, 8, 16, 32, 64, and 128.

- -
-
- -

◆ sectorsPerFat16

- -
-
- - - - -
uint16_t biosParmBlock::sectorsPerFat16
-
-

Count of sectors occupied by one FAT on FAT12/FAT16 volumes. On FAT32 volumes this field must be 0, and sectorsPerFat32 contains the FAT size count.

- -
-
- -

◆ sectorsPerFat32

- -
-
- - - - -
uint32_t biosParmBlock::sectorsPerFat32
-
-

Count of sectors occupied by one FAT on FAT32 volumes.

- -
-
- -

◆ sectorsPerTrtack

- -
-
- - - - -
uint16_t biosParmBlock::sectorsPerTrtack
-
-

Sectors per track for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ totalSectors16

- -
-
- - - - -
uint16_t biosParmBlock::totalSectors16
-
-

This field is the old 16-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors32 must be nonzero. For FAT32 volumes, this field must be 0. For FAT12 and FAT16 volumes, this field contains the sector count, and totalSectors32 is 0 if the total sector count fits (is less than 0x10000).

- -
-
- -

◆ totalSectors32

- -
-
- - - - -
uint32_t biosParmBlock::totalSectors32
-
-

This field is the new 32-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors16 must be nonzero.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structdirectory_entry-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structdirectory_entry-members.html deleted file mode 100644 index 8dd5c063..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structdirectory_entry-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
directoryEntry Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structdirectory_entry.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structdirectory_entry.html deleted file mode 100644 index 02215818..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structdirectory_entry.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - -SdFat: directoryEntry Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
directoryEntry Struct Reference
-
-
- -

FAT short directory entry. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t attributes
 
uint16_t creationDate
 
uint16_t creationTime
 
uint8_t creationTimeTenths
 
uint32_t fileSize
 
uint16_t firstClusterHigh
 
uint16_t firstClusterLow
 
uint16_t lastAccessDate
 
uint16_t lastWriteDate
 
uint16_t lastWriteTime
 
uint8_t name [11]
 
uint8_t reservedNT
 
-

Detailed Description

-

FAT short directory entry.

-

Short means short 8.3 name, not the entry size.

-

Date Format. A FAT directory entry date stamp is a 16-bit field that is basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the 16-bit word):

-

Bits 9-15: Count of years from 1980, valid value range 0-127 inclusive (1980-2107).

-

Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive.

-

Bits 0-4: Day of month, valid value range 1-31 inclusive.

-

Time Format. A FAT directory entry time stamp is a 16-bit field that has a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the 16-bit word).

-

Bits 11-15: Hours, valid value range 0-23 inclusive.

-

Bits 5-10: Minutes, valid value range 0-59 inclusive.

-

Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds).

-

The valid time range is from Midnight 00:00:00 to 23:59:58.

-

Member Data Documentation

- -

◆ attributes

- -
-
- - - - -
uint8_t directoryEntry::attributes
-
-

Entry attributes.

-

The upper two bits of the attribute byte are reserved and should always be set to 0 when a file is created and never modified or looked at after that. See defines that begin with DIR_ATT_.

- -
-
- -

◆ creationDate

- -
-
- - - - -
uint16_t directoryEntry::creationDate
-
-

Date file was created.

- -
-
- -

◆ creationTime

- -
-
- - - - -
uint16_t directoryEntry::creationTime
-
-

Time file was created.

- -
-
- -

◆ creationTimeTenths

- -
-
- - - - -
uint8_t directoryEntry::creationTimeTenths
-
-

The granularity of the seconds part of creationTime is 2 seconds so this field is a count of tenths of a second and its valid value range is 0-199 inclusive. (WHG note - seems to be hundredths)

- -
-
- -

◆ fileSize

- -
-
- - - - -
uint32_t directoryEntry::fileSize
-
-

32-bit unsigned holding this file's size in bytes.

- -
-
- -

◆ firstClusterHigh

- -
-
- - - - -
uint16_t directoryEntry::firstClusterHigh
-
-

High word of this entry's first cluster number (always 0 for a FAT12 or FAT16 volume).

- -
-
- -

◆ firstClusterLow

- -
-
- - - - -
uint16_t directoryEntry::firstClusterLow
-
-

Low word of this entry's first cluster number.

- -
-
- -

◆ lastAccessDate

- -
-
- - - - -
uint16_t directoryEntry::lastAccessDate
-
-

Last access date. Note that there is no last access time, only a date. This is the date of last read or write. In the case of a write, this should be set to the same date as lastWriteDate.

- -
-
- -

◆ lastWriteDate

- -
-
- - - - -
uint16_t directoryEntry::lastWriteDate
-
-

Date of last write. File creation is considered a write.

- -
-
- -

◆ lastWriteTime

- -
-
- - - - -
uint16_t directoryEntry::lastWriteTime
-
-

Time of last write. File creation is considered a write.

- -
-
- -

◆ name

- -
-
- - - - -
uint8_t directoryEntry::name[11]
-
-

Short 8.3 name.

-

The first eight bytes contain the file name with blank fill. The last three bytes contain the file extension with blank fill.

- -
-
- -

◆ reservedNT

- -
-
- - - - -
uint8_t directoryEntry::reservedNT
-
-

Reserved for use by Windows NT. Set value to 0 when a file is created and never modify or look at it after that.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__boot-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__boot-members.html deleted file mode 100644 index 69a90f4c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__boot-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fat32_boot Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__boot.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__boot.html deleted file mode 100644 index 74489777..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__boot.html +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - - -SdFat: fat32_boot Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fat32_boot Struct Reference
-
-
- -

Boot sector for a FAT32 volume. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t bootCode [420]
 
uint8_t bootSectorSig0
 
uint8_t bootSectorSig1
 
uint8_t bootSignature
 
uint16_t bytesPerSector
 
uint8_t driveNumber
 
uint16_t fat32BackBootBlock
 
uint16_t fat32Flags
 
uint16_t fat32FSInfo
 
uint8_t fat32Reserved [12]
 
uint32_t fat32RootCluster
 
uint16_t fat32Version
 
uint8_t fatCount
 
char fileSystemType [8]
 
uint16_t headCount
 
uint32_t hidddenSectors
 
uint8_t jump [3]
 
uint8_t mediaType
 
char oemId [8]
 
uint8_t reserved1
 
uint16_t reservedSectorCount
 
uint16_t rootDirEntryCount
 
uint8_t sectorsPerCluster
 
uint16_t sectorsPerFat16
 
uint32_t sectorsPerFat32
 
uint16_t sectorsPerTrack
 
uint16_t totalSectors16
 
uint32_t totalSectors32
 
char volumeLabel [11]
 
uint32_t volumeSerialNumber
 
-

Detailed Description

-

Boot sector for a FAT32 volume.

-

Member Data Documentation

- -

◆ bootCode

- -
-
- - - - -
uint8_t fat32_boot::bootCode[420]
-
-

X86 boot code

- -
-
- -

◆ bootSectorSig0

- -
-
- - - - -
uint8_t fat32_boot::bootSectorSig0
-
-

must be 0X55

- -
-
- -

◆ bootSectorSig1

- -
-
- - - - -
uint8_t fat32_boot::bootSectorSig1
-
-

must be 0XAA

- -
-
- -

◆ bootSignature

- -
-
- - - - -
uint8_t fat32_boot::bootSignature
-
-

0X29 if next three fields are valid

- -
-
- -

◆ bytesPerSector

- -
-
- - - - -
uint16_t fat32_boot::bytesPerSector
-
-

The size of a hardware sector. Valid decimal values for this field are 512, 1024, 2048, and 4096. For most disks used in the United States, the value of this field is 512.

- -
-
- -

◆ driveNumber

- -
-
- - - - -
uint8_t fat32_boot::driveNumber
-
-

Related to the BIOS physical drive number. Floppy drives are identified as 0x00 and physical hard disks are identified as 0x80, regardless of the number of physical disk drives. Typically, this value is set prior to issuing an INT 13h BIOS call to specify the device to access. The value is only relevant if the device is a boot device.

- -
-
- -

◆ fat32BackBootBlock

- -
-
- - - - -
uint16_t fat32_boot::fat32BackBootBlock
-
-

If non-zero, indicates the sector number in the reserved area of the volume of a copy of the boot record. Usually 6. No value other than 6 is recommended.

- -
-
- -

◆ fat32Flags

- -
-
- - - - -
uint16_t fat32_boot::fat32Flags
-
-

This field is only defined for FAT32 media and does not exist on FAT12 and FAT16 media. Bits 0-3 – Zero-based number of active FAT. Only valid if mirroring is disabled. Bits 4-6 – Reserved. Bit 7 – 0 means the FAT is mirrored at runtime into all FATs. – 1 means only one FAT is active; it is the one referenced in bits 0-3. Bits 8-15 – Reserved.

- -
-
- -

◆ fat32FSInfo

- -
-
- - - - -
uint16_t fat32_boot::fat32FSInfo
-
-

Sector number of FSINFO structure in the reserved area of the FAT32 volume. Usually 1.

- -
-
- -

◆ fat32Reserved

- -
-
- - - - -
uint8_t fat32_boot::fat32Reserved[12]
-
-

Reserved for future expansion. Code that formats FAT32 volumes should always set all of the bytes of this field to 0.

- -
-
- -

◆ fat32RootCluster

- -
-
- - - - -
uint32_t fat32_boot::fat32RootCluster
-
-

Cluster number of the first cluster of the root directory for FAT32. This usually 2 but not required to be 2.

- -
-
- -

◆ fat32Version

- -
-
- - - - -
uint16_t fat32_boot::fat32Version
-
-

FAT32 version. High byte is major revision number. Low byte is minor revision number. Only 0.0 define.

- -
-
- -

◆ fatCount

- -
-
- - - - -
uint8_t fat32_boot::fatCount
-
-

The number of copies of the FAT on the volume. The value of this field is always 2.

- -
-
- -

◆ fileSystemType

- -
-
- - - - -
char fat32_boot::fileSystemType[8]
-
-

A text field with a value of FAT32.

- -
-
- -

◆ headCount

- -
-
- - - - -
uint16_t fat32_boot::headCount
-
-

Number of heads for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ hidddenSectors

- -
-
- - - - -
uint32_t fat32_boot::hidddenSectors
-
-

Count of hidden sectors preceding the partition that contains this FAT volume. This field is generally only relevant for media visible on interrupt 0x13.

- -
-
- -

◆ jump

- -
-
- - - - -
uint8_t fat32_boot::jump[3]
-
-

The first three bytes of the boot sector must be valid, executable x 86-based CPU instructions. This includes a jump instruction that skips the next non-executable bytes.

- -
-
- -

◆ mediaType

- -
-
- - - - -
uint8_t fat32_boot::mediaType
-
-

This dates back to the old MS-DOS 1.x media determination and is no longer usually used for anything. 0xF8 is the standard value for fixed (non-removable) media. For removable media, 0xF0 is frequently used. Legal values are 0xF0 or 0xF8-0xFF.

- -
-
- -

◆ oemId

- -
-
- - - - -
char fat32_boot::oemId[8]
-
-

This is typically a string of characters that identifies the operating system that formatted the volume.

- -
-
- -

◆ reserved1

- -
-
- - - - -
uint8_t fat32_boot::reserved1
-
-

used by Windows NT - should be zero for FAT

- -
-
- -

◆ reservedSectorCount

- -
-
- - - - -
uint16_t fat32_boot::reservedSectorCount
-
-

The number of sectors preceding the start of the first FAT, including the boot sector. Must not be zero

- -
-
- -

◆ rootDirEntryCount

- -
-
- - - - -
uint16_t fat32_boot::rootDirEntryCount
-
-

FAT12/FAT16 only. For FAT32 volumes, this field must be set to 0.

- -
-
- -

◆ sectorsPerCluster

- -
-
- - - - -
uint8_t fat32_boot::sectorsPerCluster
-
-

Number of sectors per allocation unit. This value must be a power of 2 that is greater than 0. The legal values are 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided.

- -
-
- -

◆ sectorsPerFat16

- -
-
- - - - -
uint16_t fat32_boot::sectorsPerFat16
-
-

On FAT32 volumes this field must be 0, and sectorsPerFat32 contains the FAT size count.

- -
-
- -

◆ sectorsPerFat32

- -
-
- - - - -
uint32_t fat32_boot::sectorsPerFat32
-
-

Count of sectors occupied by one FAT on FAT32 volumes.

- -
-
- -

◆ sectorsPerTrack

- -
-
- - - - -
uint16_t fat32_boot::sectorsPerTrack
-
-

Sectors per track for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ totalSectors16

- -
-
- - - - -
uint16_t fat32_boot::totalSectors16
-
-

For FAT32 volumes, this field must be 0.

- -
-
- -

◆ totalSectors32

- -
-
- - - - -
uint32_t fat32_boot::totalSectors32
-
-

Contains the total number of sectors in the FAT32 volume.

- -
-
- -

◆ volumeLabel

- -
-
- - - - -
char fat32_boot::volumeLabel[11]
-
-

A field once used to store the volume label. The volume label is now stored as a special file in the root directory.

- -
-
- -

◆ volumeSerialNumber

- -
-
- - - - -
uint32_t fat32_boot::volumeSerialNumber
-
-

A random serial number created when formatting a disk, which helps to distinguish between disks. Usually generated by combining date and time.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__fsinfo-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__fsinfo-members.html deleted file mode 100644 index 8f52a553..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__fsinfo-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fat32_fsinfo Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__fsinfo.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__fsinfo.html deleted file mode 100644 index 6deb5851..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat32__fsinfo.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - -SdFat: fat32_fsinfo Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fat32_fsinfo Struct Reference
-
-
- -

FSINFO sector for a FAT32 volume. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - -

-Public Attributes

uint32_t freeCount
 
uint32_t leadSignature
 
uint32_t nextFree
 
uint8_t reserved1 [480]
 
uint8_t reserved2 [12]
 
uint32_t structSignature
 
uint8_t tailSignature [4]
 
-

Detailed Description

-

FSINFO sector for a FAT32 volume.

-

Member Data Documentation

- -

◆ freeCount

- -
-
- - - - -
uint32_t fat32_fsinfo::freeCount
-
-

Contains the last known free cluster count on the volume. If the value is 0xFFFFFFFF, then the free count is unknown and must be computed. Any other value can be used, but is not necessarily correct. It should be range checked at least to make sure it is <= volume cluster count.

- -
-
- -

◆ leadSignature

- -
-
- - - - -
uint32_t fat32_fsinfo::leadSignature
-
-

must be 0X52, 0X52, 0X61, 0X41

- -
-
- -

◆ nextFree

- -
-
- - - - -
uint32_t fat32_fsinfo::nextFree
-
-

This is a hint for the FAT driver. It indicates the cluster number at which the driver should start looking for free clusters. If the value is 0xFFFFFFFF, then there is no hint and the driver should start looking at cluster 2.

- -
-
- -

◆ reserved1

- -
-
- - - - -
uint8_t fat32_fsinfo::reserved1[480]
-
-

must be zero

- -
-
- -

◆ reserved2

- -
-
- - - - -
uint8_t fat32_fsinfo::reserved2[12]
-
-

must be zero

- -
-
- -

◆ structSignature

- -
-
- - - - -
uint32_t fat32_fsinfo::structSignature
-
-

must be 0X72, 0X72, 0X41, 0X61

- -
-
- -

◆ tailSignature

- -
-
- - - - -
uint8_t fat32_fsinfo::tailSignature[4]
-
-

must be 0X00, 0X00, 0X55, 0XAA

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat__boot-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat__boot-members.html deleted file mode 100644 index b38b67d3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat__boot-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fat_boot Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat__boot.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat__boot.html deleted file mode 100644 index 601874e1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfat__boot.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - - - - -SdFat: fat_boot Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fat_boot Struct Reference
-
-
- -

Boot sector for a FAT12/FAT16 volume. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t bootCode [448]
 
uint8_t bootSectorSig0
 
uint8_t bootSectorSig1
 
uint8_t bootSignature
 
uint16_t bytesPerSector
 
uint8_t driveNumber
 
uint8_t fatCount
 
char fileSystemType [8]
 
uint16_t headCount
 
uint32_t hidddenSectors
 
uint8_t jump [3]
 
uint8_t mediaType
 
char oemId [8]
 
uint8_t reserved1
 
uint16_t reservedSectorCount
 
uint16_t rootDirEntryCount
 
uint8_t sectorsPerCluster
 
uint16_t sectorsPerFat16
 
uint16_t sectorsPerTrack
 
uint16_t totalSectors16
 
uint32_t totalSectors32
 
char volumeLabel [11]
 
uint32_t volumeSerialNumber
 
-

Detailed Description

-

Boot sector for a FAT12/FAT16 volume.

-

Member Data Documentation

- -

◆ bootCode

- -
-
- - - - -
uint8_t fat_boot::bootCode[448]
-
-

X86 boot code

- -
-
- -

◆ bootSectorSig0

- -
-
- - - - -
uint8_t fat_boot::bootSectorSig0
-
-

must be 0X55

- -
-
- -

◆ bootSectorSig1

- -
-
- - - - -
uint8_t fat_boot::bootSectorSig1
-
-

must be 0XAA

- -
-
- -

◆ bootSignature

- -
-
- - - - -
uint8_t fat_boot::bootSignature
-
-

0X29 if next three fields are valid

- -
-
- -

◆ bytesPerSector

- -
-
- - - - -
uint16_t fat_boot::bytesPerSector
-
-

The size of a hardware sector. Valid decimal values for this field are 512, 1024, 2048, and 4096. For most disks used in the United States, the value of this field is 512.

- -
-
- -

◆ driveNumber

- -
-
- - - - -
uint8_t fat_boot::driveNumber
-
-

Related to the BIOS physical drive number. Floppy drives are identified as 0x00 and physical hard disks are identified as 0x80, regardless of the number of physical disk drives. Typically, this value is set prior to issuing an INT 13h BIOS call to specify the device to access. The value is only relevant if the device is a boot device.

- -
-
- -

◆ fatCount

- -
-
- - - - -
uint8_t fat_boot::fatCount
-
-

The number of copies of the FAT on the volume. The value of this field is always 2.

- -
-
- -

◆ fileSystemType

- -
-
- - - - -
char fat_boot::fileSystemType[8]
-
-

A field with a value of either FAT, FAT12 or FAT16, depending on the disk format.

- -
-
- -

◆ headCount

- -
-
- - - - -
uint16_t fat_boot::headCount
-
-

Number of heads for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ hidddenSectors

- -
-
- - - - -
uint32_t fat_boot::hidddenSectors
-
-

Count of hidden sectors preceding the partition that contains this FAT volume. This field is generally only relevant for media visible on interrupt 0x13.

- -
-
- -

◆ jump

- -
-
- - - - -
uint8_t fat_boot::jump[3]
-
-

The first three bytes of the boot sector must be valid, executable x 86-based CPU instructions. This includes a jump instruction that skips the next non-executable bytes.

- -
-
- -

◆ mediaType

- -
-
- - - - -
uint8_t fat_boot::mediaType
-
-

This dates back to the old MS-DOS 1.x media determination and is no longer usually used for anything. 0xF8 is the standard value for fixed (non-removable) media. For removable media, 0xF0 is frequently used. Legal values are 0xF0 or 0xF8-0xFF.

- -
-
- -

◆ oemId

- -
-
- - - - -
char fat_boot::oemId[8]
-
-

This is typically a string of characters that identifies the operating system that formatted the volume.

- -
-
- -

◆ reserved1

- -
-
- - - - -
uint8_t fat_boot::reserved1
-
-

used by Windows NT - should be zero for FAT

- -
-
- -

◆ reservedSectorCount

- -
-
- - - - -
uint16_t fat_boot::reservedSectorCount
-
-

The number of sectors preceding the start of the first FAT, including the boot sector. The value of this field is always 1.

- -
-
- -

◆ rootDirEntryCount

- -
-
- - - - -
uint16_t fat_boot::rootDirEntryCount
-
-

For FAT12 and FAT16 volumes, this field contains the count of 32-byte directory entries in the root directory. For FAT32 volumes, this field must be set to 0. For FAT12 and FAT16 volumes, this value should always specify a count that when multiplied by 32 results in a multiple of bytesPerSector. FAT16 volumes should use the value 512.

- -
-
- -

◆ sectorsPerCluster

- -
-
- - - - -
uint8_t fat_boot::sectorsPerCluster
-
-

Number of sectors per allocation unit. This value must be a power of 2 that is greater than 0. The legal values are 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided.

- -
-
- -

◆ sectorsPerFat16

- -
-
- - - - -
uint16_t fat_boot::sectorsPerFat16
-
-

Count of sectors occupied by one FAT on FAT12/FAT16 volumes. On FAT32 volumes this field must be 0, and sectorsPerFat32 contains the FAT size count.

- -
-
- -

◆ sectorsPerTrack

- -
-
- - - - -
uint16_t fat_boot::sectorsPerTrack
-
-

Sectors per track for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ totalSectors16

- -
-
- - - - -
uint16_t fat_boot::totalSectors16
-
-

This field is the old 16-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors32 must be non-zero. For FAT32 volumes, this field must be 0. For FAT12 and FAT16 volumes, this field contains the sector count, and totalSectors32 is 0 if the total sector count fits (is less than 0x10000).

- -
-
- -

◆ totalSectors32

- -
-
- - - - -
uint32_t fat_boot::totalSectors32
-
-

This field is the new 32-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors16 must be non-zero.

- -
-
- -

◆ volumeLabel

- -
-
- - - - -
char fat_boot::volumeLabel[11]
-
-

A field once used to store the volume label. The volume label is now stored as a special file in the root directory.

- -
-
- -

◆ volumeSerialNumber

- -
-
- - - - -
uint32_t fat_boot::volumeSerialNumber
-
-

A random serial number created when formatting a disk, which helps to distinguish between disks. Usually generated by combining date and time.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfname__t-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfname__t-members.html deleted file mode 100644 index dd9dda0f..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfname__t-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fname_t Member List
-
-
- -

This is the complete list of members for fname_t, including all inherited members.

- - - - - - -
flagsfname_t
lenfname_t
lfnfname_t
seqPosfname_t
sfnfname_t
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfname__t.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfname__t.html deleted file mode 100644 index a96ea8bc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structfname__t.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -SdFat: fname_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fname_t Struct Reference
-
-
- -

Internal type for Short File Name - do not use in user apps. - More...

- -

#include <FatFile.h>

- - - - - - - - - - - - -

-Public Attributes

uint8_t flags
 
size_t len
 
const char * lfn
 
uint8_t seqPos
 
uint8_t sfn [11]
 
-

Detailed Description

-

Internal type for Short File Name - do not use in user apps.

-

Member Data Documentation

- -

◆ flags

- -
-
- - - - -
uint8_t fname_t::flags
-
-

Flags for base and extension character case and LFN.

- -
-
- -

◆ len

- -
-
- - - - -
size_t fname_t::len
-
-

length of Long File Name

- -
-
- -

◆ lfn

- -
-
- - - - -
const char* fname_t::lfn
-
-

Long File Name start.

- -
-
- -

◆ seqPos

- -
-
- - - - -
uint8_t fname_t::seqPos
-
-

position for sequence number

- -
-
- -

◆ sfn

- -
-
- - - - -
uint8_t fname_t::sfn[11]
-
-

Short File Name

- -
-
-
The documentation for this struct was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.h
  • -
-
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structlong_directory_entry-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structlong_directory_entry-members.html deleted file mode 100644 index 653045e7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structlong_directory_entry-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
longDirectoryEntry Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structlong_directory_entry.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structlong_directory_entry.html deleted file mode 100644 index e3d2b88e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structlong_directory_entry.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - -SdFat: longDirectoryEntry Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
longDirectoryEntry Struct Reference
-
-
- -

FAT long directory entry. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t attr
 
uint8_t chksum
 
uint16_t mustBeZero
 
uint16_t name1 [LDIR_NAME1_DIM]
 
uint16_t name2 [LDIR_NAME2_DIM]
 
uint16_t name3 [LDIR_NAME3_DIM]
 
uint8_t ord
 
uint8_t type
 
-

Detailed Description

-

FAT long directory entry.

-

Member Data Documentation

- -

◆ attr

- -
-
- - - - -
uint8_t longDirectoryEntry::attr
-
-

Attributes - must be ATTR_LONG_NAME

- -
-
- -

◆ chksum

- -
-
- - - - -
uint8_t longDirectoryEntry::chksum
-
-

Checksum of name in the short dir entry at the end of the long dir set.

- -
-
- -

◆ mustBeZero

- -
-
- - - - -
uint16_t longDirectoryEntry::mustBeZero
-
-

Must be ZERO. This is an artifact of the FAT "first cluster"

- -
-
- -

◆ name1

- -
-
- - - - -
uint16_t longDirectoryEntry::name1[LDIR_NAME1_DIM]
-
-

Characters 1-5 of the long-name sub-component in this entry.

- -
-
- -

◆ name2

- -
-
- - - - -
uint16_t longDirectoryEntry::name2[LDIR_NAME2_DIM]
-
-

Characters 6-11 of the long-name sub-component in this entry.

- -
-
- -

◆ name3

- -
-
- - - - -
uint16_t longDirectoryEntry::name3[LDIR_NAME3_DIM]
-
-

Characters 12 and 13 of the long-name sub-component in this entry.

- -
-
- -

◆ ord

- -
-
- - - - -
uint8_t longDirectoryEntry::ord
-
-

The order of this entry in the sequence of long dir entries associated with the short dir entry at the end of the long dir set.

-

If masked with 0X40 (LAST_LONG_ENTRY), this indicates the entry is the last long dir entry in a set of long dir entries. All valid sets of long dir entries must begin with an entry having this mask.

- -
-
- -

◆ type

- -
-
- - - - -
uint8_t longDirectoryEntry::type
-
-

If zero, indicates a directory entry that is a sub-component of a long name. NOTE: Other values reserved for future extensions.

-

Non-zero implies other directory entry types.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record-members.html deleted file mode 100644 index eabee510..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
masterBootRecord Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record.html deleted file mode 100644 index 4d1ce7a8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -SdFat: masterBootRecord Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
masterBootRecord Struct Reference
-
-
- -

Master Boot Record. - More...

- -

#include <FatStructs.h>

-
-Collaboration diagram for masterBootRecord:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - -

-Public Attributes

uint8_t codeArea [440]
 
uint32_t diskSignature
 
uint8_t mbrSig0
 
uint8_t mbrSig1
 
part_t part [4]
 
uint16_t usuallyZero
 
-

Detailed Description

-

Master Boot Record.

-

The first block of a storage device that is formatted with a MBR.

-

Member Data Documentation

- -

◆ codeArea

- -
-
- - - - -
uint8_t masterBootRecord::codeArea[440]
-
-

Code Area for master boot program.

- -
-
- -

◆ diskSignature

- -
-
- - - - -
uint32_t masterBootRecord::diskSignature
-
-

Optional Windows NT disk signature. May contain boot code.

- -
-
- -

◆ mbrSig0

- -
-
- - - - -
uint8_t masterBootRecord::mbrSig0
-
-

First MBR signature byte. Must be 0X55

- -
-
- -

◆ mbrSig1

- -
-
- - - - -
uint8_t masterBootRecord::mbrSig1
-
-

Second MBR signature byte. Must be 0XAA

- -
-
- -

◆ part

- -
-
- - - - -
part_t masterBootRecord::part[4]
-
-

Partition tables.

- -
-
- -

◆ usuallyZero

- -
-
- - - - -
uint16_t masterBootRecord::usuallyZero
-
-

Usually zero but may be more boot code.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record__coll__graph.png deleted file mode 100644 index 790e25c4..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structmaster_boot_record__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structpartition_table-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structpartition_table-members.html deleted file mode 100644 index 38d98b82..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structpartition_table-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
partitionTable Member List
-
- - - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structpartition_table.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structpartition_table.html deleted file mode 100644 index e20a886b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structpartition_table.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - -SdFat: partitionTable Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
partitionTable Struct Reference
-
-
- -

MBR partition table entry. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

unsigned beginCylinderHigh: 2
 
uint8_t beginCylinderLow
 
uint8_t beginHead
 
unsigned beginSector: 6
 
uint8_t boot
 
unsigned endCylinderHigh: 2
 
uint8_t endCylinderLow
 
uint8_t endHead
 
unsigned endSector: 6
 
uint32_t firstSector
 
uint32_t totalSectors
 
uint8_t type
 
-

Detailed Description

-

MBR partition table entry.

-

A partition table entry for a MBR formatted storage device. The MBR partition table has four entries.

-

Member Data Documentation

- -

◆ beginCylinderHigh

- -
-
- - - - -
unsigned partitionTable::beginCylinderHigh
-
-

High bits cylinder for first block in partition.

- -
-
- -

◆ beginCylinderLow

- -
-
- - - - -
uint8_t partitionTable::beginCylinderLow
-
-

Combine beginCylinderLow with beginCylinderHigh. Legal values are 0-1023. Only used in old PC BIOS.

- -
-
- -

◆ beginHead

- -
-
- - - - -
uint8_t partitionTable::beginHead
-
-

Head part of Cylinder-head-sector address of the first block in the partition. Legal values are 0-255. Only used in old PC BIOS.

- -
-
- -

◆ beginSector

- -
-
- - - - -
unsigned partitionTable::beginSector
-
-

Sector part of Cylinder-head-sector address of the first block in the partition. Legal values are 1-63. Only used in old PC BIOS.

- -
-
- -

◆ boot

- -
-
- - - - -
uint8_t partitionTable::boot
-
-

Boot Indicator . Indicates whether the volume is the active partition. Legal values include: 0X00. Do not use for booting. 0X80 Active partition.

- -
-
- -

◆ endCylinderHigh

- -
-
- - - - -
unsigned partitionTable::endCylinderHigh
-
-

High bits of end cylinder

- -
-
- -

◆ endCylinderLow

- -
-
- - - - -
uint8_t partitionTable::endCylinderLow
-
-

Combine endCylinderLow with endCylinderHigh. Legal values are 0-1023. Only used in old PC BIOS.

- -
-
- -

◆ endHead

- -
-
- - - - -
uint8_t partitionTable::endHead
-
-

head part of cylinder-head-sector address of the last sector in the partition. Legal values are 0-255. Only used in old PC BIOS.

- -
-
- -

◆ endSector

- -
-
- - - - -
unsigned partitionTable::endSector
-
-

Sector part of cylinder-head-sector address of the last sector in the partition. Legal values are 1-63. Only used in old PC BIOS.

- -
-
- -

◆ firstSector

- -
-
- - - - -
uint32_t partitionTable::firstSector
-
-

Logical block address of the first block in the partition.

- -
-
- -

◆ totalSectors

- -
-
- - - - -
uint32_t partitionTable::totalSectors
-
-

Length of the partition, in blocks.

- -
-
- -

◆ type

- -
-
- - - - -
uint8_t partitionTable::type
-
-

Partition type. See defines that begin with PART_TYPE_ for some Microsoft partition types.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetfill-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetfill-members.html deleted file mode 100644 index bd3f174c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetfill-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
setfill Member List
-
-
- -

This is the complete list of members for setfill, including all inherited members.

- - - -
csetfill
setfill(char arg)setfillinlineexplicit
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetfill.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetfill.html deleted file mode 100644 index a3b2db7b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetfill.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -SdFat: setfill Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
setfill Struct Reference
-
-
- -

type for setfill manipulator - More...

- -

#include <iostream.h>

- - - - -

-Public Member Functions

 setfill (char arg)
 
- - - -

-Public Attributes

char c
 
-

Detailed Description

-

type for setfill manipulator

-

Constructor & Destructor Documentation

- -

◆ setfill()

- -
-
- - - - - -
- - - - - - - - -
setfill::setfill (char arg)
-
-inlineexplicit
-
-

constructor

-
Parameters
- - -
[in]argnew fill character
-
-
- -
-
-

Member Data Documentation

- -

◆ c

- -
-
- - - - -
char setfill::c
-
-

fill character

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetprecision-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetprecision-members.html deleted file mode 100644 index c02648c2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetprecision-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
setprecision Member List
-
-
- -

This is the complete list of members for setprecision, including all inherited members.

- - - -
psetprecision
setprecision(unsigned int arg)setprecisioninlineexplicit
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetprecision.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetprecision.html deleted file mode 100644 index c4b9d276..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetprecision.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: setprecision Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
setprecision Struct Reference
-
-
- -

type for setprecision manipulator - More...

- -

#include <iostream.h>

- - - - -

-Public Member Functions

 setprecision (unsigned int arg)
 
- - - -

-Public Attributes

unsigned int p
 
-

Detailed Description

-

type for setprecision manipulator

-

Constructor & Destructor Documentation

- -

◆ setprecision()

- -
-
- - - - - -
- - - - - - - - -
setprecision::setprecision (unsigned int arg)
-
-inlineexplicit
-
-

constructor

Parameters
- - -
[in]argnew precision
-
-
- -
-
-

Member Data Documentation

- -

◆ p

- -
-
- - - - -
unsigned int setprecision::p
-
-

precision

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetw-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetw-members.html deleted file mode 100644 index 71c8a730..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetw-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
setw Member List
-
-
- -

This is the complete list of members for setw, including all inherited members.

- - - -
setw(unsigned arg)setwinlineexplicit
wsetw
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetw.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetw.html deleted file mode 100644 index 5bed2d2c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/structsetw.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: setw Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

type for setw manipulator - More...

- -

#include <iostream.h>

- - - - -

-Public Member Functions

 setw (unsigned arg)
 
- - - -

-Public Attributes

unsigned w
 
-

Detailed Description

-

type for setw manipulator

-

Constructor & Destructor Documentation

- -

◆ setw()

- -
-
- - - - - -
- - - - - - - - -
setw::setw (unsigned arg)
-
-inlineexplicit
-
-

constructor

Parameters
- - -
[in]argnew width
-
-
- -
-
-

Member Data Documentation

- -

◆ w

- -
-
- - - - -
unsigned setw::w
-
-

width

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sync_off.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sync_off.png deleted file mode 100644 index 3b443fc6..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sync_off.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sync_on.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sync_on.png deleted file mode 100644 index e08320fb..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/sync_on.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_a.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_a.png deleted file mode 100644 index 3b725c41..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_a.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_b.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_b.png deleted file mode 100644 index e2b4a863..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_b.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_h.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_h.png deleted file mode 100644 index fd5cb705..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_h.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_s.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_s.png deleted file mode 100644 index ab478c95..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tab_s.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tabs.css b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tabs.css deleted file mode 100644 index a28614b8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t-members.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t-members.html deleted file mode 100644 index 4778aa5b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
cache_t Member List
-
-
- -

This is the complete list of members for cache_t, including all inherited members.

- - - - - - - - - -
datacache_t
dircache_t
fat16cache_t
fat32cache_t
fbscache_t
fbs32cache_t
fsinfocache_t
mbrcache_t
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t.html b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t.html deleted file mode 100644 index 72dbb7b7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - -SdFat: cache_t Union Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
cache_t Union Reference
-
-
- -

Cache for an raw data block. - More...

- -

#include <FatVolume.h>

-
-Collaboration diagram for cache_t:
-
-
Collaboration graph
- - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t data [512]
 
dir_t dir [16]
 
uint16_t fat16 [256]
 
uint32_t fat32 [128]
 
fat_boot_t fbs
 
fat32_boot_t fbs32
 
fat32_fsinfo_t fsinfo
 
mbr_t mbr
 
-

Detailed Description

-

Cache for an raw data block.

-

Member Data Documentation

- -

◆ data

- -
-
- - - - -
uint8_t cache_t::data[512]
-
-

Used to access cached file data blocks.

- -
-
- -

◆ dir

- -
-
- - - - -
dir_t cache_t::dir[16]
-
-

Used to access cached directory entries.

- -
-
- -

◆ fat16

- -
-
- - - - -
uint16_t cache_t::fat16[256]
-
-

Used to access cached FAT16 entries.

- -
-
- -

◆ fat32

- -
-
- - - - -
uint32_t cache_t::fat32[128]
-
-

Used to access cached FAT32 entries.

- -
-
- -

◆ fbs

- -
-
- - - - -
fat_boot_t cache_t::fbs
-
-

Used to access to a cached FAT boot sector.

- -
-
- -

◆ fbs32

- -
-
- - - - -
fat32_boot_t cache_t::fbs32
-
-

Used to access to a cached FAT32 boot sector.

- -
-
- -

◆ fsinfo

- -
-
- - - - -
fat32_fsinfo_t cache_t::fsinfo
-
-

Used to access to a cached FAT32 FSINFO sector.

- -
-
- -

◆ mbr

- -
-
- - - - -
mbr_t cache_t::mbr
-
-

Used to access a cached Master Boot Record.

- -
-
-
The documentation for this union was generated from the following file: -
- - - - diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t__coll__graph.png b/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t__coll__graph.png deleted file mode 100644 index 16bea1b9..00000000 Binary files a/extra-libraries/ESP8266SDFat/ESP8266SdFat/extras/html/unioncache__t__coll__graph.png and /dev/null differ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/library.properties b/extra-libraries/ESP8266SDFat/ESP8266SdFat/library.properties deleted file mode 100644 index a1baa6a6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/library.properties +++ /dev/null @@ -1,12 +0,0 @@ -name=ESP8266SdFat -version=1.1.0 -license=MIT -author=Bill Greiman -maintainer=Earle F. Philhower, III -sentence=Fork of Bill Greiman's SdFat library with fixes for ESP8266 Arduino support. -paragraph=Minor tweak of Bill Greiman's SdFat FAT16/FAT32 file system for SD cards. Modified to enclose all objects, constants, etc. in a unique namespace "sdfat" to make it easier to integrate with the ESP8266's own File class. -category=Data Storage -url=https://github.com/earlephilhower/ESP8266SdFat -repository=https://github.com/earlephilhower/ESP8266SdFat.git -architectures=esp8266 -dot_a_linkage=true diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/BlockDriver.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/BlockDriver.h deleted file mode 100644 index 0115fd9d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/BlockDriver.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - /** - * \file - * \brief Define block driver. - */ -#ifndef BlockDriver_h -#define BlockDriver_h -#include "FatLib/BaseBlockDriver.h" -#include "SdCard/SdSpiCard.h" - -namespace sdfat { - -//----------------------------------------------------------------------------- -/** typedef for BlockDriver */ -#if ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -typedef BaseBlockDriver BlockDriver; -#else // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -typedef SdSpiCard BlockDriver; -#endif // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS - -}; // namespace sdfat - -#endif // BlockDriver_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ArduinoFiles.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ArduinoFiles.h deleted file mode 100644 index b329418a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ArduinoFiles.h +++ /dev/null @@ -1,255 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief PrintFile class - */ -#ifndef ArduinoFiles_h -#define ArduinoFiles_h -#include "FatLibConfig.h" -#if ENABLE_ARDUINO_FEATURES -#include "FatFile.h" -#include - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** Arduino SD.h style flag for open for read. */ -#define FILE_READ O_RDONLY -/** Arduino SD.h style flag for open at EOF for read/write with create. */ -#define FILE_WRITE (O_RDWR | O_CREAT | O_AT_END) -//============================================================================== -/** - * \class PrintFile - * \brief FatFile with Print. - */ -class PrintFile : public FatFile, public Print { - public: - PrintFile() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - PrintFile(const char* path, oflag_t oflag) : FatFile(path, oflag) {} -#if DESTRUCTOR_CLOSES_FILE - ~PrintFile() {} -#endif // DESTRUCTOR_CLOSES_FILE - using FatFile::clearWriteError; - using FatFile::getWriteError; - using FatFile::read; - using FatFile::write; - /** \return number of bytes available from the current position to EOF - * or INT_MAX if more than INT_MAX bytes are available. - */ - int available() { - uint32_t n = FatFile::available(); - return n > INT_MAX ? INT_MAX : n; - } - /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() { - FatFile::sync(); - } - /** Return the next available byte without consuming it. - * - * \return The byte if no error and not at eof else -1; - */ - int peek() { - return FatFile::peek(); - } - /** Read the next byte from a file. - * - * \return For success return the next byte in the file as an int. - * If an error occurs or end of file is reached return -1. - */ -// int read() { -// return FatFile::read(); -// } - /** Write a byte to a file. Required by the Arduino Print class. - * \param[in] b the byte to be written. - * Use getWriteError to check for errors. - * \return 1 for success and 0 for failure. - */ - size_t write(uint8_t b) { - return FatFile::write(b); - } - /** Write data to an open file. Form required by Print. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] size Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an - * I/O error. - */ - size_t write(const uint8_t *buf, size_t size) { - return FatFile::write(buf, size); - } -}; -//============================================================================== -/** - * \class File - * \brief Arduino SD.h style File API - */ -class File : public FatFile, public Stream { - public: - File() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - File(const char* path, oflag_t oflag) { - open(path, oflag); - } - using FatFile::clearWriteError; - using FatFile::getWriteError; - using FatFile::read; - using FatFile::write; - /** The parenthesis operator. - * - * \return true if a file is open. - */ - operator bool() { - return isOpen(); - } - /** \return number of bytes available from the current position to EOF - * or INT_MAX if more than INT_MAX bytes are available. - */ - int available() { - uint32_t n = FatFile::available(); - return n > INT_MAX ? INT_MAX : n; - } - /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() { - FatFile::sync(); - } - /** This function reports if the current file is a directory or not. - * \return true if the file is a directory. - */ - bool isDirectory() { - return isDir(); - } - /** No longer implemented due to Long File Names. - * - * Use getName(char* name, size_t size). - * \return a pointer to replacement suggestion. - */ - const char* name() const { - return "use getName()"; - } - /** Return the next available byte without consuming it. - * - * \return The byte if no error and not at eof else -1; - */ - int peek() { - return FatFile::peek(); - } - /** \return the current file position. */ - uint32_t position() { - return curPosition(); - } - /** Opens the next file or folder in a directory. - * - * \param[in] oflag open oflag flags. - * \return a File object. - */ - File openNextFile(oflag_t oflag = O_RDONLY) { - File tmpFile; - tmpFile.openNext(this, oflag); - return tmpFile; - } - /** Read the next byte from a file. - * - * \return For success return the next byte in the file as an int. - * If an error occurs or end of file is reached return -1. - */ - int read() { - return FatFile::read(); - } - /** Rewind a file if it is a directory */ - void rewindDirectory() { - if (isDir()) { - rewind(); - } - } - /** - * Seek to a new position in the file, which must be between - * 0 and the size of the file (inclusive). - * - * \param[in] pos the new file position. - * \return true for success else false. - */ - bool seek(uint32_t pos) { - return seekSet(pos); - } - /** \return the file's size. */ - uint32_t size() { - return fileSize(); - } - /** Write a byte to a file. Required by the Arduino Print class. - * \param[in] b the byte to be written. - * Use getWriteError to check for errors. - * \return 1 for success and 0 for failure. - */ - size_t write(uint8_t b) { - return FatFile::write(b); - } - /** Write data to an open file. Form required by Print. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] size Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an - * I/O error. - */ - size_t write(const uint8_t *buf, size_t size) { - return FatFile::write(buf, size); - } -}; -#endif // ENABLE_ARDUINO_FEATURES - -}; // namespace sdfat - -#endif // ArduinoFiles_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ArduinoStream.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ArduinoStream.h deleted file mode 100644 index 3288f680..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ArduinoStream.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef ArduinoStream_h -#define ArduinoStream_h -/** - * \file - * \brief ArduinoInStream and ArduinoOutStream classes - */ -#include "FatLibConfig.h" -#if ENABLE_ARDUINO_FEATURES -#include "bufstream.h" - -namespace sdfat { - -//============================================================================== -/** - * \class ArduinoInStream - * \brief Input stream for Arduino Stream objects - */ -class ArduinoInStream : public ibufstream { - public: - /** - * Constructor - * \param[in] hws hardware stream - * \param[in] buf buffer for input line - * \param[in] size size of input buffer - */ - ArduinoInStream(Stream &hws, char* buf, size_t size) { - m_hw = &hws; - m_line = buf; - m_size = size; - } - /** read a line. */ - void readline() { - size_t i = 0; - uint32_t t; - m_line[0] = '\0'; - while (!m_hw->available()) { - yield(); - } - - while (1) { - t = millis(); - while (!m_hw->available()) { - if ((millis() - t) > 10) { - goto done; - } - } - if (i >= (m_size - 1)) { - setstate(failbit); - return; - } - m_line[i++] = m_hw->read(); - m_line[i] = '\0'; - } -done: - init(m_line); - } - - protected: - /** Internal - do not use. - * \param[in] off - * \param[in] way - * \return true/false. - */ - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - /** Internal - do not use. - * \param[in] pos - * \return true/false. - */ - bool seekpos(pos_type pos) { - (void)pos; - return false; - } - - private: - char *m_line; - size_t m_size; - Stream* m_hw; -}; -//============================================================================== -/** - * \class ArduinoOutStream - * \brief Output stream for Arduino Print objects - */ -class ArduinoOutStream : public ostream { - public: - /** constructor - * - * \param[in] pr Print object for this ArduinoOutStream. - */ - explicit ArduinoOutStream(Print& pr) : m_pr(&pr) {} - - protected: - /// @cond SHOW_PROTECTED - /** - * Internal do not use - * \param[in] c - */ - void putch(char c) { - if (c == '\n') { - m_pr->write('\r'); - } - m_pr->write(c); - } - void putstr(const char* str) { - m_pr->write(str); - } - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - bool seekpos(pos_type pos) { - (void)pos; - return false; - } - bool sync() { - return true; - } - pos_type tellpos() { - return 0; - } - /// @endcond - private: - ArduinoOutStream() {} - Print* m_pr; -}; -#endif // ENABLE_ARDUINO_FEATURES - -}; // namespace sdfat - -#endif // ArduinoStream_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/BaseBlockDriver.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/BaseBlockDriver.h deleted file mode 100644 index 5a459e9b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/BaseBlockDriver.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef BaseBlockDriver_h -#define BaseBlockDriver_h -#include "FatLibConfig.h" - -namespace sdfat { - -/** - * \class BaseBlockDriver - * \brief Base block driver. - */ -class BaseBlockDriver { - public: - /** - * Read a 512 byte block from an SD card. - * - * \param[in] block Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool readBlock(uint32_t block, uint8_t* dst) = 0; - /** End multi-block transfer and go to idle state. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool syncBlocks() = 0; - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool writeBlock(uint32_t block, const uint8_t* src) = 0; -#if USE_MULTI_BLOCK_IO - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] block Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool readBlocks(uint32_t block, uint8_t* dst, size_t nb) = 0; - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb) = 0; -#endif // USE_MULTI_BLOCK_IO -}; - -}; // namespace sdfat - -#endif // BaseBlockDriver_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatApiConstants.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatApiConstants.h deleted file mode 100644 index 261f7bdc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatApiConstants.h +++ /dev/null @@ -1,133 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatApiConstants_h -#define FatApiConstants_h - -#include "SdFatConfig.h" -#if USE_FCNTL_H -#include -#endif - -namespace sdfat { - -#if USE_FCNTL_H -/* values for GNU Arm Embedded Toolchain. - * O_RDONLY: 0x0 - * O_WRONLY: 0x1 - * O_RDWR: 0x2 - * O_ACCMODE: 0x3 - * O_APPEND: 0x8 - * O_CREAT: 0x200 - * O_TRUNC: 0x400 - * O_EXCL: 0x800 - * O_SYNC: 0x2000 - * O_NONBLOCK: 0x4000 - */ -/** Use O_NONBLOCK for open at EOF */ -#define O_AT_END O_NONBLOCK ///< Open at EOF. -typedef int oflag_t; -#else // USE_FCNTL_H -// Temp fix for particle mesh. -#ifdef O_RDONLY -#undef O_RDONLY -#endif // O_RDONLY -#ifdef O_RDWR -#undef O_RDWR -#endif // O_RDWR -#ifdef O_WRONLY -#undef O_WRONLY -#endif // O_WRONLY -//------------------------------------------------------------------------------ -// use the gnu style oflag in open() -/** open() oflag for reading */ -const uint8_t O_READ = 0X01; -/** open() oflag - same as O_IN */ -const uint8_t O_RDONLY = O_READ; -/** open() oflag for write */ -const uint8_t O_WRITE = 0X02; -/** open() oflag - same as O_WRITE */ -const uint8_t O_WRONLY = O_WRITE; -/** open() oflag for reading and writing */ -const uint8_t O_RDWR = (O_READ | O_WRITE); -/** open() oflag mask for access modes */ -const uint8_t O_ACCMODE = (O_READ | O_WRITE); -/** The file offset shall be set to the end of the file prior to each write. */ -const uint8_t O_APPEND = 0X04; -/** synchronous writes - call sync() after each write */ -const uint8_t O_SYNC = 0X08; -/** truncate the file to zero length */ -const uint8_t O_TRUNC = 0X10; -/** set the initial position at the end of the file */ -const uint8_t O_AT_END = 0X20; -/** create the file if nonexistent */ -const uint8_t O_CREAT = 0X40; -/** If O_CREAT and O_EXCL are set, open() shall fail if the file exists */ -const uint8_t O_EXCL = 0X80; -#if 0 -#define O_RDONLY 0X00 ///< Open for reading only. -#define O_WRONLY 0X01 ///< Open for writing only. -#define O_RDWR 0X02 ///< Open for reading and writing. -#define O_AT_END 0X04 ///< Open at EOF. -#define O_APPEND 0X08 ///< Set append mode. -#define O_CREAT 0x10 ///< Create file if it does not exist. -#define O_TRUNC 0x20 ///< Truncate file to zero length. -#define O_EXCL 0x40 ///< Fail if the file exists. -#define O_SYNC 0x80 ///< Synchronized write I/O operations. - -#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) ///< Mask for access mode. -#endif -typedef uint8_t oflag_t; -#endif // USE_FCNTL_H - -#define O_READ O_RDONLY -#define O_WRITE O_WRONLY - -inline bool isWriteMode(oflag_t oflag) { - oflag &= O_ACCMODE; - return oflag == O_WRONLY || oflag == O_RDWR; -} - -// FatFile class static and const definitions -// flags for ls() -/** ls() flag for list all files including hidden. */ -#define LS_A 1 -/** ls() flag to print modify. date */ -#define LS_DATE 2 -/** ls() flag to print file size. */ -#define LS_SIZE 4 -/** ls() flag for recursive list of subdirectories */ -#define LS_R 8 - -// flags for timestamp -/** set the file's last access date */ -#define T_ACCESS 1 -/** set the file's creation date and time */ -#define T_CREATE 2 -/** Set the file's write date and time */ -#define T_WRITE 4 - -}; // namespace sdfat - -#endif // FatApiConstants_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFile.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFile.cpp deleted file mode 100644 index c102eee8..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFile.cpp +++ /dev/null @@ -1,1539 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FatFile.h" -#include "FatFileSystem.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -// Pointer to cwd directory. -FatFile* FatFile::m_cwd = 0; -// Callback function for date/time. -void (*FatFile::m_dateTime)(uint16_t* date, uint16_t* time) = 0; -//------------------------------------------------------------------------------ -// Add a cluster to a file. -bool FatFile::addCluster() { - m_flags |= F_FILE_DIR_DIRTY; - return m_vol->allocateCluster(m_curCluster, &m_curCluster); -} -//------------------------------------------------------------------------------ -// Add a cluster to a directory file and zero the cluster. -// Return with first block of cluster in the cache. -bool FatFile::addDirCluster() { - uint32_t block; - cache_t* pc; - - if (isRootFixed()) { - DBG_FAIL_MACRO; - goto fail; - } - // max folder size - if (m_curPosition >= 512UL*4095) { - DBG_FAIL_MACRO; - goto fail; - } - if (!addCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - block = m_vol->clusterFirstBlock(m_curCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_RESERVE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - memset(pc, 0, 512); - // zero rest of clusters - for (uint8_t i = 1; i < m_vol->blocksPerCluster(); i++) { - if (!m_vol->writeBlock(block + i, pc->data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Set position to EOF to avoid inconsistent curCluster/curPosition. - m_curPosition += 512UL*m_vol->blocksPerCluster(); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// cache a file's directory entry -// return pointer to cached entry or null for failure -dir_t* FatFile::cacheDirEntry(uint8_t action) { - cache_t* pc; - pc = m_vol->cacheFetchData(m_dirBlock, action); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - return pc->dir + (m_dirIndex & 0XF); - -fail: - return 0; -} -//------------------------------------------------------------------------------ -bool FatFile::close() { - bool rtn = sync(); - m_attr = FILE_ATTR_CLOSED; - return rtn; -} -//------------------------------------------------------------------------------ -bool FatFile::contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock) { - // error if no blocks - if (m_firstCluster == 0) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint32_t c = m_firstCluster; ; c++) { - uint32_t next; - int8_t fg = m_vol->fatGet(c, &next); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - // check for contiguous - if (fg == 0 || next != (c + 1)) { - // error if not end of chain - if (fg) { - DBG_FAIL_MACRO; - goto fail; - } - *bgnBlock = m_vol->clusterFirstBlock(m_firstCluster); - *endBlock = m_vol->clusterFirstBlock(c) - + m_vol->blocksPerCluster() - 1; - return true; - } - } - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::createContiguous(FatFile* dirFile, const char* path, - uint32_t size, uint32_t startCluster) { - uint32_t count; - - // don't allow zero length file - if (size == 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (!open(dirFile, path, O_RDWR | O_CREAT | O_EXCL)) { - DBG_FAIL_MACRO; - goto fail; - } - // calculate number of clusters needed - count = ((size - 1) >> (m_vol->clusterSizeShift() + 9)) + 1; - - // allocate clusters - if (!m_vol->allocContiguous(count, &m_firstCluster, startCluster)) { - remove(); - DBG_FAIL_MACRO; - goto fail; - } - m_fileSize = size; - - // insure sync() will update dir entry - m_flags |= F_FILE_DIR_DIRTY; - return sync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::dirEntry(dir_t* dst) { - dir_t* dir; - // Make sure fields on device are correct. - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - // read entry - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // copy to caller's struct - memcpy(dst, dir, sizeof(dir_t)); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -uint8_t FatFile::dirName(const dir_t* dir, char* name) { - uint8_t j = 0; - uint8_t lcBit = DIR_NT_LC_BASE; - for (uint8_t i = 0; i < 11; i++) { - if (dir->name[i] == ' ') { - continue; - } - if (i == 8) { - // Position bit for extension. - lcBit = DIR_NT_LC_EXT; - name[j++] = '.'; - } - char c = dir->name[i]; - if ('A' <= c && c <= 'Z' && (lcBit & dir->reservedNT)) { - c += 'a' - 'A'; - } - name[j++] = c; - } - name[j] = 0; - return j; -} - -//------------------------------------------------------------------------------ -uint32_t FatFile::dirSize() { - int8_t fg; - if (!isDir()) { - return 0; - } - if (isRootFixed()) { - return 32*m_vol->rootDirEntryCount(); - } - uint16_t n = 0; - uint32_t c = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; - do { - fg = m_vol->fatGet(c, &c); - if (fg < 0 || n > 4095) { - return 0; - } - n += m_vol->blocksPerCluster(); - } while (fg); - return 512UL*n; -} -//------------------------------------------------------------------------------ -int16_t FatFile::fgets(char* str, int16_t num, char* delim) { - char ch; - int16_t n = 0; - int16_t r = -1; - while ((n + 1) < num && (r = read(&ch, 1)) == 1) { - // delete CR - if (ch == '\r') { - continue; - } - str[n++] = ch; - if (!delim) { - if (ch == '\n') { - break; - } - } else { - if (strchr(delim, ch)) { - break; - } - } - } - if (r < 0) { - // read error - return -1; - } - str[n] = '\0'; - return n; -} -//------------------------------------------------------------------------------ -void FatFile::getpos(FatPos_t* pos) { - pos->position = m_curPosition; - pos->cluster = m_curCluster; -} -//------------------------------------------------------------------------------ -bool FatFile::mkdir(FatFile* parent, const char* path, bool pFlag) { - fname_t fname; - FatFile tmpDir; - - if (isOpen() || !parent->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - if (isDirSeparator(*path)) { - while (isDirSeparator(*path)) { - path++; - } - if (!tmpDir.openRoot(parent->m_vol)) { - DBG_FAIL_MACRO; - goto fail; - } - parent = &tmpDir; - } - while (1) { - if (!parsePathName(path, &fname, &path)) { - DBG_FAIL_MACRO; - goto fail; - } - if (!*path) { - break; - } - if (!open(parent, &fname, O_RDONLY)) { - if (!pFlag || !mkdir(parent, &fname)) { - DBG_FAIL_MACRO; - goto fail; - } - } - tmpDir = *this; - parent = &tmpDir; - close(); - } - return mkdir(parent, &fname); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::mkdir(FatFile* parent, fname_t* fname) { - uint32_t block; - dir_t dot; - dir_t* dir; - cache_t* pc; - - if (!parent->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - // create a normal file - if (!open(parent, fname, O_RDWR | O_CREAT | O_EXCL)) { - DBG_FAIL_MACRO; - goto fail; - } - // convert file to directory - m_flags = F_READ; - m_attr = FILE_ATTR_SUBDIR; - - // allocate and zero first cluster - if (!addDirCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - m_firstCluster = m_curCluster; - // Set to start of dir - rewind(); - // force entry to device - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - // cache entry - should already be in cache due to sync() call - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // change directory entry attribute - dir->attributes = DIR_ATT_DIRECTORY; - - // make entry for '.' - memcpy(&dot, dir, sizeof(dot)); - dot.name[0] = '.'; - for (uint8_t i = 1; i < 11; i++) { - dot.name[i] = ' '; - } - - // cache block for '.' and '..' - block = m_vol->clusterFirstBlock(m_firstCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - // copy '.' to block - memcpy(&pc->dir[0], &dot, sizeof(dot)); - // make entry for '..' - dot.name[1] = '.'; - dot.firstClusterLow = parent->m_firstCluster & 0XFFFF; - dot.firstClusterHigh = parent->m_firstCluster >> 16; - // copy '..' to block - memcpy(&pc->dir[1], &dot, sizeof(dot)); - // write first block - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFileSystem* fs, const char* path, oflag_t oflag) { - return open(fs->vwd(), path, oflag); -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFile* dirFile, const char* path, oflag_t oflag) { - FatFile tmpDir; - fname_t fname; - - // error if already open - if (isOpen() || !dirFile->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - if (isDirSeparator(*path)) { - while (isDirSeparator(*path)) { - path++; - } - if (*path == 0) { - return openRoot(dirFile->m_vol); - } - if (!tmpDir.openRoot(dirFile->m_vol)) { - DBG_FAIL_MACRO; - goto fail; - } - dirFile = &tmpDir; - } - while (1) { - if (!parsePathName(path, &fname, &path)) { - DBG_FAIL_MACRO; - goto fail; - } - if (*path == 0) { - break; - } - if (!open(dirFile, &fname, O_RDONLY)) { - DBG_FAIL_MACRO; - goto fail; - } - tmpDir = *this; - dirFile = &tmpDir; - close(); - } - return open(dirFile, &fname, oflag); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { - uint8_t chksum = 0; - uint8_t lfnOrd = 0; - dir_t* dir; - ldir_t*ldir; - - // Error if already open. - if (isOpen() || !dirFile->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - // Don't open existing file if O_EXCL - user call error. - if (oflag & O_EXCL) { - DBG_FAIL_MACRO; - goto fail; - } - if (index) { - // Check for LFN. - if (!dirFile->seekSet(32UL*(index -1))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile->readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr == DIR_ATT_LONG_NAME) { - if (1 == (ldir->ord & 0X1F)) { - chksum = ldir->chksum; - // Use largest possible number. - lfnOrd = index > 20 ? 20 : index; - } - } - } else { - dirFile->rewind(); - } - // read entry into cache - dir = dirFile->readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // error if empty slot or '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || - dir->name[0] == DIR_NAME_FREE || - dir->name[0] == '.') { - DBG_FAIL_MACRO; - goto fail; - } - if (lfnOrd && chksum != lfnChecksum(dir->name)) { - DBG_FAIL_MACRO; - goto fail; - } - // open cached entry - if (!openCachedEntry(dirFile, index, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// open a cached directory entry. - -bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, - oflag_t oflag, uint8_t lfnOrd) { - uint32_t firstCluster; - memset(this, 0, sizeof(FatFile)); - // location of entry in cache - m_vol = dirFile->m_vol; - m_dirIndex = dirIndex; - m_dirCluster = dirFile->m_firstCluster; - dir_t* dir = &m_vol->cacheAddress()->dir[0XF & dirIndex]; - - // Must be file or subdirectory. - if (!DIR_IS_FILE_OR_SUBDIR(dir)) { - DBG_FAIL_MACRO; - goto fail; - } - m_attr = dir->attributes & FILE_ATTR_COPY; - if (DIR_IS_FILE(dir)) { - m_attr |= FILE_ATTR_FILE; - } - m_lfnOrd = lfnOrd; - - switch (oflag & O_ACCMODE) { - case O_RDONLY: - if (oflag & O_TRUNC) { - DBG_FAIL_MACRO; - goto fail; - } - m_flags = F_READ; - break; - - case O_RDWR: - m_flags = F_READ | F_WRITE; - break; - - case O_WRONLY: - m_flags = F_WRITE; - break; - - default: - DBG_FAIL_MACRO; - goto fail; - } - - if (m_flags & F_WRITE) { - if (isSubDir() || isReadOnly()) { - DBG_FAIL_MACRO; - goto fail; - } - } - - m_flags |= (oflag & O_APPEND ? F_APPEND : 0) | (oflag & O_SYNC ? F_SYNC : 0); - - m_dirBlock = m_vol->cacheBlockNumber(); - - // copy first cluster number for directory fields - firstCluster = ((uint32_t)dir->firstClusterHigh << 16) - | dir->firstClusterLow; - - if (oflag & O_TRUNC) { - if (firstCluster && !m_vol->freeChain(firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // need to update directory entry - m_flags |= F_FILE_DIR_DIRTY; - } else { - m_firstCluster = firstCluster; - m_fileSize = dir->fileSize; - } - if ((oflag & O_AT_END) && !seekSet(m_fileSize)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - -fail: - m_attr = FILE_ATTR_CLOSED; - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::openCwd() { - if (!cwd()) { - DBG_FAIL_MACRO; - return false; - } - *this = *cwd(); - rewind(); - return true; -} -//------------------------------------------------------------------------------ -bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { - uint8_t chksum = 0; - ldir_t* ldir; - uint8_t lfnOrd = 0; - uint16_t index; - - // Check for not open and valid directory.. - if (isOpen() || !dirFile->isDir() || (dirFile->curPosition() & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - while (1) { - // read entry into cache - index = dirFile->curPosition()/32; - dir_t* dir = dirFile->readDirCache(); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - } - goto fail; - } - // done if last entry - if (dir->name[0] == DIR_NAME_FREE) { - goto fail; - } - // skip empty slot or '.' or '..' - if (dir->name[0] == '.' || dir->name[0] == DIR_NAME_DELETED) { - lfnOrd = 0; - } else if (DIR_IS_FILE_OR_SUBDIR(dir)) { - if (lfnOrd && chksum != lfnChecksum(dir->name)) { - DBG_FAIL_MACRO; - goto fail; - } - if (!openCachedEntry(dirFile, index, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - } else if (DIR_IS_LONG_NAME(dir)) { - ldir = reinterpret_cast(dir); - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - lfnOrd = ldir->ord & 0X1F; - chksum = ldir->chksum; - } - } else { - lfnOrd = 0; - } - } - -fail: - return false; -} -#ifndef DOXYGEN_SHOULD_SKIP_THIS -//------------------------------------------------------------------------------ -/** Open a file's parent directory. - * - * \param[in] file Parent of this directory will be opened. Must not be root. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ -bool FatFile::openParent(FatFile* dirFile) { - FatFile dotdot; - uint32_t lbn; - dir_t* dir; - uint32_t ddc; - cache_t* cb; - - if (isOpen() || !dirFile->isOpen()) { - goto fail; - } - if (dirFile->m_dirCluster == 0) { - return openRoot(dirFile->m_vol); - } - lbn = dirFile->m_vol->clusterFirstBlock(dirFile->m_dirCluster); - cb = dirFile->m_vol->cacheFetchData(lbn, FatCache::CACHE_FOR_READ); - if (!cb) { - DBG_FAIL_MACRO; - goto fail; - } - // Point to dir entery for .. - dir = cb->dir + 1; - ddc = dir->firstClusterLow | ((uint32_t)dir->firstClusterHigh << 16); - if (ddc == 0) { - if (!dotdot.openRoot(dirFile->m_vol)) { - DBG_FAIL_MACRO; - goto fail; - } - } else { - //memset(&dotdot, 0, sizeof(FatFile)); - new (&dotdot) FatFile; // Use placement new to ensure the existing object is properly cleared - dotdot.m_attr = FILE_ATTR_SUBDIR; - dotdot.m_flags = F_READ; - dotdot.m_vol = dirFile->m_vol; - dotdot.m_firstCluster = ddc; - } - uint32_t di; - do { - di = dotdot.curPosition()/32; - dir = dotdot.readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - ddc = dir->firstClusterLow | ((uint32_t)dir->firstClusterHigh << 16); - } while (ddc != dirFile->m_dirCluster); - return open(&dotdot, di, O_RDONLY); - -fail: - return false; -} -#endif // DOXYGEN_SHOULD_SKIP_THIS -//------------------------------------------------------------------------------ -bool FatFile::openRoot(FatVolume* vol) { - // error if file is already open - if (isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - memset(this, 0, sizeof(FatFile)); - - m_vol = vol; - switch (vol->fatType()) { -#if FAT12_SUPPORT - case 12: -#endif // FAT12_SUPPORT - case 16: - m_attr = FILE_ATTR_ROOT_FIXED; - break; - - case 32: - m_attr = FILE_ATTR_ROOT32; - break; - - default: - DBG_FAIL_MACRO; - goto fail; - } - // read only - m_flags = F_READ; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -int FatFile::peek() { - FatPos_t pos; - getpos(&pos); - int c = read(); - if (c >= 0) { - setpos(&pos); - } - return c; -} -//------------------------------------------------------------------------------ -int FatFile::read(void* buf, size_t nbyte) { - int8_t fg; - uint8_t blockOfCluster = 0; - uint8_t* dst = reinterpret_cast(buf); - uint16_t offset; - size_t toRead; - uint32_t block; // raw device block number - cache_t* pc; - - // error if not open for read - if (!isOpen() || !(m_flags & F_READ)) { - DBG_FAIL_MACRO; - goto fail; - } - - if (isFile()) { - uint32_t tmp32 = m_fileSize - m_curPosition; - if (nbyte >= tmp32) { - nbyte = tmp32; - } - } else if (isRootFixed()) { - uint16_t tmp16 = 32*m_vol->m_rootDirEntryCount - (uint16_t)m_curPosition; - if (nbyte > tmp16) { - nbyte = tmp16; - } - } - toRead = nbyte; - while (toRead) { - size_t n; - offset = m_curPosition & 0X1FF; // offset in block - if (isRootFixed()) { - block = m_vol->rootDirStart() + (m_curPosition >> 9); - } else { - blockOfCluster = m_vol->blockOfCluster(m_curPosition); - if (offset == 0 && blockOfCluster == 0) { - // start of new cluster - if (m_curPosition == 0) { - // use first cluster in file - m_curCluster = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; - } else { - // get next cluster from FAT - fg = m_vol->fatGet(m_curCluster, &m_curCluster); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg == 0) { - if (isDir()) { - break; - } - DBG_FAIL_MACRO; - goto fail; - } - } - } - block = m_vol->clusterFirstBlock(m_curCluster) + blockOfCluster; - } - if (offset != 0 || toRead < 512 || block == m_vol->cacheBlockNumber()) { - // amount to be read from current block - n = 512 - offset; - if (n > toRead) { - n = toRead; - } - // read block to cache and copy data to caller - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - uint8_t* src = pc->data + offset; - memcpy(dst, src, n); -#if USE_MULTI_BLOCK_IO - } else if (toRead >= 1024) { - size_t nb = toRead >> 9; - if (!isRootFixed()) { - uint8_t mb = m_vol->blocksPerCluster() - blockOfCluster; - if (mb < nb) { - nb = mb; - } - } - n = 512*nb; - if (m_vol->cacheBlockNumber() <= block - && block < (m_vol->cacheBlockNumber() + nb)) { - // flush cache if a block is in the cache - if (!m_vol->cacheSyncData()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (!m_vol->readBlocks(block, dst, nb)) { - DBG_FAIL_MACRO; - goto fail; - } -#endif // USE_MULTI_BLOCK_IO - } else { - // read single block - n = 512; - if (!m_vol->readBlock(block, dst)) { - DBG_FAIL_MACRO; - goto fail; - } - } - dst += n; - m_curPosition += n; - toRead -= n; - } - return nbyte - toRead; - -fail: - m_error |= READ_ERROR; - return -1; -} -//------------------------------------------------------------------------------ -int8_t FatFile::readDir(dir_t* dir) { - int16_t n; - // if not a directory file or miss-positioned return an error - if (!isDir() || (0X1F & m_curPosition)) { - return -1; - } - - while (1) { - n = read(dir, sizeof(dir_t)); - if (n != sizeof(dir_t)) { - return n == 0 ? 0 : -1; - } - // last entry if DIR_NAME_FREE - if (dir->name[0] == DIR_NAME_FREE) { - return 0; - } - // skip empty entries and entry for . and .. - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - continue; - } - // return if normal file or subdirectory - if (DIR_IS_FILE_OR_SUBDIR(dir)) { - return n; - } - } -} -//------------------------------------------------------------------------------ -// Read next directory entry into the cache -// Assumes file is correctly positioned -dir_t* FatFile::readDirCache(bool skipReadOk) { -// uint8_t b; - uint8_t i = (m_curPosition >> 5) & 0XF; - - if (i == 0 || !skipReadOk) { - int8_t n = read(&n, 1); - if (n != 1) { - if (n != 0) { - DBG_FAIL_MACRO; - } - goto fail; - } - m_curPosition += 31; - } else { - m_curPosition += 32; - } - // return pointer to entry - return m_vol->cacheAddress()->dir + i; - -fail: - return 0; -} -//------------------------------------------------------------------------------ -bool FatFile::remove(FatFile* dirFile, const char* path) { - FatFile file; - if (!file.open(dirFile, path, O_WRONLY)) { - DBG_FAIL_MACRO; - goto fail; - } - return file.remove(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::rename(FatFile* dirFile, const char* newPath) { - dir_t entry; - uint32_t dirCluster = 0; - FatFile file; - FatFile oldFile; - cache_t* pc; - dir_t* dir; - - // Must be an open file or subdirectory. - if (!(isFile() || isSubDir())) { - DBG_FAIL_MACRO; - goto fail; - } - // Can't rename LFN in 8.3 mode. - if (!USE_LONG_FILE_NAMES && isLFN()) { - DBG_FAIL_MACRO; - goto fail; - } - // Can't move file to new volume. - if (m_vol != dirFile->m_vol) { - DBG_FAIL_MACRO; - goto fail; - } - // sync() and cache directory entry - sync(); - oldFile = *this; - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // save directory entry - memcpy(&entry, dir, sizeof(entry)); - // make directory entry for new path - if (isFile()) { - if (!file.open(dirFile, newPath, O_WRONLY | O_CREAT | O_EXCL)) { - DBG_FAIL_MACRO; - goto fail; - } - } else { - // don't create missing path prefix components - if (!file.mkdir(dirFile, newPath, false)) { - DBG_FAIL_MACRO; - goto fail; - } - // save cluster containing new dot dot - dirCluster = file.m_firstCluster; - } - // change to new directory entry - - m_dirBlock = file.m_dirBlock; - m_dirIndex = file.m_dirIndex; - m_lfnOrd = file.m_lfnOrd; - m_dirCluster = file.m_dirCluster; - // mark closed to avoid possible destructor close call - file.m_attr = FILE_ATTR_CLOSED; - - // cache new directory entry - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // copy all but name and name flags to new directory entry - memcpy(&dir->creationTimeTenths, &entry.creationTimeTenths, - sizeof(entry) - sizeof(dir->name) - 2); - dir->attributes = entry.attributes; - - // update dot dot if directory - if (dirCluster) { - // get new dot dot - uint32_t block = m_vol->clusterFirstBlock(dirCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - memcpy(&entry, &pc->dir[1], sizeof(entry)); - - // free unused cluster - if (!m_vol->freeChain(dirCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // store new dot dot - block = m_vol->clusterFirstBlock(m_firstCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - memcpy(&pc->dir[1], &entry, sizeof(entry)); - } - // Remove old directory entry; - oldFile.m_firstCluster = 0; - oldFile.m_flags = F_WRITE; - oldFile.m_attr = FILE_ATTR_FILE; - if (!oldFile.remove()) { - DBG_FAIL_MACRO; - goto fail; - } - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::rmdir() { - // must be open subdirectory - if (!isSubDir() || (!USE_LONG_FILE_NAMES && isLFN())) { - DBG_FAIL_MACRO; - goto fail; - } - rewind(); - - // make sure directory is empty - while (1) { - dir_t* dir = readDirCache(true); - if (!dir) { - // EOF if no error. - if (!getError()) { - break; - } - DBG_FAIL_MACRO; - goto fail; - } - // done if past last used entry - if (dir->name[0] == DIR_NAME_FREE) { - break; - } - // skip empty slot, '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - continue; - } - // error not empty - if (DIR_IS_FILE_OR_SUBDIR(dir)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // convert empty directory to normal file for remove - m_attr = FILE_ATTR_FILE; - m_flags |= F_WRITE; - return remove(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::rmRfStar() { - uint16_t index; - FatFile f; - if (!isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - rewind(); - while (1) { - // remember position - index = m_curPosition/32; - - dir_t* dir = readDirCache(); - if (!dir) { - // At EOF if no error. - if (!getError()) { - break; - } - DBG_FAIL_MACRO; - goto fail; - } - // done if past last entry - if (dir->name[0] == DIR_NAME_FREE) { - break; - } - - // skip empty slot or '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - continue; - } - - // skip if part of long file name or volume label in root - if (!DIR_IS_FILE_OR_SUBDIR(dir)) { - continue; - } - - if (!f.open(this, index, O_RDONLY)) { - DBG_FAIL_MACRO; - goto fail; - } - if (f.isSubDir()) { - // recursively delete - if (!f.rmRfStar()) { - DBG_FAIL_MACRO; - goto fail; - } - } else { - // ignore read-only - f.m_flags |= F_WRITE; - if (!f.remove()) { - DBG_FAIL_MACRO; - goto fail; - } - } - // position to next entry if required - if (m_curPosition != (32UL*(index + 1))) { - if (!seekSet(32UL*(index + 1))) { - DBG_FAIL_MACRO; - goto fail; - } - } - } - // don't try to delete root - if (!isRoot()) { - if (!rmdir()) { - DBG_FAIL_MACRO; - goto fail; - } - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::seekSet(uint32_t pos) { - uint32_t nCur; - uint32_t nNew; - uint32_t tmp = m_curCluster; - // error if file not open - if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - // Optimize O_APPEND writes. - if (pos == m_curPosition) { - return true; - } - if (pos == 0) { - // set position to start of file - m_curCluster = 0; - goto done; - } - if (isFile()) { - if (pos > m_fileSize) { - DBG_FAIL_MACRO; - goto fail; - } - } else if (isRootFixed()) { - if (pos <= 32*m_vol->rootDirEntryCount()) { - goto done; - } - DBG_FAIL_MACRO; - goto fail; - } - // calculate cluster index for cur and new position - nCur = (m_curPosition - 1) >> (m_vol->clusterSizeShift() + 9); - nNew = (pos - 1) >> (m_vol->clusterSizeShift() + 9); - - if (nNew < nCur || m_curPosition == 0) { - // must follow chain from first cluster - m_curCluster = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; - } else { - // advance from curPosition - nNew -= nCur; - } - while (nNew--) { - if (m_vol->fatGet(m_curCluster, &m_curCluster) <= 0) { - DBG_FAIL_MACRO; - goto fail; - } - } - -done: - m_curPosition = pos; - return true; - -fail: - m_curCluster = tmp; - return false; -} -//------------------------------------------------------------------------------ -void FatFile::setpos(FatPos_t* pos) { - m_curPosition = pos->position; - m_curCluster = pos->cluster; -} -//------------------------------------------------------------------------------ -bool FatFile::sync() { - if (!isOpen()) { - return true; - } - if (m_flags & F_FILE_DIR_DIRTY) { - dir_t* dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - // check for deleted by another open file object - if (!dir || dir->name[0] == DIR_NAME_DELETED) { - DBG_FAIL_MACRO; - goto fail; - } - // do not set filesize for dir files - if (isFile()) { - dir->fileSize = m_fileSize; - } - - // update first cluster fields - dir->firstClusterLow = m_firstCluster & 0XFFFF; - dir->firstClusterHigh = m_firstCluster >> 16; - - // set modify time if user supplied a callback date/time function - if (m_dateTime) { - uint16_t date, time; - m_dateTime(&date, &time); - dir->lastWriteDate = date; - dir->lastWriteTime = time; - dir->lastAccessDate = dir->lastWriteDate; - } - // clear directory dirty - m_flags &= ~F_FILE_DIR_DIRTY; - } - if (m_vol->cacheSync()) { - return true; - } - DBG_FAIL_MACRO; - -fail: - m_error |= WRITE_ERROR; - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::timestamp(FatFile* file) { - dir_t* dir; - dir_t srcDir; - - // most be files get timestamps - if (!isFile() || !file->isFile() || !file->dirEntry(&srcDir)) { - DBG_FAIL_MACRO; - goto fail; - } - // update directory fields - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // copy timestamps - dir->lastAccessDate = srcDir.lastAccessDate; - dir->creationDate = srcDir.creationDate; - dir->creationTime = srcDir.creationTime; - dir->creationTimeTenths = srcDir.creationTimeTenths; - dir->lastWriteDate = srcDir.lastWriteDate; - dir->lastWriteTime = srcDir.lastWriteTime; - - // write back entry - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { - uint16_t dirDate; - uint16_t dirTime; - dir_t* dir; - - if (!isFile() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { - DBG_FAIL_MACRO; - goto fail; - } - // update directory entry - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - dirDate = FAT_DATE(year, month, day); - dirTime = FAT_TIME(hour, minute, second); - if (flags & T_ACCESS) { - dir->lastAccessDate = dirDate; - } - if (flags & T_CREATE) { - dir->creationDate = dirDate; - dir->creationTime = dirTime; - // seems to be units of 1/100 second not 1/10 as Microsoft states - dir->creationTimeTenths = second & 1 ? 100 : 0; - } - if (flags & T_WRITE) { - dir->lastWriteDate = dirDate; - dir->lastWriteTime = dirTime; - } - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::truncate(uint32_t length) { - uint32_t newPos; - // error if not a normal file or read-only - if (!isFile() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // error if length is greater than current size - if (length > m_fileSize) { - DBG_FAIL_MACRO; - goto fail; - } - // fileSize and length are zero - nothing to do - if (m_fileSize == 0) { - return true; - } - - // remember position for seek after truncation - newPos = m_curPosition > length ? length : m_curPosition; - - // position to last cluster in truncated file - if (!seekSet(length)) { - DBG_FAIL_MACRO; - goto fail; - } - if (length == 0) { - // free all clusters - if (!m_vol->freeChain(m_firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - m_firstCluster = 0; - } else { - uint32_t toFree; - int8_t fg = m_vol->fatGet(m_curCluster, &toFree); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg) { - // free extra clusters - if (!m_vol->freeChain(toFree)) { - DBG_FAIL_MACRO; - goto fail; - } - // current cluster is end of chain - if (!m_vol->fatPutEOC(m_curCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - } - } - m_fileSize = length; - - // need to update directory entry - m_flags |= F_FILE_DIR_DIRTY; - - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - // set file to correct position - return seekSet(newPos); - -fail: - return false; -} -//------------------------------------------------------------------------------ -int FatFile::write(const void* buf, size_t nbyte) { - // convert void* to uint8_t* - must be before goto statements - const uint8_t* src = reinterpret_cast(buf); - cache_t* pc; - uint8_t cacheOption; - // number of bytes left to write - must be before goto statements - size_t nToWrite = nbyte; - size_t n; - // error if not a normal file or is read-only - if (!isFile() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // seek to end of file if append flag - if ((m_flags & F_APPEND)) { - if (!seekSet(m_fileSize)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Don't exceed max fileSize. - if (nbyte > (0XFFFFFFFF - m_curPosition)) { - DBG_FAIL_MACRO; - goto fail; - } - while (nToWrite) { - uint8_t blockOfCluster = m_vol->blockOfCluster(m_curPosition); - uint16_t blockOffset = m_curPosition & 0X1FF; - if (blockOfCluster == 0 && blockOffset == 0) { - // start of new cluster - if (m_curCluster != 0) { - int8_t fg = m_vol->fatGet(m_curCluster, &m_curCluster); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg == 0) { - // add cluster if at end of chain - if (!addCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - } - } else { - if (m_firstCluster == 0) { - // allocate first cluster of file - if (!addCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - m_firstCluster = m_curCluster; - } else { - m_curCluster = m_firstCluster; - } - } - } - // block for data write - uint32_t block = m_vol->clusterFirstBlock(m_curCluster) + blockOfCluster; - - if (blockOffset != 0 || nToWrite < 512) { - // partial block - must use cache - // max space in block - n = 512 - blockOffset; - // lesser of space and amount to write - if (n > nToWrite) { - n = nToWrite; - } - - if (blockOffset == 0 && m_curPosition >= m_fileSize) { - // start of new block don't need to read into cache - cacheOption = FatCache::CACHE_RESERVE_FOR_WRITE; - } else { - // rewrite part of block - cacheOption = FatCache::CACHE_FOR_WRITE; - } - pc = m_vol->cacheFetchData(block, cacheOption); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - uint8_t* dst = pc->data + blockOffset; - memcpy(dst, src, n); - if (512 == (n + blockOffset)) { - // Force write if block is full - improves large writes. - if (!m_vol->cacheSyncData()) { - DBG_FAIL_MACRO; - goto fail; - } - } -#if USE_MULTI_BLOCK_IO - } else if (nToWrite >= 1024) { - // use multiple block write command - uint8_t maxBlocks = m_vol->blocksPerCluster() - blockOfCluster; - size_t nb = nToWrite >> 9; - if (nb > maxBlocks) { - nb = maxBlocks; - } - n = 512*nb; - if (m_vol->cacheBlockNumber() <= block - && block < (m_vol->cacheBlockNumber() + nb)) { - // invalidate cache if block is in cache - m_vol->cacheInvalidate(); - } - if (!m_vol->writeBlocks(block, src, nb)) { - DBG_FAIL_MACRO; - goto fail; - } -#endif // USE_MULTI_BLOCK_IO - } else { - // use single block write command - n = 512; - if (m_vol->cacheBlockNumber() == block) { - m_vol->cacheInvalidate(); - } - if (!m_vol->writeBlock(block, src)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_curPosition += n; - src += n; - nToWrite -= n; - } - if (m_curPosition > m_fileSize) { - // update fileSize and insure sync will update dir entry - m_fileSize = m_curPosition; - m_flags |= F_FILE_DIR_DIRTY; - } else if (m_dateTime) { - // insure sync will update modified date and time - m_flags |= F_FILE_DIR_DIRTY; - } - - if (m_flags & F_SYNC) { - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - } - return nbyte; - -fail: - // return for write error - m_error |= WRITE_ERROR; - return -1; -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFile.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFile.h deleted file mode 100644 index bd156f53..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFile.h +++ /dev/null @@ -1,1038 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatFile_h -#define FatFile_h -/** - * \file - * \brief FatFile class - */ -// #include -#include -#include -#include -#include "FatLibConfig.h" -#include "FatApiConstants.h" -#include "FatStructs.h" -#include "FatVolume.h" - -namespace sdfat { - -class FatFileSystem; -//------------------------------------------------------------------------------ -// Stuff to store strings in AVR flash. -#ifdef __AVR__ -#include -#else // __AVR__ -#ifndef PSTR -/** store literal string in flash for ARM */ -#define PSTR(x) (x) -#endif // PSTR -#ifndef pgm_read_byte -/** read 8-bits from flash for ARM */ -#define pgm_read_byte(addr) (*(const unsigned char*)(addr)) -#endif // pgm_read_byte -#ifndef pgm_read_word -/** read 16-bits from flash for ARM */ -#define pgm_read_word(addr) (*(const uint16_t*)(addr)) -#endif // pgm_read_word -#ifndef PROGMEM -/** store in flash for ARM */ -#define PROGMEM -#endif // PROGMEM -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** - * \struct FatPos_t - * \brief Internal type for file position - do not use in user apps. - */ -struct FatPos_t { - /** stream position */ - uint32_t position; - /** cluster for position */ - uint32_t cluster; - FatPos_t() : position(0), cluster(0) {} -}; -//------------------------------------------------------------------------------ -/** Expression for path name separator. */ -#define isDirSeparator(c) ((c) == '/') -//------------------------------------------------------------------------------ -/** - * \struct fname_t - * \brief Internal type for Short File Name - do not use in user apps. - */ -struct fname_t { - /** Flags for base and extension character case and LFN. */ - uint8_t flags; - /** length of Long File Name */ - size_t len; - /** Long File Name start. */ - const char* lfn; - /** position for sequence number */ - uint8_t seqPos; - /** Short File Name */ - uint8_t sfn[11]; -}; -/** Derived from a LFN with loss or conversion of characters. */ -const uint8_t FNAME_FLAG_LOST_CHARS = 0X01; -/** Base-name or extension has mixed case. */ -const uint8_t FNAME_FLAG_MIXED_CASE = 0X02; -/** LFN entries are required for file name. */ -const uint8_t FNAME_FLAG_NEED_LFN = - FNAME_FLAG_LOST_CHARS | FNAME_FLAG_MIXED_CASE; -/** Filename base-name is all lower case */ -const uint8_t FNAME_FLAG_LC_BASE = DIR_NT_LC_BASE; -/** Filename extension is all lower case. */ -const uint8_t FNAME_FLAG_LC_EXT = DIR_NT_LC_EXT; -//============================================================================== -/** - * \class FatFile - * \brief Basic file class. - */ -class FatFile { - public: - /** Create an instance. */ - FatFile() : m_attr(FILE_ATTR_CLOSED), m_error(0) {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t). - */ - FatFile(const char* path, oflag_t oflag) { - m_attr = FILE_ATTR_CLOSED; - m_error = 0; - open(path, oflag); - } -#if DESTRUCTOR_CLOSES_FILE - ~FatFile() { - if (isOpen()) { - close(); - } - } -#endif // DESTRUCTOR_CLOSES_FILE - -#if ENABLE_ARDUINO_FEATURES - /** List directory contents. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } - /** %Print a directory date field. - * - * Format is yyyy-mm-dd. - * - * \param[in] fatDate The date field from a directory entry. - */ - static void printFatDate(uint16_t fatDate) { - printFatDate(&Serial, fatDate); - } - /** %Print a directory time field. - * - * Format is hh:mm:ss. - * - * \param[in] fatTime The time field from a directory entry. - */ - static void printFatTime(uint16_t fatTime) { - printFatTime(&Serial, fatTime); - } - /** Print a file's name. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - size_t printName() { - return FatFile::printName(&Serial); - } -#endif // ENABLE_ARDUINO_FEATURES - - /** \return value of writeError */ - bool getWriteError() { - return m_error & WRITE_ERROR; - } - /** Set writeError to zero */ - void clearWriteError() { - m_error &= ~WRITE_ERROR; - } - /** Clear all error bits. */ - void clearError() { - m_error = 0; - } - /** \return All error bits. */ - uint8_t getError() { - return m_error; - } - /** get position for streams - * \param[out] pos struct to receive position - */ - void getpos(FatPos_t* pos); - /** set position for streams - * \param[out] pos struct with value for new position - */ - void setpos(FatPos_t* pos); - /** \return The number of bytes available from the current position - * to EOF for normal files. Zero is returned for directory files. - */ - uint32_t available() { - return isFile() ? fileSize() - curPosition() : 0; - } - /** Close a file and force cached data and directory information - * to be written to the storage device. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool close(); - /** Check for contiguous file and return its raw block range. - * - * \param[out] bgnBlock the first block address for the file. - * \param[out] endBlock the last block address for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); - /** Create and open a new contiguous file of a specified size. - * - * \param[in] dirFile The directory where the file will be created. - * \param[in] path A path with a valid file name. - * \param[in] size The desired file size. - * \param[in] startCluster The desired startCluster. - * - * \return The value true is returned for success and - * the value false, is returned for failure. - */ - bool createContiguous(FatFile* dirFile, const char* path, - uint32_t size, uint32_t startCluster = 0); - /** Create and open a new contiguous file of a specified size. - * - * \param[in] path A path with a valid file name. - * \param[in] size The desired file size. - * \param[in] startCluster The desired startCluster. - * - * \return The value true is returned for success and - * the value false, is returned for failure. - */ - bool createContiguous(const char* path, - uint32_t size, uint32_t startCluster = 0) { - return createContiguous(m_cwd, path, size, startCluster); - } - /** \return The current cluster number for a file or directory. */ - uint32_t curCluster() const { - return m_curCluster; - } - /** \return The current position for a file or directory. */ - uint32_t curPosition() const { - return m_curPosition; - } - /** \return Current working directory */ - static FatFile* cwd() { - return m_cwd; - } - /** Set the date/time callback function - * - * \param[in] dateTime The user's call back function. The callback - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here - * - * // return date using FAT_DATE macro to format fields - * *date = FAT_DATE(year, month, day); - * - * // return time using FAT_TIME macro to format fields - * *time = FAT_TIME(hour, minute, second); - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - * See the timestamp() function. - */ - static void dateTimeCallback( - void (*dateTime)(uint16_t* date, uint16_t* time)) { - m_dateTime = dateTime; - } - /** Cancel the date/time callback function. */ - static void dateTimeCallbackCancel() { - m_dateTime = 0; - } - /** Return a file's directory entry. - * - * \param[out] dir Location for return of the file's directory entry. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool dirEntry(dir_t* dir); - /** - * \return The index of this file in it's directory. - */ - uint16_t dirIndex() { - return m_dirIndex; - } - /** Format the name field of \a dir into the 13 byte array - * \a name in standard 8.3 short name format. - * - * \param[in] dir The directory structure containing the name. - * \param[out] name A 13 byte char array for the formatted name. - * \return length of the name. - */ - static uint8_t dirName(const dir_t* dir, char* name); - /** \return The number of bytes allocated to a directory or zero - * if an error occurs. - */ - uint32_t dirSize(); - /** Dump file in Hex - * \param[in] pr Print stream for list. - * \param[in] pos Start position in file. - * \param[in] n number of locations to dump. - */ - void dmpFile(print_t* pr, uint32_t pos, size_t n); - /** Test for the existence of a file in a directory - * - * \param[in] path Path of the file to be tested for. - * - * The calling instance must be an open directory file. - * - * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory - * dirFile. - * - * \return true if the file exists else false. - */ - bool exists(const char* path) { - FatFile file; - return file.open(this, path, O_RDONLY); - } - /** - * Get a string from a file. - * - * fgets() reads bytes from a file into the array pointed to by \a str, until - * \a num - 1 bytes are read, or a delimiter is read and transferred to \a str, - * or end-of-file is encountered. The string is then terminated - * with a null byte. - * - * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' - * terminates the string for Windows text files which use CRLF for newline. - * - * \param[out] str Pointer to the array where the string is stored. - * \param[in] num Maximum number of characters to be read - * (including the final null byte). Usually the length - * of the array \a str is used. - * \param[in] delim Optional set of delimiters. The default is "\n". - * - * \return For success fgets() returns the length of the string in \a str. - * If no data is read, fgets() returns zero for EOF or -1 if an error occurred. - */ - int16_t fgets(char* str, int16_t num, char* delim = 0); - /** \return The total number of bytes in a file. */ - uint32_t fileSize() const { - return m_fileSize; - } - /** \return The first cluster number for a file or directory. */ - uint32_t firstCluster() const { - return m_firstCluster; - } - /** - * Get a file's name followed by a zero byte. - * - * \param[out] name An array of characters for the file's name. - * \param[in] size The size of the array in bytes. The array - * must be at least 13 bytes long. The file's name will be - * truncated if the file's name is too long. - * \return The value true, is returned for success and - * the value false, is returned for failure. - */ - bool getName(char* name, size_t size); - /** - * Get a file's Short File Name followed by a zero byte. - * - * \param[out] name An array of characters for the file's name. - * The array must be at least 13 bytes long. - * \return The value true, is returned for success and - * the value false, is returned for failure. - */ - bool getSFN(char* name); - /** \return True if this is a directory else false. */ - bool isDir() const { - return m_attr & FILE_ATTR_DIR; - } - /** \return True if this is a normal file else false. */ - bool isFile() const { - return m_attr & FILE_ATTR_FILE; - } - /** \return True if this is a hidden file else false. */ - bool isHidden() const { - return m_attr & FILE_ATTR_HIDDEN; - } - /** \return true if this file has a Long File Name. */ - bool isLFN() const { - return m_lfnOrd; - } - /** \return True if this is an open file/directory else false. */ - bool isOpen() const { - return m_attr; - } - /** \return True if this is the root directory. */ - bool isRoot() const { - return m_attr & FILE_ATTR_ROOT; - } - /** \return True if this is the FAT32 root directory. */ - bool isRoot32() const { - return m_attr & FILE_ATTR_ROOT32; - } - /** \return True if this is the FAT12 of FAT16 root directory. */ - bool isRootFixed() const { - return m_attr & FILE_ATTR_ROOT_FIXED; - } - /** \return True if file is read-only */ - bool isReadOnly() const { - return m_attr & FILE_ATTR_READ_ONLY; - } - /** \return True if this is a subdirectory else false. */ - bool isSubDir() const { - return m_attr & FILE_ATTR_SUBDIR; - } - /** \return True if this is a system file else false. */ - bool isSystem() const { - return m_attr & FILE_ATTR_SYSTEM; - } - /** Check for a legal 8.3 character. - * \param[in] c Character to be checked. - * \return true for a legal 8.3 character else false. - */ - static bool legal83Char(uint8_t c) { - if (c == '"' || c == '|') { - return false; - } - // *+,./ - if (0X2A <= c && c <= 0X2F && c != 0X2D) { - return false; - } - // :;<=>? - if (0X3A <= c && c <= 0X3F) { - return false; - } - // [\] - if (0X5B <= c && c <= 0X5D) { - return false; - } - return 0X20 < c && c < 0X7F; - } - /** List directory contents. - * - * \param[in] pr Print stream for list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \param[in] indent Amount of space before file name. Used for recursive - * list to indicate subdirectory level. - * - * \return true for success or false if an error occurred. - */ - bool ls(print_t* pr, uint8_t flags = 0, uint8_t indent = 0); - /** Make a new directory. - * - * \param[in] dir An open FatFile instance for the directory that will - * contain the new directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the new directory. - * - * \param[in] pFlag Create missing parent directories if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool mkdir(FatFile* dir, const char* path, bool pFlag = true); - /** Open a file in the volume working directory of a FatFileSystem. - * - * \param[in] fs File System where the file is located. - * - * \param[in] path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool open(FatFileSystem* fs, const char* path, oflag_t oflag); - /** Open a file by index. - * - * \param[in] dirFile An open FatFile instance for the directory. - * - * \param[in] index The \a index of the directory entry for the file to be - * opened. The value for \a index is (directory file position)/32. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * See open() by path for definition of flags. - * \return true for success or false for failure. - */ - bool open(FatFile* dirFile, uint16_t index, oflag_t oflag); - /** Open a file or directory by name. - * - * \param[in] dirFile An open FatFile instance for the directory containing - * the file to be opened. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of flags from the following list - * - * O_RDONLY - Open for reading. - * - * O_READ - Same as O_RDONLY (GNU). - * - * O_WRONLY - Open for writing. - * - * O_WRITE - Same as O_WRONLY (GNU). - * - * O_RDWR - Open for reading and writing. - * - * O_APPEND - If set, the file offset shall be set to the end of the - * file prior to each write. - * - * O_AT_END - Set the initial position at the end of the file. - * - * O_CREAT - If the file exists, this flag has no effect except as noted - * under O_EXCL below. Otherwise, the file shall be created - * - * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists. - * - * O_SYNC - Call sync() after each write. This flag should not be used with - * write(uint8_t) or any functions do character at a time writes since sync() - * will be called after each byte. - * - * O_TRUNC - If the file exists and is a regular file, and the file is - * successfully opened and is not read only, its length shall be truncated to 0. - * - * WARNING: A given file must not be opened by more than one FatFile object - * or file corruption may occur. - * - * \note Directory files must be opened read only. Write and truncation is - * not allowed for directory files. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool open(FatFile* dirFile, const char* path, oflag_t oflag); - /** Open a file in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool open(const char* path, oflag_t oflag = O_RDONLY) { - return open(m_cwd, path, oflag); - } - /** Open current working directory. - * - * \return true for success or false for failure. - */ - bool openCwd(); - /** Open the next file or subdirectory in a directory. - * - * \param[in] dirFile An open FatFile instance for the directory - * containing the file to be opened. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * \return true for success or false for failure. - */ - bool openNext(FatFile* dirFile, oflag_t oflag = O_RDONLY); - /** Open a volume's root directory. - * - * \param[in] vol The FAT volume containing the root directory to be opened. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool openRoot(FatVolume* vol); - /** Return the next available byte without consuming it. - * - * \return The byte if no error and not at eof else -1; - */ - int peek(); - /** Print a file's creation date and time - * - * \param[in] pr Print stream for output. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool printCreateDateTime(print_t* pr); - /** %Print a directory date field. - * - * Format is yyyy-mm-dd. - * - * \param[in] pr Print stream for output. - * \param[in] fatDate The date field from a directory entry. - */ - static void printFatDate(print_t* pr, uint16_t fatDate); - /** %Print a directory time field. - * - * Format is hh:mm:ss. - * - * \param[in] pr Print stream for output. - * \param[in] fatTime The time field from a directory entry. - */ - static void printFatTime(print_t* pr, uint16_t fatTime); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(float value, char term, uint8_t prec = 2); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(int16_t value, char term); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(uint16_t value, char term); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(int32_t value, char term); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(uint32_t value, char term); - /** Print a file's modify date and time - * - * \param[in] pr Print stream for output. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool printModifyDateTime(print_t* pr); - /** Print a file's name - * - * \param[in] pr Print stream for output. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - size_t printName(print_t* pr); - /** Print a file's size. - * - * \param[in] pr Print stream for output. - * - * \return The number of characters printed is returned - * for success and zero is returned for failure. - */ - size_t printFileSize(print_t* pr); - /** Print a file's Short File Name. - * - * \param[in] pr Print stream for output. - * - * \return The number of characters printed is returned - * for success and zero is returned for failure. - */ - size_t printSFN(print_t* pr); - /** Read the next byte from a file. - * - * \return For success read returns the next byte in the file as an int. - * If an error occurs or end of file is reached -1 is returned. - */ - int read() { - uint8_t b; - return read(&b, 1) == 1 ? b : -1; - } - /** Read data from a file starting at the current position. - * - * \param[out] buf Pointer to the location that will receive the data. - * - * \param[in] nbyte Maximum number of bytes to read. - * - * \return For success read() returns the number of bytes read. - * A value less than \a nbyte, including zero, will be returned - * if end of file is reached. - * If an error occurs, read() returns -1. Possible errors include - * read() called before a file has been opened, corrupt file system - * or an I/O error occurred. - */ - int read(void* buf, size_t nbyte); - /** Read the next directory entry from a directory file. - * - * \param[out] dir The dir_t struct that will receive the data. - * - * \return For success readDir() returns the number of bytes read. - * A value of zero will be returned if end of file is reached. - * If an error occurs, readDir() returns -1. Possible errors include - * readDir() called before a directory has been opened, this is not - * a directory file or an I/O error occurred. - */ - int8_t readDir(dir_t* dir); - /** Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool remove(); - /** Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \param[in] dirFile The directory that contains the file. - * \param[in] path Path for the file to be removed. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - static bool remove(FatFile* dirFile, const char* path); - /** Set the file's current position to zero. */ - void rewind() { - seekSet(0); - } - /** Rename a file or subdirectory. - * - * \note the file will be moved to the current working directory. - * - * \param[in] newPath New path name for the file/directory. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rename(const char* newPath) { - return rename(cwd(), newPath); - } - /** Rename a file or subdirectory. - * - * \param[in] dirFile Directory for the new path. - * \param[in] newPath New path name for the file/directory. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rename(FatFile* dirFile, const char* newPath); - /** Remove a directory file. - * - * The directory file will be removed only if it is empty and is not the - * root directory. rmdir() follows DOS and Windows and ignores the - * read-only attribute for the directory. - * - * \note This function should not be used to delete the 8.3 version of a - * directory that has a long name. For example if a directory has the - * long name "New folder" you should not delete the 8.3 name "NEWFOL~1". - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rmdir(); - /** Recursively delete a directory and all contained files. - * - * This is like the Unix/Linux 'rm -rf *' if called with the root directory - * hence the name. - * - * Warning - This will remove all contents of the directory including - * subdirectories. The directory will then be removed if it is not root. - * The read-only attribute for files will be ignored. - * - * \note This function should not be used to delete the 8.3 version of - * a directory that has a long name. See remove() and rmdir(). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rmRfStar(); - /** Set the files position to current position + \a pos. See seekSet(). - * \param[in] offset The new position in bytes from the current position. - * \return true for success or false for failure. - */ - bool seekCur(int32_t offset) { - return seekSet(m_curPosition + offset); - } - /** Set the files position to end-of-file + \a offset. See seekSet(). - * Can't be used for directory files since file size is not defined. - * \param[in] offset The new position in bytes from end-of-file. - * \return true for success or false for failure. - */ - bool seekEnd(int32_t offset = 0) { - return isFile() ? seekSet(m_fileSize + offset) : false; - } - /** Sets a file's position. - * - * \param[in] pos The new position in bytes from the beginning of the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool seekSet(uint32_t pos); - /** Set the current working directory. - * - * \param[in] dir New current working directory. - * - * \return true for success else false. - */ - static bool setCwd(FatFile* dir) { - if (!dir->isDir()) { - return false; - } - m_cwd = dir; - return true; - } - /** \return first block of file or zero for empty file. */ - uint32_t firstBlock() { - if (m_firstCluster) { - return m_vol->clusterFirstBlock(m_firstCluster); - } - return 0; - } - /** The sync() call causes all modified data and directory fields - * to be written to the storage device. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool sync(); - /** Copy a file's timestamps - * - * \param[in] file File to copy timestamps from. - * - * \note - * Modify and access timestamps may be overwritten if a date time callback - * function has been set by dateTimeCallback(). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool timestamp(FatFile* file); - /** Set a file's timestamps in its directory entry. - * - * \param[in] flags Values for \a flags are constructed by a bitwise-inclusive - * OR of flags from the following list - * - * T_ACCESS - Set the file's last access date. - * - * T_CREATE - Set the file's creation date and time. - * - * T_WRITE - Set the file's last write/modification date and time. - * - * \param[in] year Valid range 1980 - 2107 inclusive. - * - * \param[in] month Valid range 1 - 12 inclusive. - * - * \param[in] day Valid range 1 - 31 inclusive. - * - * \param[in] hour Valid range 0 - 23 inclusive. - * - * \param[in] minute Valid range 0 - 59 inclusive. - * - * \param[in] second Valid range 0 - 59 inclusive - * - * \note It is possible to set an invalid date since there is no check for - * the number of days in a month. - * - * \note - * Modify and access timestamps may be overwritten if a date time callback - * function has been set by dateTimeCallback(). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, - uint8_t hour, uint8_t minute, uint8_t second); - /** Type of file. You should use isFile() or isDir() instead of fileType() - * if possible. - * - * \return The file or directory type. - */ - uint8_t fileAttr() const { - return m_attr; - } - /** Truncate a file to a specified length. The current file position - * will be maintained if it is less than or equal to \a length otherwise - * it will be set to end of file. - * - * \param[in] length The desired length for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool truncate(uint32_t length); - /** \return FatVolume that contains this file. */ - FatVolume* volume() const { - return m_vol; - } - /** Write a string to a file. Used by the Arduino Print class. - * \param[in] str Pointer to the string. - * Use getWriteError to check for errors. - * \return count of characters written for success or -1 for failure. - */ - int write(const char* str) { - return write(str, strlen(str)); - } - /** Write a single byte. - * \param[in] b The byte to be written. - * \return +1 for success or -1 for failure. - */ - int write(uint8_t b) { - return write(&b, 1); - } - /** Write data to an open file. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] nbyte Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an I/O error. - * - */ - int write(const void* buf, size_t nbyte); -//------------------------------------------------------------------------------ - private: - /** This file has not been opened. */ - static const uint8_t FILE_ATTR_CLOSED = 0; - /** File is read-only. */ - static const uint8_t FILE_ATTR_READ_ONLY = DIR_ATT_READ_ONLY; - /** File should be hidden in directory listings. */ - static const uint8_t FILE_ATTR_HIDDEN = DIR_ATT_HIDDEN; - /** Entry is for a system file. */ - static const uint8_t FILE_ATTR_SYSTEM = DIR_ATT_SYSTEM; - /** Entry for normal data file */ - static const uint8_t FILE_ATTR_FILE = 0X08; - /** Entry is for a subdirectory */ - static const uint8_t FILE_ATTR_SUBDIR = DIR_ATT_DIRECTORY; - /** A FAT12 or FAT16 root directory */ - static const uint8_t FILE_ATTR_ROOT_FIXED = 0X20; - /** A FAT32 root directory */ - static const uint8_t FILE_ATTR_ROOT32 = 0X40; - /** Entry is for root. */ - static const uint8_t FILE_ATTR_ROOT = FILE_ATTR_ROOT_FIXED | FILE_ATTR_ROOT32; - /** Directory type bits */ - static const uint8_t FILE_ATTR_DIR = FILE_ATTR_SUBDIR | FILE_ATTR_ROOT; - /** Attributes to copy from directory entry */ - static const uint8_t FILE_ATTR_COPY = DIR_ATT_READ_ONLY | DIR_ATT_HIDDEN | - DIR_ATT_SYSTEM | DIR_ATT_DIRECTORY; - - /** experimental don't use */ - - bool openParent(FatFile* dir); - - // private functions - bool addCluster(); - bool addDirCluster(); - dir_t* cacheDirEntry(uint8_t action); - static uint8_t lfnChecksum(uint8_t* name); - bool lfnUniqueSfn(fname_t* fname); - bool openCluster(FatFile* file); - static bool parsePathName(const char* str, fname_t* fname, const char** ptr); - bool mkdir(FatFile* parent, fname_t* fname); - bool open(FatFile* dirFile, fname_t* fname, oflag_t oflag); - bool openCachedEntry(FatFile* dirFile, uint16_t cacheIndex, oflag_t oflag, - uint8_t lfnOrd); - bool readLBN(uint32_t* lbn); - dir_t* readDirCache(bool skipReadOk = false); - bool setDirSize(); - - // bits defined in m_flags - static const uint8_t F_READ = 0X01; - static const uint8_t F_WRITE = 0X02; - static const uint8_t F_FILE_DIR_DIRTY = 0X04; - static const uint8_t F_APPEND = 0X08; - static const uint8_t F_SYNC = 0X80; - - - // global pointer to cwd dir - static FatFile* m_cwd; - // data time callback function - static void (*m_dateTime)(uint16_t* date, uint16_t* time); - // private data - static const uint8_t WRITE_ERROR = 0X1; - static const uint8_t READ_ERROR = 0X2; - uint8_t m_attr; // File attributes - uint8_t m_error; // Error bits. - uint8_t m_flags; // See above for definition of m_flags bits - uint8_t m_lfnOrd; - uint16_t m_dirIndex; // index of directory entry in dir file - FatVolume* m_vol; // volume where file is located - uint32_t m_dirCluster; - uint32_t m_curCluster; // cluster for current file position - uint32_t m_curPosition; // current file position - uint32_t m_dirBlock; // block for this files directory entry - uint32_t m_fileSize; // file size in bytes - uint32_t m_firstCluster; // first cluster of file -}; - -}; // namespace sdfat - -#endif // FatFile_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileLFN.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileLFN.cpp deleted file mode 100644 index c260b15b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileLFN.cpp +++ /dev/null @@ -1,696 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FatFile.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -// -uint8_t FatFile::lfnChecksum(uint8_t* name) { - uint8_t sum = 0; - for (uint8_t i = 0; i < 11; i++) { - sum = (((sum & 1) << 7) | ((sum & 0xfe) >> 1)) + name[i]; - } - return sum; -} -#if USE_LONG_FILE_NAMES -//------------------------------------------------------------------------------ -// Saves about 90 bytes of flash on 328 over tolower(). -inline char lfnToLower(char c) { - return 'A' <= c && c <= 'Z' ? c + 'a' - 'A' : c; -} -//------------------------------------------------------------------------------ -// Daniel Bernstein University of Illinois at Chicago. -// Original had + instead of ^ -static uint16_t Bernstein(uint16_t hash, const char *str, size_t len) { - for (size_t i = 0; i < len; i++) { - // hash = hash * 33 ^ str[i]; - hash = ((hash << 5) + hash) ^ str[i]; - } - return hash; -} -//------------------------------------------------------------------------------ -/** - * Fetch a 16-bit long file name character. - * - * \param[in] ldir Pointer to long file name directory entry. - * \param[in] i Index of character. - * \return The 16-bit character. - */ -static uint16_t lfnGetChar(ldir_t *ldir, uint8_t i) { - if (i < LDIR_NAME1_DIM) { - return ldir->name1[i]; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM)) { - return ldir->name2[i - LDIR_NAME1_DIM]; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM + LDIR_NAME2_DIM)) { - return ldir->name3[i - LDIR_NAME1_DIM - LDIR_NAME2_DIM]; - } - return 0; -} -//------------------------------------------------------------------------------ -static bool lfnGetName(ldir_t *ldir, char* name, size_t n) { - uint8_t i; - size_t k = 13*((ldir->ord & 0X1F) - 1); - for (i = 0; i < 13; i++) { - uint16_t c = lfnGetChar(ldir, i); - if (c == 0 || k >= n) { - break; - } - name[k++] = c >= 0X7F ? '?' : c; - } - // Terminate with zero byte if name fits. - if (k < n && (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY)) { - name[k] = 0; - } - // Truncate if name is too long. - name[n - 1] = 0; - return true; -} -//------------------------------------------------------------------------------ -inline bool lfnLegalChar(char c) { - if (c == '/' || c == '\\' || c == '"' || c == '*' || - c == ':' || c == '<' || c == '>' || c == '?' || c == '|') { - return false; - } - return 0X1F < c && c < 0X7F; -} -//------------------------------------------------------------------------------ -/** - * Store a 16-bit long file name character. - * - * \param[in] ldir Pointer to long file name directory entry. - * \param[in] i Index of character. - * \param[in] c The 16-bit character. - */ -static void lfnPutChar(ldir_t *ldir, uint8_t i, uint16_t c) { - if (i < LDIR_NAME1_DIM) { - ldir->name1[i] = c; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM)) { - ldir->name2[i - LDIR_NAME1_DIM] = c; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM + LDIR_NAME2_DIM)) { - ldir->name3[i - LDIR_NAME1_DIM - LDIR_NAME2_DIM] = c; - } -} -//------------------------------------------------------------------------------ -static void lfnPutName(ldir_t *ldir, const char* name, size_t n) { - size_t k = 13*((ldir->ord & 0X1F) - 1); - for (uint8_t i = 0; i < 13; i++, k++) { - uint16_t c = k < n ? name[k] : k == n ? 0 : 0XFFFF; - lfnPutChar(ldir, i, c); - } -} -//============================================================================== -bool FatFile::getName(char* name, size_t size) { - FatFile dirFile; - ldir_t* ldir; - if (!isOpen() || size < 13) { - DBG_FAIL_MACRO; - goto fail; - } - if (!isLFN()) { - return getSFN(name); - } - if (!dirFile.openCluster(this)) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t ord = 1; ord <= m_lfnOrd; ord++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - ord))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr != DIR_ATT_LONG_NAME) { - DBG_FAIL_MACRO; - goto fail; - } - if (ord != (ldir->ord & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - if (!lfnGetName(ldir, name, size)) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - return true; - } - } - // Fall into fail. - DBG_FAIL_MACRO; - -fail: - name[0] = 0; - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::openCluster(FatFile* file) { - if (file->m_dirCluster == 0) { - return openRoot(file->m_vol); - } - memset(this, 0, sizeof(FatFile)); - m_attr = FILE_ATTR_SUBDIR; - m_flags = F_READ; - m_vol = file->m_vol; - m_firstCluster = file->m_dirCluster; - return true; -} -//------------------------------------------------------------------------------ -bool FatFile::parsePathName(const char* path, - fname_t* fname, const char** ptr) { - char c; - bool is83; - uint8_t bit = DIR_NT_LC_BASE; - uint8_t lc = 0; - uint8_t uc = 0; - uint8_t i = 0; - uint8_t in = 7; - int end; - int len = 0; - int si; - int dot; - - // Skip leading spaces. - while (*path == ' ') { - path++; - } - fname->lfn = path; - - for (len = 0; ; len++) { - c = path[len]; - if (c == 0 || isDirSeparator(c)) { - break; - } - if (!lfnLegalChar(c)) { - return false; - } - } - // Advance to next path component. - for (end = len; path[end] == ' ' || isDirSeparator(path[end]); end++) {} - *ptr = &path[end]; - - // Back over spaces and dots. - while (len) { - c = path[len - 1]; - if (c != '.' && c != ' ') { - break; - } - len--; - } - // Max length of LFN is 255. - if (len > 255) { - return false; - } - fname->len = len; - // Blank file short name. - for (uint8_t k = 0; k < 11; k++) { - fname->sfn[k] = ' '; - } - // skip leading spaces and dots. - for (si = 0; path[si] == '.' || path[si] == ' '; si++) {} - // Not 8.3 if leading dot or space. - is83 = !si; - - // find last dot. - for (dot = len - 1; dot >= 0 && path[dot] != '.'; dot--) {} - for (; si < len; si++) { - c = path[si]; - if (c == ' ' || (c == '.' && dot != si)) { - is83 = false; - continue; - } - if (!legal83Char(c) && si != dot) { - is83 = false; - c = '_'; - } - if (si == dot || i > in) { - if (in == 10) { - // Done - extension longer than three characters. - is83 = false; - break; - } - if (si != dot) { - is83 = false; - } - // Break if no dot and base-name is longer than eight characters. - if (si > dot) { - break; - } - si = dot; - in = 10; // Max index for full 8.3 name. - i = 8; // Place for extension. - bit = DIR_NT_LC_EXT; // bit for extension. - } else { - if ('a' <= c && c <= 'z') { - c += 'A' - 'a'; - lc |= bit; - } else if ('A' <= c && c <= 'Z') { - uc |= bit; - } - fname->sfn[i++] = c; - if (i < 7) { - fname->seqPos = i; - } - } - } - if (fname->sfn[0] == ' ') { - return false; - } - - if (is83) { - fname->flags = lc & uc ? FNAME_FLAG_MIXED_CASE : lc; - } else { - fname->flags = FNAME_FLAG_LOST_CHARS; - fname->sfn[fname->seqPos] = '~'; - fname->sfn[fname->seqPos + 1] = '1'; - } - return true; -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { - bool fnameFound = false; - uint8_t lfnOrd = 0; - uint8_t freeNeed; - uint8_t freeFound = 0; - uint8_t ord = 0; - uint8_t chksum = 0; - uint16_t freeIndex = 0; - uint16_t curIndex; - dir_t* dir; - ldir_t* ldir; - size_t len = fname->len; - - if (!dirFile->isDir() || isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - // Number of directory entries needed. - freeNeed = fname->flags & FNAME_FLAG_NEED_LFN ? 1 + (len + 12)/13 : 1; - - dirFile->rewind(); - while (1) { - curIndex = dirFile->m_curPosition/32; - dir = dirFile->readDirCache(true); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - goto fail; - } - // At EOF - goto create; - } - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == DIR_NAME_FREE) { - if (freeFound == 0) { - freeIndex = curIndex; - } - if (freeFound < freeNeed) { - freeFound++; - } - if (dir->name[0] == DIR_NAME_FREE) { - goto create; - } - } else { - if (freeFound < freeNeed) { - freeFound = 0; - } - } - // skip empty slot or '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - lfnOrd = 0; - } else if (DIR_IS_LONG_NAME(dir)) { - ldir_t *ldir = reinterpret_cast(dir); - if (!lfnOrd) { - if ((ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) == 0) { - continue; - } - lfnOrd = ord = ldir->ord & 0X1F; - chksum = ldir->chksum; - } else if (ldir->ord != --ord || chksum != ldir->chksum) { - lfnOrd = 0; - continue; - } - size_t k = 13*(ord - 1); - if (k >= len) { - // Not found. - lfnOrd = 0; - continue; - } - for (uint8_t i = 0; i < 13; i++) { - uint16_t u = lfnGetChar(ldir, i); - if (k == len) { - if (u != 0) { - // Not found. - lfnOrd = 0; - } - break; - } - if (u > 255 || lfnToLower(u) != lfnToLower(fname->lfn[k++])) { - // Not found. - lfnOrd = 0; - break; - } - } - } else if (DIR_IS_FILE_OR_SUBDIR(dir)) { - if (lfnOrd) { - if (1 == ord && lfnChecksum(dir->name) == chksum) { - goto found; - } - DBG_FAIL_MACRO; - goto fail; - } - if (!memcmp(dir->name, fname->sfn, sizeof(fname->sfn))) { - if (!(fname->flags & FNAME_FLAG_LOST_CHARS)) { - goto found; - } - fnameFound = true; - } - } else { - lfnOrd = 0; - } - } - -found: - // Don't open if create only. - if (oflag & O_EXCL) { - DBG_FAIL_MACRO; - goto fail; - } - goto open; - -create: - // don't create unless O_CREAT and write mode. - if (!(oflag & O_CREAT) || !isWriteMode(oflag)) { - DBG_FAIL_MACRO; - goto fail; - } - // If at EOF start in next cluster. - if (freeFound == 0) { - freeIndex = curIndex; - } - - while (freeFound < freeNeed) { - dir = dirFile->readDirCache(); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - goto fail; - } - // EOF if no error. - break; - } - freeFound++; - } - while (freeFound < freeNeed) { - // Will fail if FAT16 root. - if (!dirFile->addDirCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - // Done if more than one block per cluster. Max freeNeed is 21. - if (dirFile->m_vol->blocksPerCluster() > 1) { - break; - } - freeFound += 16; - } - if (fnameFound) { - if (!dirFile->lfnUniqueSfn(fname)) { - goto fail; - } - } - if (!dirFile->seekSet(32UL*freeIndex)) { - DBG_FAIL_MACRO; - goto fail; - } - lfnOrd = freeNeed - 1; - for (uint8_t ord = lfnOrd ; ord ; ord--) { - ldir = reinterpret_cast(dirFile->readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - dirFile->m_vol->cacheDirty(); - ldir->ord = ord == lfnOrd ? LDIR_ORD_LAST_LONG_ENTRY | ord : ord; - ldir->attr = DIR_ATT_LONG_NAME; - ldir->type = 0; - ldir->chksum = lfnChecksum(fname->sfn); - ldir->mustBeZero = 0; - lfnPutName(ldir, fname->lfn, len); - } - curIndex = dirFile->m_curPosition/32; - dir = dirFile->readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // initialize as empty file - memset(dir, 0, sizeof(dir_t)); - memcpy(dir->name, fname->sfn, 11); - - // Set base-name and extension lower case bits. - dir->reservedNT = (DIR_NT_LC_BASE | DIR_NT_LC_EXT) & fname->flags; - - // set timestamps - if (m_dateTime) { - // call user date/time function - uint16_t date, time; - m_dateTime(&date, &time); - dir->creationDate = date; - dir->creationTime = time; - } else { - // use default date/time - dir->creationDate = FAT_DEFAULT_DATE; - dir->creationTime = FAT_DEFAULT_TIME; - } - dir->lastAccessDate = dir->creationDate; - dir->lastWriteDate = dir->creationDate; - dir->lastWriteTime = dir->creationTime; - - // Force write of entry to device. - dirFile->m_vol->cacheDirty(); - -open: - // open entry in cache. - if (!openCachedEntry(dirFile, curIndex, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printName(print_t* pr) { - FatFile dirFile; - uint16_t u; - size_t n = 0; - ldir_t* ldir; - - if (!isLFN()) { - return printSFN(pr); - } - if (!dirFile.openCluster(this)) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t ord = 1; ord <= m_lfnOrd; ord++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - ord))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr != DIR_ATT_LONG_NAME || - ord != (ldir->ord & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t i = 0; i < 13; i++) { - u = lfnGetChar(ldir, i); - if (u == 0) { - // End of name. - break; - } - if (u > 0X7E) { - u = '?'; - } - pr->write(static_cast(u)); - n++; - } - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - return n; - } - } - // Fall into fail; - DBG_FAIL_MACRO; - -fail: - return 0; -} -//------------------------------------------------------------------------------ -bool FatFile::remove() { - bool last; - uint8_t chksum; - uint8_t ord; - FatFile dirFile; - dir_t* dir; - ldir_t* ldir; - - // Cant' remove not open for write. - if (!isFile() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // Free any clusters. - if (m_firstCluster && !m_vol->freeChain(m_firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // Cache directory entry. - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - chksum = lfnChecksum(dir->name); - - // Mark entry deleted. - dir->name[0] = DIR_NAME_DELETED; - - // Set this file closed. - m_attr = FILE_ATTR_CLOSED; - - // Write entry to device. - if (!m_vol->cacheSync()) { - DBG_FAIL_MACRO; - goto fail; - } - if (!isLFN()) { - // Done, no LFN entries. - return true; - } - if (!dirFile.openCluster(this)) { - DBG_FAIL_MACRO; - goto fail; - } - for (ord = 1; ord <= m_lfnOrd; ord++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - ord))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr != DIR_ATT_LONG_NAME || - ord != (ldir->ord & 0X1F) || - chksum != ldir->chksum) { - DBG_FAIL_MACRO; - goto fail; - } - last = ldir->ord & LDIR_ORD_LAST_LONG_ENTRY; - ldir->ord = DIR_NAME_DELETED; - m_vol->cacheDirty(); - if (last) { - if (!m_vol->cacheSync()) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - } - } - // Fall into fail. - DBG_FAIL_MACRO; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::lfnUniqueSfn(fname_t* fname) { - const uint8_t FIRST_HASH_SEQ = 2; // min value is 2 - uint8_t pos = fname->seqPos;; - dir_t *dir; - uint16_t hex; - - DBG_HALT_IF(!(fname->flags & FNAME_FLAG_LOST_CHARS)); - DBG_HALT_IF(fname->sfn[pos] != '~' && fname->sfn[pos + 1] != '1'); - - for (uint8_t seq = 2; seq < 100; seq++) { - if (seq < FIRST_HASH_SEQ) { - fname->sfn[pos + 1] = '0' + seq; - } else { - DBG_PRINT_IF(seq > FIRST_HASH_SEQ); - hex = Bernstein(seq + fname->len, fname->lfn, fname->len); - if (pos > 3) { - // Make space in name for ~HHHH. - pos = 3; - } - for (uint8_t i = pos + 4 ; i > pos; i--) { - uint8_t h = hex & 0XF; - fname->sfn[i] = h < 10 ? h + '0' : h + 'A' - 10; - hex >>= 4; - } - } - fname->sfn[pos] = '~'; - rewind(); - while (1) { - dir = readDirCache(true); - if (!dir) { - if (!getError()) { - // At EOF and name not found if no error. - goto done; - } - DBG_FAIL_MACRO; - goto fail; - } - if (dir->name[0] == DIR_NAME_FREE) { - goto done; - } - if (DIR_IS_FILE_OR_SUBDIR(dir) && !memcmp(fname->sfn, dir->name, 11)) { - // Name found - try another. - break; - } - } - } - // fall inti fail - too many tries. - DBG_FAIL_MACRO; - -fail: - return false; - -done: - return true; -} -#endif // #if USE_LONG_FILE_NAMES - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFilePrint.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFilePrint.cpp deleted file mode 100644 index 8cbcbcb2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFilePrint.cpp +++ /dev/null @@ -1,272 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -#include "FatFile.h" -#include "FmtNumber.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -// print uint8_t with width 2 -static void print2u(print_t* pr, uint8_t v) { - char c0 = '?'; - char c1 = '?'; - if (v < 100) { - c1 = v/10; - c0 = v - 10*c1 + '0'; - c1 += '0'; - } - pr->write(c1); - pr->write(c0); -} -//------------------------------------------------------------------------------ -static void printU32(print_t* pr, uint32_t v) { - char buf[11]; - char* ptr = buf + sizeof(buf); - *--ptr = 0; - pr->write(fmtDec(v, ptr)); -} -//------------------------------------------------------------------------------ -static void printHex(print_t* pr, uint8_t w, uint16_t h) { - char buf[5]; - char* ptr = buf + sizeof(buf); - *--ptr = 0; - for (uint8_t i = 0; i < w; i++) { - char c = h & 0XF; - *--ptr = c < 10 ? c + '0' : c + 'A' - 10; - h >>= 4; - } - pr->write(ptr); -} -//------------------------------------------------------------------------------ -void FatFile::dmpFile(print_t* pr, uint32_t pos, size_t n) { - char text[17]; - text[16] = 0; - if (n >= 0XFFF0) { - n = 0XFFF0; - } - if (!seekSet(pos)) { - return; - } - for (size_t i = 0; i <= n; i++) { - if ((i & 15) == 0) { - if (i) { - pr->write(' '); - pr->write(text); - if (i == n) { - break; - } - } - pr->write('\r'); - pr->write('\n'); - if (i >= n) { - break; - } - printHex(pr, 4, i); - pr->write(' '); - } - int16_t h = read(); - if (h < 0) { - break; - } - pr->write(' '); - printHex(pr, 2, h); - text[i&15] = ' ' <= h && h < 0X7F ? h : '.'; - } - pr->write('\r'); - pr->write('\n'); -} -//------------------------------------------------------------------------------ -bool FatFile::ls(print_t* pr, uint8_t flags, uint8_t indent) { - FatFile file; - if (!isDir() || getError()) { - DBG_FAIL_MACRO; - goto fail; - } - rewind(); - while (file.openNext(this, O_RDONLY)) { - if (!file.isHidden() || (flags & LS_A)) { - // indent for dir level - for (uint8_t i = 0; i < indent; i++) { - pr->write(' '); - } - if (flags & LS_DATE) { - file.printModifyDateTime(pr); - pr->write(' '); - } - if (flags & LS_SIZE) { - file.printFileSize(pr); - pr->write(' '); - } - file.printName(pr); - if (file.isDir()) { - pr->write('/'); - } - pr->write('\r'); - pr->write('\n'); - if ((flags & LS_R) && file.isDir()) { - if (!file.ls(pr, flags, indent + 2)) { - DBG_FAIL_MACRO; - goto fail; - } - } - } - file.close(); - } - if (getError()) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - - fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::printCreateDateTime(print_t* pr) { - dir_t dir; - if (!dirEntry(&dir)) { - DBG_FAIL_MACRO; - goto fail; - } - printFatDate(pr, dir.creationDate); - pr->write(' '); - printFatTime(pr, dir.creationTime); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -void FatFile::printFatDate(print_t* pr, uint16_t fatDate) { - printU32(pr, FAT_YEAR(fatDate)); - pr->write('-'); - print2u(pr, FAT_MONTH(fatDate)); - pr->write('-'); - print2u(pr, FAT_DAY(fatDate)); -} -//------------------------------------------------------------------------------ -void FatFile::printFatTime(print_t* pr, uint16_t fatTime) { - print2u(pr, FAT_HOUR(fatTime)); - pr->write(':'); - print2u(pr, FAT_MINUTE(fatTime)); - pr->write(':'); - print2u(pr, FAT_SECOND(fatTime)); -} -//------------------------------------------------------------------------------ -/** Template for FatFile::printField() */ -template -static int printFieldT(FatFile* file, char sign, Type value, char term) { - char buf[3*sizeof(Type) + 3]; - char* str = &buf[sizeof(buf)]; - - if (term) { - *--str = term; - if (term == '\n') { - *--str = '\r'; - } - } -#ifdef OLD_FMT - do { - Type m = value; - value /= 10; - *--str = '0' + m - 10*value; - } while (value); -#else // OLD_FMT - str = fmtDec(value, str); -#endif // OLD_FMT - if (sign) { - *--str = sign; - } - return file->write(str, &buf[sizeof(buf)] - str); -} -//------------------------------------------------------------------------------ - -int FatFile::printField(float value, char term, uint8_t prec) { - char buf[24]; - char* str = &buf[sizeof(buf)]; - if (term) { - *--str = term; - if (term == '\n') { - *--str = '\r'; - } - } - str = fmtFloat(value, str, prec); - return write(str, buf + sizeof(buf) - str); -} -//------------------------------------------------------------------------------ -int FatFile::printField(uint16_t value, char term) { - return printFieldT(this, 0, value, term); -} -//------------------------------------------------------------------------------ -int FatFile::printField(int16_t value, char term) { - char sign = 0; - if (value < 0) { - sign = '-'; - value = -value; - } - return printFieldT(this, sign, (uint16_t)value, term); -} -//------------------------------------------------------------------------------ -int FatFile::printField(uint32_t value, char term) { - return printFieldT(this, 0, value, term); -} -//------------------------------------------------------------------------------ -int FatFile::printField(int32_t value, char term) { - char sign = 0; - if (value < 0) { - sign = '-'; - value = -value; - } - return printFieldT(this, sign, (uint32_t)value, term); -} -//------------------------------------------------------------------------------ -bool FatFile::printModifyDateTime(print_t* pr) { - dir_t dir; - if (!dirEntry(&dir)) { - DBG_FAIL_MACRO; - goto fail; - } - printFatDate(pr, dir.lastWriteDate); - pr->write(' '); - printFatTime(pr, dir.lastWriteTime); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printFileSize(print_t* pr) { - char buf[11]; - char *ptr = buf + sizeof(buf); - *--ptr = 0; - ptr = fmtDec(fileSize(), ptr); - while (ptr > buf) { - *--ptr = ' '; - } - return pr->write(buf); -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileSFN.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileSFN.cpp deleted file mode 100644 index e1b530f6..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileSFN.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FatFile.h" -#include "FatFileSystem.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -bool FatFile::getSFN(char* name) { - dir_t* dir; - if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - if (isRoot()) { - name[0] = '/'; - name[1] = '\0'; - return true; - } - // cache entry - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // format name - dirName(dir, name); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printSFN(print_t* pr) { - char name[13]; - if (!getSFN(name)) { - DBG_FAIL_MACRO; - goto fail; - } - return pr->write(name); - -fail: - return 0; -} -#if !USE_LONG_FILE_NAMES -//------------------------------------------------------------------------------ -bool FatFile::getName(char* name, size_t size) { - return size < 13 ? 0 : getSFN(name); -} -//------------------------------------------------------------------------------ -// format directory name field from a 8.3 name string -bool FatFile::parsePathName(const char* path, fname_t* fname, - const char** ptr) { - uint8_t uc = 0; - uint8_t lc = 0; - uint8_t bit = FNAME_FLAG_LC_BASE; - // blank fill name and extension - for (uint8_t i = 0; i < 11; i++) { - fname->sfn[i] = ' '; - } - - for (uint8_t i = 0, n = 7;; path++) { - uint8_t c = *path; - if (c == 0 || isDirSeparator(c)) { - // Done. - break; - } - if (c == '.' && n == 7) { - n = 10; // max index for full 8.3 name - i = 8; // place for extension - - // bit for extension. - bit = FNAME_FLAG_LC_EXT; - } else { - if (!legal83Char(c) || i > n) { - DBG_FAIL_MACRO; - goto fail; - } - if ('a' <= c && c <= 'z') { - c += 'A' - 'a'; - lc |= bit; - } else if ('A' <= c && c <= 'Z') { - uc |= bit; - } - fname->sfn[i++] = c; - } - } - // must have a file name, extension is optional - if (fname->sfn[0] == ' ') { - DBG_FAIL_MACRO; - goto fail; - } - // Set base-name and extension bits. - fname->flags = lc & uc ? 0 : lc; - while (isDirSeparator(*path)) { - path++; - } - *ptr = path; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// open with filename in fname -#define SFN_OPEN_USES_CHKSUM 0 -bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { - bool emptyFound = false; -#if SFN_OPEN_USES_CHKSUM - uint8_t chksum; -#endif - uint8_t lfnOrd = 0; - uint16_t emptyIndex; - uint16_t index = 0; - dir_t* dir; - ldir_t* ldir; - - dirFile->rewind(); - while (1) { - if (!emptyFound) { - emptyIndex = index; - } - dir = dirFile->readDirCache(true); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - goto fail; - } - // At EOF if no error. - break; - } - if (dir->name[0] == DIR_NAME_FREE) { - emptyFound = true; - break; - } - if (dir->name[0] == DIR_NAME_DELETED) { - lfnOrd = 0; - emptyFound = true; - } else if (DIR_IS_FILE_OR_SUBDIR(dir)) { - if (!memcmp(fname->sfn, dir->name, 11)) { - // don't open existing file if O_EXCL - if (oflag & O_EXCL) { - DBG_FAIL_MACRO; - goto fail; - } -#if SFN_OPEN_USES_CHKSUM - if (lfnOrd && chksum != lfnChecksum(dir->name)) { - DBG_FAIL_MACRO; - goto fail; - } -#endif // SFN_OPEN_USES_CHKSUM - if (!openCachedEntry(dirFile, index, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - } else { - lfnOrd = 0; - } - } else if (DIR_IS_LONG_NAME(dir)) { - ldir = reinterpret_cast(dir); - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - lfnOrd = ldir->ord & 0X1F; -#if SFN_OPEN_USES_CHKSUM - chksum = ldir->chksum; -#endif // SFN_OPEN_USES_CHKSUM - } - } else { - lfnOrd = 0; - } - index++; - } - // don't create unless O_CREAT and write mode - if (!(oflag & O_CREAT) || !isWriteMode(oflag)) { - DBG_FAIL_MACRO; - goto fail; - } - if (emptyFound) { - index = emptyIndex; - } else { - if (!dirFile->addDirCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (!dirFile->seekSet(32UL*index)) { - DBG_FAIL_MACRO; - goto fail; - } - dir = dirFile->readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // initialize as empty file - memset(dir, 0, sizeof(dir_t)); - memcpy(dir->name, fname->sfn, 11); - - // Set base-name and extension lower case bits. - dir->reservedNT = (DIR_NT_LC_BASE | DIR_NT_LC_EXT) & fname->flags; - - // set timestamps - if (m_dateTime) { - // call user date/time function - m_dateTime(&dir->creationDate, &dir->creationTime); - } else { - // use default date/time - dir->creationDate = FAT_DEFAULT_DATE; - dir->creationTime = FAT_DEFAULT_TIME; - } - dir->lastAccessDate = dir->creationDate; - dir->lastWriteDate = dir->creationDate; - dir->lastWriteTime = dir->creationTime; - - // Force write of entry to device. - dirFile->m_vol->cacheDirty(); - - // open entry in cache. - return openCachedEntry(dirFile, index, oflag, 0); - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printName(print_t* pr) { - return printSFN(pr); -} -//------------------------------------------------------------------------------ -bool FatFile::remove() { - dir_t* dir; - // Can't remove if LFN or not open for write. - if (!isFile() || isLFN() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // Free any clusters. - if (m_firstCluster && !m_vol->freeChain(m_firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // Cache directory entry. - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // Mark entry deleted. - dir->name[0] = DIR_NAME_DELETED; - - // Set this file closed. - m_attr = FILE_ATTR_CLOSED; - - // Write entry to device. - return m_vol->cacheSync(); - -fail: - return false; -} -#endif // !USE_LONG_FILE_NAMES - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileSystem.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileSystem.h deleted file mode 100644 index a7c7678c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatFileSystem.h +++ /dev/null @@ -1,338 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatFileSystem_h -#define FatFileSystem_h -#include "FatVolume.h" -#include "FatFile.h" -#include "ArduinoFiles.h" - -namespace sdfat { - -/** - * \file - * \brief FatFileSystem class - */ -//------------------------------------------------------------------------------ -/** - * \class FatFileSystem - * \brief Integration class for the FatLib library. - */ -class FatFileSystem : public FatVolume { - public: - /** - * Initialize an FatFileSystem object. - * \param[in] blockDev Device block driver. - * \param[in] part partition to initialize. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool begin(BlockDriver* blockDev, uint8_t part = 0) { - m_blockDev = blockDev; - vwd()->close(); - return (part ? init(part) : init(1) || init(0)) - && vwd()->openRoot(this) && FatFile::setCwd(vwd()); - } -#if ENABLE_ARDUINO_FEATURES - /** List the directory contents of the volume working directory to Serial. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } - /** List the directory contents of a directory to Serial. - * - * \param[in] path directory to list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(const char* path, uint8_t flags = 0) { - return ls(&Serial, path, flags); - } - /** open a file - * - * \param[in] path location of file to be opened. - * \param[in] oflag open flags. - * \return a File object. - */ - File open(const char *path, oflag_t oflag = FILE_READ) { - File tmpFile; - tmpFile.open(vwd(), path, oflag); - return tmpFile; - } - /** open a file - * - * \param[in] path location of file to be opened. - * \param[in] oflag open flags. - * \return a File object. - */ - File open(const String &path, oflag_t oflag = FILE_READ) { - return open(path.c_str(), oflag ); - } -#endif // ENABLE_ARDUINO_FEATURES - /** Change a volume's working directory to root - * - * Changes the volume's working directory to the SD's root directory. - * Optionally set the current working directory to the volume's - * working directory. - * - * \param[in] set_cwd Set the current working directory to this volume's - * working directory if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool chdir(bool set_cwd = false) { - vwd()->close(); - return vwd()->openRoot(this) && (set_cwd ? FatFile::setCwd(vwd()) : true); - } - /** Change a volume's working directory - * - * Changes the volume working directory to the \a path subdirectory. - * Optionally set the current working directory to the volume's - * working directory. - * - * Example: If the volume's working directory is "/DIR", chdir("SUB") - * will change the volume's working directory from "/DIR" to "/DIR/SUB". - * - * If path is "/", the volume's working directory will be changed to the - * root directory - * - * \param[in] path The name of the subdirectory. - * - * \param[in] set_cwd Set the current working directory to this volume's - * working directory if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - //---------------------------------------------------------------------------- - bool chdir(const char *path, bool set_cwd = false) { - FatFile dir; - if (path[0] == '/' && path[1] == '\0') { - return chdir(set_cwd); - } - if (!dir.open(vwd(), path, O_RDONLY)) { - goto fail; - } - if (!dir.isDir()) { - goto fail; - } - m_vwd = dir; - if (set_cwd) { - FatFile::setCwd(vwd()); - } - return true; - -fail: - return false; - } - //---------------------------------------------------------------------------- - /** Set the current working directory to a volume's working directory. - * - * This is useful with multiple SD cards. - * - * The current working directory is changed to this - * volume's working directory. - * - * This is like the Windows/DOS \: command. - */ - void chvol() { - FatFile::setCwd(vwd()); - } - //---------------------------------------------------------------------------- - /** - * Test for the existence of a file. - * - * \param[in] path Path of the file to be tested for. - * - * \return true if the file exists else false. - */ - bool exists(const char* path) { - return vwd()->exists(path); - } - //---------------------------------------------------------------------------- - /** List the directory contents of the volume working directory. - * - * \param[in] pr Print stream for list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(print_t* pr, uint8_t flags = 0) { - return vwd()->ls(pr, flags); - } - //---------------------------------------------------------------------------- - /** List the directory contents of a directory. - * - * \param[in] pr Print stream for list. - * - * \param[in] path directory to list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(print_t* pr, const char* path, uint8_t flags) { - FatFile dir; - return dir.open(vwd(), path, O_RDONLY) && dir.ls(pr, flags); - } - //---------------------------------------------------------------------------- - /** Make a subdirectory in the volume working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. - * - * \param[in] pFlag Create missing parent directories if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool mkdir(const char* path, bool pFlag = true) { - FatFile sub; - return sub.mkdir(vwd(), path, pFlag); - } - //---------------------------------------------------------------------------- - /** Remove a file from the volume working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool remove(const char* path) { - return FatFile::remove(vwd(), path); - } - //---------------------------------------------------------------------------- - /** Rename a file or subdirectory. - * - * \param[in] oldPath Path name to the file or subdirectory to be renamed. - * - * \param[in] newPath New path name of the file or subdirectory. - * - * The \a newPath object must not exist before the rename call. - * - * The file to be renamed must not be open. The directory entry may be - * moved and file system corruption could occur if the file is accessed by - * a file object that was opened before the rename() call. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rename(const char *oldPath, const char *newPath) { - FatFile file; - if (!file.open(vwd(), oldPath, O_RDONLY)) { - return false; - } - return file.rename(vwd(), newPath); - } - //---------------------------------------------------------------------------- - /** Remove a subdirectory from the volume's working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. - * - * The subdirectory file will be removed only if it is empty. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rmdir(const char* path) { - FatFile sub; - if (!sub.open(vwd(), path, O_RDONLY)) { - return false; - } - return sub.rmdir(); - } - //---------------------------------------------------------------------------- - /** Truncate a file to a specified length. The current file position - * will be maintained if it is less than or equal to \a length otherwise - * it will be set to end of file. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * \param[in] length The desired length for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool truncate(const char* path, uint32_t length) { - FatFile file; - if (!file.open(vwd(), path, O_WRONLY)) { - return false; - } - return file.truncate(length); - } - /** \return a pointer to the FatVolume object. */ - FatVolume* vol() { - return this; - } - /** \return a pointer to the volume working directory. */ - FatFile* vwd() { - return &m_vwd; - } - /** Wipe all data from the volume. You must reinitialize the volume before - * accessing it again. - * \param[in] pr print stream for status dots. - * \return true for success else false. - */ - bool wipe(print_t* pr = 0) { - vwd()->close(); - return FatVolume::wipe(pr); - } - - private: - FatFile m_vwd; -}; - -}; // namespace sdfat - -#endif // FatFileSystem_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatLib.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatLib.h deleted file mode 100644 index f054ea28..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatLib.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatLib_h -#define FatLib_h -#include "ArduinoFiles.h" -#include "FatFileSystem.h" -#include "FatLibConfig.h" -#include "FatVolume.h" -#include "FatFile.h" -#include "StdioStream.h" -//------------------------------------------------------------------------------ -/** FatFileSystem version YYYYMMDD */ -#define FAT_LIB_VERSION 20150131 -#endif // FatLib_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatLibConfig.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatLibConfig.h deleted file mode 100644 index 8cd52654..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatLibConfig.h +++ /dev/null @@ -1,146 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief configuration definitions - */ -#ifndef FatLibConfig_h -#define FatLibConfig_h -#include -// Allow this file to override defaults. -#include "SdFatConfig.h" - -#ifdef __AVR__ -#include -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** - * Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). - * Long File Name are limited to a maximum length of 255 characters. - * - * This implementation allows 7-bit characters in the range - * 0X20 to 0X7E. The following characters are not allowed: - * - * < (less than) - * > (greater than) - * : (colon) - * " (double quote) - * / (forward slash) - * \ (backslash) - * | (vertical bar or pipe) - * ? (question mark) - * * (asterisk) - * - */ -#ifndef USE_LONG_FILE_NAMES -#define USE_LONG_FILE_NAMES 1 -#endif // USE_LONG_FILE_NAMES -//------------------------------------------------------------------------------ -/** - * Set USE_SEPARATE_FAT_CACHE non-zero to use a second 512 byte cache - * for FAT table entries. Improves performance for large writes that - * are not a multiple of 512 bytes. - */ -#ifndef USE_SEPARATE_FAT_CACHE -#ifdef __arm__ -#define USE_SEPARATE_FAT_CACHE 1 -#else // __arm__ -#define USE_SEPARATE_FAT_CACHE 0 -#endif // __arm__ -#endif // USE_SEPARATE_FAT_CACHE -//------------------------------------------------------------------------------ -/** - * Set USE_MULTI_BLOCK_IO non-zero to use multi-block SD read/write. - * - * Don't use mult-block read/write on small AVR boards. - */ -#ifndef USE_MULTI_BLOCK_IO -#if defined(RAMEND) && RAMEND < 3000 -#define USE_MULTI_BLOCK_IO 0 -#else // RAMEND -#define USE_MULTI_BLOCK_IO 1 -#endif // RAMEND -#endif // USE_MULTI_BLOCK_IO -//------------------------------------------------------------------------------ -/** - * Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters - * updated. This will increase the speed of the freeClusterCount() call - * after the first call. Extra flash will be required. - */ -#ifndef MAINTAIN_FREE_CLUSTER_COUNT -#define MAINTAIN_FREE_CLUSTER_COUNT 0 -#endif // MAINTAIN_FREE_CLUSTER_COUNT -//------------------------------------------------------------------------------ -/** - * Set DESTRUCTOR_CLOSES_FILE non-zero to close a file in its destructor. - * - * Causes use of lots of heap in ARM. - */ -#ifndef DESTRUCTOR_CLOSES_FILE -#define DESTRUCTOR_CLOSES_FILE 0 -#endif // DESTRUCTOR_CLOSES_FILE -//------------------------------------------------------------------------------ -/** - * Call flush for endl if ENDL_CALLS_FLUSH is non-zero - * - * The standard for iostreams is to call flush. This is very costly for - * SdFat. Each call to flush causes 2048 bytes of I/O to the SD. - * - * SdFat has a single 512 byte buffer for I/O so it must write the current - * data block to the SD, read the directory block from the SD, update the - * directory entry, write the directory block to the SD and read the data - * block back into the buffer. - * - * The SD flash memory controller is not designed for this many rewrites - * so performance may be reduced by more than a factor of 100. - * - * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force - * all data to be written to the SD. - */ -#ifndef ENDL_CALLS_FLUSH -#define ENDL_CALLS_FLUSH 0 -#endif // ENDL_CALLS_FLUSH -//------------------------------------------------------------------------------ -/** - * Allow FAT12 volumes if FAT12_SUPPORT is non-zero. - * FAT12 has not been well tested. - */ -#ifndef FAT12_SUPPORT -#define FAT12_SUPPORT 0 -#endif // FAT12_SUPPORT -//------------------------------------------------------------------------------ -/** - * Enable Extra features for Arduino. - */ -// #define ENABLE_ARDUINO_FEATURES 0 ////////////////////////FIX THIS ///////////////// -#ifndef ENABLE_ARDUINO_FEATURES -#include -#if defined(ARDUINO) || defined(PLATFORM_ID) || defined(DOXYGEN) -#define ENABLE_ARDUINO_FEATURES 1 -#else // #if defined(ARDUINO) || defined(DOXYGEN) -#define ENABLE_ARDUINO_FEATURES 0 -#endif // defined(ARDUINO) || defined(DOXYGEN) -#endif // ENABLE_ARDUINO_FEATURES -#endif // FatLibConfig_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatStructs.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatStructs.h deleted file mode 100644 index 77bb0463..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatStructs.h +++ /dev/null @@ -1,888 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatStructs_h -#define FatStructs_h - -namespace sdfat { - -/** - * \file - * \brief FAT file structures - */ -/* - * mostly from Microsoft document fatgen103.doc - * http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx - */ -//------------------------------------------------------------------------------ -/** Value for byte 510 of boot block or MBR */ -const uint8_t BOOTSIG0 = 0X55; -/** Value for byte 511 of boot block or MBR */ -const uint8_t BOOTSIG1 = 0XAA; -/** Value for bootSignature field int FAT/FAT32 boot sector */ -const uint8_t EXTENDED_BOOT_SIG = 0X29; -//------------------------------------------------------------------------------ -/** - * \struct partitionTable - * \brief MBR partition table entry - * - * A partition table entry for a MBR formatted storage device. - * The MBR partition table has four entries. - */ -struct partitionTable { - /** - * Boot Indicator . Indicates whether the volume is the active - * partition. Legal values include: 0X00. Do not use for booting. - * 0X80 Active partition. - */ - uint8_t boot; - /** - * Head part of Cylinder-head-sector address of the first block in - * the partition. Legal values are 0-255. Only used in old PC BIOS. - */ - uint8_t beginHead; - /** - * Sector part of Cylinder-head-sector address of the first block in - * the partition. Legal values are 1-63. Only used in old PC BIOS. - */ - unsigned beginSector : 6; - /** High bits cylinder for first block in partition. */ - unsigned beginCylinderHigh : 2; - /** - * Combine beginCylinderLow with beginCylinderHigh. Legal values - * are 0-1023. Only used in old PC BIOS. - */ - uint8_t beginCylinderLow; - /** - * Partition type. See defines that begin with PART_TYPE_ for - * some Microsoft partition types. - */ - uint8_t type; - /** - * head part of cylinder-head-sector address of the last sector in the - * partition. Legal values are 0-255. Only used in old PC BIOS. - */ - uint8_t endHead; - /** - * Sector part of cylinder-head-sector address of the last sector in - * the partition. Legal values are 1-63. Only used in old PC BIOS. - */ - unsigned endSector : 6; - /** High bits of end cylinder */ - unsigned endCylinderHigh : 2; - /** - * Combine endCylinderLow with endCylinderHigh. Legal values - * are 0-1023. Only used in old PC BIOS. - */ - uint8_t endCylinderLow; - /** Logical block address of the first block in the partition. */ - uint32_t firstSector; - /** Length of the partition, in blocks. */ - uint32_t totalSectors; -} __attribute__((packed)); -/** Type name for partitionTable */ -typedef struct partitionTable part_t; -//------------------------------------------------------------------------------ -/** - * \struct masterBootRecord - * - * \brief Master Boot Record - * - * The first block of a storage device that is formatted with a MBR. - */ -struct masterBootRecord { - /** Code Area for master boot program. */ - uint8_t codeArea[440]; - /** Optional Windows NT disk signature. May contain boot code. */ - uint32_t diskSignature; - /** Usually zero but may be more boot code. */ - uint16_t usuallyZero; - /** Partition tables. */ - part_t part[4]; - /** First MBR signature byte. Must be 0X55 */ - uint8_t mbrSig0; - /** Second MBR signature byte. Must be 0XAA */ - uint8_t mbrSig1; -} __attribute__((packed)); -/** Type name for masterBootRecord */ -typedef struct masterBootRecord mbr_t; -//------------------------------------------------------------------------------ -/** - * \struct biosParmBlock - * - * \brief BIOS parameter block - * - * The BIOS parameter block describes the physical layout of a FAT volume. - */ -struct biosParmBlock { - /** - * Count of bytes per sector. This value may take on only the - * following values: 512, 1024, 2048 or 4096 - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. - */ - uint8_t sectorsPerCluster; - /** - * Number of sectors before the first FAT. - * This value must not be zero. - */ - uint16_t reservedSectorCount; - /** The count of FAT data structures on the volume. This field should - * always contain the value 2 for any FAT volume of any type. - */ - uint8_t fatCount; - /** - * For FAT12 and FAT16 volumes, this field contains the count of - * 32-byte directory entries in the root directory. For FAT32 volumes, - * this field must be set to 0. For FAT12 and FAT16 volumes, this - * value should always specify a count that when multiplied by 32 - * results in a multiple of bytesPerSector. FAT16 volumes should - * use the value 512. - */ - uint16_t rootDirEntryCount; - /** - * This field is the old 16-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then totalSectors32 - * must be nonzero. For FAT32 volumes, this field must be 0. For - * FAT12 and FAT16 volumes, this field contains the sector count, and - * totalSectors32 is 0 if the total sector count fits - * (is less than 0x10000). - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (nonremovable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * Count of sectors occupied by one FAT on FAT12/FAT16 volumes. - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrtack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * This field is the new 32-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then - * totalSectors16 must be nonzero. - */ - uint32_t totalSectors32; - /** - * Count of sectors occupied by one FAT on FAT32 volumes. - */ - uint32_t sectorsPerFat32; - /** - * This field is only defined for FAT32 media and does not exist on - * FAT12 and FAT16 media. - * Bits 0-3 -- Zero-based number of active FAT. - * Only valid if mirroring is disabled. - * Bits 4-6 -- Reserved. - * Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs. - * -- 1 means only one FAT is active; it is the one referenced in bits 0-3. - * Bits 8-15 -- Reserved. - */ - uint16_t fat32Flags; - /** - * FAT32 version. High byte is major revision number. - * Low byte is minor revision number. Only 0.0 define. - */ - uint16_t fat32Version; - /** - * Cluster number of the first cluster of the root directory for FAT32. - * This usually 2 but not required to be 2. - */ - uint32_t fat32RootCluster; - /** - * Sector number of FSINFO structure in the reserved area of the - * FAT32 volume. Usually 1. - */ - uint16_t fat32FSInfo; - /** - * If nonzero, indicates the sector number in the reserved area - * of the volume of a copy of the boot record. Usually 6. - * No value other than 6 is recommended. - */ - uint16_t fat32BackBootBlock; - /** - * Reserved for future expansion. Code that formats FAT32 volumes - * should always set all of the bytes of this field to 0. - */ - uint8_t fat32Reserved[12]; -} __attribute__((packed)); -/** Type name for biosParmBlock */ -typedef struct biosParmBlock bpb_t; -//------------------------------------------------------------------------------ -/** - * \struct fat_boot - * - * \brief Boot sector for a FAT12/FAT16 volume. - * - */ -struct fat_boot { - /** - * The first three bytes of the boot sector must be valid, - * executable x 86-based CPU instructions. This includes a - * jump instruction that skips the next non-executable bytes. - */ - uint8_t jump[3]; - /** - * This is typically a string of characters that identifies - * the operating system that formatted the volume. - */ - char oemId[8]; - /** - * The size of a hardware sector. Valid decimal values for this - * field are 512, 1024, 2048, and 4096. For most disks used in - * the United States, the value of this field is 512. - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. - */ - uint8_t sectorsPerCluster; - /** - * The number of sectors preceding the start of the first FAT, - * including the boot sector. The value of this field is always 1. - */ - uint16_t reservedSectorCount; - /** - * The number of copies of the FAT on the volume. - * The value of this field is always 2. - */ - uint8_t fatCount; - /** - * For FAT12 and FAT16 volumes, this field contains the count of - * 32-byte directory entries in the root directory. For FAT32 volumes, - * this field must be set to 0. For FAT12 and FAT16 volumes, this - * value should always specify a count that when multiplied by 32 - * results in a multiple of bytesPerSector. FAT16 volumes should - * use the value 512. - */ - uint16_t rootDirEntryCount; - /** - * This field is the old 16-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then totalSectors32 - * must be non-zero. For FAT32 volumes, this field must be 0. For - * FAT12 and FAT16 volumes, this field contains the sector count, and - * totalSectors32 is 0 if the total sector count fits - * (is less than 0x10000). - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (non-removable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * Count of sectors occupied by one FAT on FAT12/FAT16 volumes. - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * This field is the new 32-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then - * totalSectors16 must be non-zero. - */ - uint32_t totalSectors32; - /** - * Related to the BIOS physical drive number. Floppy drives are - * identified as 0x00 and physical hard disks are identified as - * 0x80, regardless of the number of physical disk drives. - * Typically, this value is set prior to issuing an INT 13h BIOS - * call to specify the device to access. The value is only - * relevant if the device is a boot device. - */ - uint8_t driveNumber; - /** used by Windows NT - should be zero for FAT */ - uint8_t reserved1; - /** 0X29 if next three fields are valid */ - uint8_t bootSignature; - /** - * A random serial number created when formatting a disk, - * which helps to distinguish between disks. - * Usually generated by combining date and time. - */ - uint32_t volumeSerialNumber; - /** - * A field once used to store the volume label. The volume label - * is now stored as a special file in the root directory. - */ - char volumeLabel[11]; - /** - * A field with a value of either FAT, FAT12 or FAT16, - * depending on the disk format. - */ - char fileSystemType[8]; - /** X86 boot code */ - uint8_t bootCode[448]; - /** must be 0X55 */ - uint8_t bootSectorSig0; - /** must be 0XAA */ - uint8_t bootSectorSig1; -} __attribute__((packed)); -/** Type name for FAT Boot Sector */ -typedef struct fat_boot fat_boot_t; -//------------------------------------------------------------------------------ -/** - * \struct fat32_boot - * - * \brief Boot sector for a FAT32 volume. - * - */ -struct fat32_boot { - /** - * The first three bytes of the boot sector must be valid, - * executable x 86-based CPU instructions. This includes a - * jump instruction that skips the next non-executable bytes. - */ - uint8_t jump[3]; - /** - * This is typically a string of characters that identifies - * the operating system that formatted the volume. - */ - char oemId[8]; - /** - * The size of a hardware sector. Valid decimal values for this - * field are 512, 1024, 2048, and 4096. For most disks used in - * the United States, the value of this field is 512. - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. - */ - uint8_t sectorsPerCluster; - /** - * The number of sectors preceding the start of the first FAT, - * including the boot sector. Must not be zero - */ - uint16_t reservedSectorCount; - /** - * The number of copies of the FAT on the volume. - * The value of this field is always 2. - */ - uint8_t fatCount; - /** - * FAT12/FAT16 only. For FAT32 volumes, this field must be set to 0. - */ - uint16_t rootDirEntryCount; - /** - * For FAT32 volumes, this field must be 0. - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (non-removable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * Contains the total number of sectors in the FAT32 volume. - */ - uint32_t totalSectors32; - /** - * Count of sectors occupied by one FAT on FAT32 volumes. - */ - uint32_t sectorsPerFat32; - /** - * This field is only defined for FAT32 media and does not exist on - * FAT12 and FAT16 media. - * Bits 0-3 -- Zero-based number of active FAT. - * Only valid if mirroring is disabled. - * Bits 4-6 -- Reserved. - * Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs. - * -- 1 means only one FAT is active; it is the one referenced - * in bits 0-3. - * Bits 8-15 -- Reserved. - */ - uint16_t fat32Flags; - /** - * FAT32 version. High byte is major revision number. - * Low byte is minor revision number. Only 0.0 define. - */ - uint16_t fat32Version; - /** - * Cluster number of the first cluster of the root directory for FAT32. - * This usually 2 but not required to be 2. - */ - uint32_t fat32RootCluster; - /** - * Sector number of FSINFO structure in the reserved area of the - * FAT32 volume. Usually 1. - */ - uint16_t fat32FSInfo; - /** - * If non-zero, indicates the sector number in the reserved area - * of the volume of a copy of the boot record. Usually 6. - * No value other than 6 is recommended. - */ - uint16_t fat32BackBootBlock; - /** - * Reserved for future expansion. Code that formats FAT32 volumes - * should always set all of the bytes of this field to 0. - */ - uint8_t fat32Reserved[12]; - /** - * Related to the BIOS physical drive number. Floppy drives are - * identified as 0x00 and physical hard disks are identified as - * 0x80, regardless of the number of physical disk drives. - * Typically, this value is set prior to issuing an INT 13h BIOS - * call to specify the device to access. The value is only - * relevant if the device is a boot device. - */ - uint8_t driveNumber; - /** used by Windows NT - should be zero for FAT */ - uint8_t reserved1; - /** 0X29 if next three fields are valid */ - uint8_t bootSignature; - /** - * A random serial number created when formatting a disk, - * which helps to distinguish between disks. - * Usually generated by combining date and time. - */ - uint32_t volumeSerialNumber; - /** - * A field once used to store the volume label. The volume label - * is now stored as a special file in the root directory. - */ - char volumeLabel[11]; - /** - * A text field with a value of FAT32. - */ - char fileSystemType[8]; - /** X86 boot code */ - uint8_t bootCode[420]; - /** must be 0X55 */ - uint8_t bootSectorSig0; - /** must be 0XAA */ - uint8_t bootSectorSig1; -} __attribute__((packed)); -/** Type name for FAT32 Boot Sector */ -typedef struct fat32_boot fat32_boot_t; -//------------------------------------------------------------------------------ -/** Lead signature for a FSINFO sector */ -const uint32_t FSINFO_LEAD_SIG = 0x41615252; -/** Struct signature for a FSINFO sector */ -const uint32_t FSINFO_STRUCT_SIG = 0x61417272; -/** - * \struct fat32_fsinfo - * - * \brief FSINFO sector for a FAT32 volume. - * - */ -struct fat32_fsinfo { - /** must be 0X52, 0X52, 0X61, 0X41 */ - uint32_t leadSignature; - /** must be zero */ - uint8_t reserved1[480]; - /** must be 0X72, 0X72, 0X41, 0X61 */ - uint32_t structSignature; - /** - * Contains the last known free cluster count on the volume. - * If the value is 0xFFFFFFFF, then the free count is unknown - * and must be computed. Any other value can be used, but is - * not necessarily correct. It should be range checked at least - * to make sure it is <= volume cluster count. - */ - uint32_t freeCount; - /** - * This is a hint for the FAT driver. It indicates the cluster - * number at which the driver should start looking for free clusters. - * If the value is 0xFFFFFFFF, then there is no hint and the driver - * should start looking at cluster 2. - */ - uint32_t nextFree; - /** must be zero */ - uint8_t reserved2[12]; - /** must be 0X00, 0X00, 0X55, 0XAA */ - uint8_t tailSignature[4]; -} __attribute__((packed)); -/** Type name for FAT32 FSINFO Sector */ -typedef struct fat32_fsinfo fat32_fsinfo_t; -//------------------------------------------------------------------------------ -// End Of Chain values for FAT entries -/** FAT12 end of chain value used by Microsoft. */ -const uint16_t FAT12EOC = 0XFFF; -/** Minimum value for FAT12 EOC. Use to test for EOC. */ -const uint16_t FAT12EOC_MIN = 0XFF8; -/** FAT16 end of chain value used by Microsoft. */ -const uint16_t FAT16EOC = 0XFFFF; -/** Minimum value for FAT16 EOC. Use to test for EOC. */ -const uint16_t FAT16EOC_MIN = 0XFFF8; -/** FAT32 end of chain value used by Microsoft. */ -const uint32_t FAT32EOC = 0X0FFFFFFF; -/** Minimum value for FAT32 EOC. Use to test for EOC. */ -const uint32_t FAT32EOC_MIN = 0X0FFFFFF8; -/** Mask a for FAT32 entry. Entries are 28 bits. */ -const uint32_t FAT32MASK = 0X0FFFFFFF; -//------------------------------------------------------------------------------ -/** - * \struct directoryEntry - * \brief FAT short directory entry - * - * Short means short 8.3 name, not the entry size. - * - * Date Format. A FAT directory entry date stamp is a 16-bit field that is - * basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the - * format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the - * 16-bit word): - * - * Bits 9-15: Count of years from 1980, valid value range 0-127 - * inclusive (1980-2107). - * - * Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive. - * - * Bits 0-4: Day of month, valid value range 1-31 inclusive. - * - * Time Format. A FAT directory entry time stamp is a 16-bit field that has - * a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the - * 16-bit word, bit 15 is the MSB of the 16-bit word). - * - * Bits 11-15: Hours, valid value range 0-23 inclusive. - * - * Bits 5-10: Minutes, valid value range 0-59 inclusive. - * - * Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds). - * - * The valid time range is from Midnight 00:00:00 to 23:59:58. - */ -struct directoryEntry { - /** Short 8.3 name. - * - * The first eight bytes contain the file name with blank fill. - * The last three bytes contain the file extension with blank fill. - */ - uint8_t name[11]; - /** Entry attributes. - * - * The upper two bits of the attribute byte are reserved and should - * always be set to 0 when a file is created and never modified or - * looked at after that. See defines that begin with DIR_ATT_. - */ - uint8_t attributes; - /** - * Reserved for use by Windows NT. Set value to 0 when a file is - * created and never modify or look at it after that. - */ - uint8_t reservedNT; - /** - * The granularity of the seconds part of creationTime is 2 seconds - * so this field is a count of tenths of a second and its valid - * value range is 0-199 inclusive. (WHG note - seems to be hundredths) - */ - uint8_t creationTimeTenths; - /** Time file was created. */ - uint16_t creationTime; - /** Date file was created. */ - uint16_t creationDate; - /** - * Last access date. Note that there is no last access time, only - * a date. This is the date of last read or write. In the case of - * a write, this should be set to the same date as lastWriteDate. - */ - uint16_t lastAccessDate; - /** - * High word of this entry's first cluster number (always 0 for a - * FAT12 or FAT16 volume). - */ - uint16_t firstClusterHigh; - /** Time of last write. File creation is considered a write. */ - uint16_t lastWriteTime; - /** Date of last write. File creation is considered a write. */ - uint16_t lastWriteDate; - /** Low word of this entry's first cluster number. */ - uint16_t firstClusterLow; - /** 32-bit unsigned holding this file's size in bytes. */ - uint32_t fileSize; -} __attribute__((packed)); -/** Type name for directoryEntry */ -typedef struct directoryEntry dir_t; -//------------------------------------------------------------------------------ -// Definitions for directory entries -// -/** escape for name[0] = 0XE5 */ -const uint8_t DIR_NAME_0XE5 = 0X05; -/** name[0] value for entry that is free after being "deleted" */ -const uint8_t DIR_NAME_DELETED = 0XE5; -/** name[0] value for entry that is free and no allocated entries follow */ -const uint8_t DIR_NAME_FREE = 0X00; -/** file is read-only */ -const uint8_t DIR_ATT_READ_ONLY = 0X01; -/** File should e hidden in directory listings */ -const uint8_t DIR_ATT_HIDDEN = 0X02; -/** Entry is for a system file */ -const uint8_t DIR_ATT_SYSTEM = 0X04; -/** Directory entry contains the volume label */ -const uint8_t DIR_ATT_VOLUME_ID = 0X08; -/** Entry is for a directory */ -const uint8_t DIR_ATT_DIRECTORY = 0X10; -/** Old DOS archive bit for backup support */ -const uint8_t DIR_ATT_ARCHIVE = 0X20; -/** Test value for long name entry. Test is - (d->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME. */ -const uint8_t DIR_ATT_LONG_NAME = 0X0F; -/** Test mask for long name entry */ -const uint8_t DIR_ATT_LONG_NAME_MASK = 0X3F; -/** defined attribute bits */ -const uint8_t DIR_ATT_DEFINED_BITS = 0X3F; - -/** Mask for file/subdirectory tests */ -const uint8_t DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY); - -/** Filename base-name is all lower case */ -const uint8_t DIR_NT_LC_BASE = 0X08; -/** Filename extension is all lower case.*/ -const uint8_t DIR_NT_LC_EXT = 0X10; - - -/** Directory entry is for a file - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a normal file else false. - */ -static inline uint8_t DIR_IS_FILE(const dir_t* dir) { - return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == 0; -} -/** Directory entry is for a file or subdirectory - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a normal file or subdirectory else false. - */ -static inline uint8_t DIR_IS_FILE_OR_SUBDIR(const dir_t* dir) { - return (dir->attributes & DIR_ATT_VOLUME_ID) == 0; -} -/** Directory entry is part of a long name - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for part of a long name else false. - */ -static inline uint8_t DIR_IS_LONG_NAME(const dir_t* dir) { - return dir->attributes == DIR_ATT_LONG_NAME; -} -/** Directory entry is hidden - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is hidden else false. - */ -static inline uint8_t DIR_IS_HIDDEN(const dir_t* dir) { - return dir->attributes & DIR_ATT_HIDDEN; -} -/** Directory entry is for a subdirectory - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a subdirectory else false. - */ -static inline uint8_t DIR_IS_SUBDIR(const dir_t* dir) { - return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == DIR_ATT_DIRECTORY; -} -/** Directory entry is system type - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is system else false. - */ -static inline uint8_t DIR_IS_SYSTEM(const dir_t* dir) { - return dir->attributes & DIR_ATT_SYSTEM; -} -/** date field for FAT directory entry - * \param[in] year [1980,2107] - * \param[in] month [1,12] - * \param[in] day [1,31] - * - * \return Packed date for dir_t entry. - */ -static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) { - return (year - 1980) << 9 | month << 5 | day; -} -/** year part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted year [1980,2107] - */ -static inline uint16_t FAT_YEAR(uint16_t fatDate) { - return 1980 + (fatDate >> 9); -} -/** month part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted month [1,12] - */ -static inline uint8_t FAT_MONTH(uint16_t fatDate) { - return (fatDate >> 5) & 0XF; -} -/** day part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted day [1,31] - */ -static inline uint8_t FAT_DAY(uint16_t fatDate) { - return fatDate & 0X1F; -} -/** time field for FAT directory entry - * \param[in] hour [0,23] - * \param[in] minute [0,59] - * \param[in] second [0,59] - * - * \return Packed time for dir_t entry. - */ -static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) { - return hour << 11 | minute << 5 | second >> 1; -} -/** hour part of FAT directory time field - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted hour [0,23] - */ -static inline uint8_t FAT_HOUR(uint16_t fatTime) { - return fatTime >> 11; -} -/** minute part of FAT directory time field - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted minute [0,59] - */ -static inline uint8_t FAT_MINUTE(uint16_t fatTime) { - return (fatTime >> 5) & 0X3F; -} -/** second part of FAT directory time field - * \note second/2 is stored in packed time. - * - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted second [0,58] - */ -static inline uint8_t FAT_SECOND(uint16_t fatTime) { - return 2*(fatTime & 0X1F); -} -/** Default date for file timestamps is 1 Jan 2000 */ -const uint16_t FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1; -/** Default time for file timestamp is 1 am */ -const uint16_t FAT_DEFAULT_TIME = (1 << 11); -//------------------------------------------------------------------------------ -/** Dimension of first name field in long directory entry */ -const uint8_t LDIR_NAME1_DIM = 5; -/** Dimension of first name field in long directory entry */ -const uint8_t LDIR_NAME2_DIM = 6; -/** Dimension of first name field in long directory entry */ -const uint8_t LDIR_NAME3_DIM = 2; -/** - * \struct longDirectoryEntry - * \brief FAT long directory entry - */ -struct longDirectoryEntry { - /** - * The order of this entry in the sequence of long dir entries - * associated with the short dir entry at the end of the long dir set. - * - * If masked with 0X40 (LAST_LONG_ENTRY), this indicates the - * entry is the last long dir entry in a set of long dir entries. - * All valid sets of long dir entries must begin with an entry having - * this mask. - */ - uint8_t ord; - /** Characters 1-5 of the long-name sub-component in this entry. */ - uint16_t name1[LDIR_NAME1_DIM]; - /** Attributes - must be ATTR_LONG_NAME */ - uint8_t attr; - /** - * If zero, indicates a directory entry that is a sub-component of a - * long name. NOTE: Other values reserved for future extensions. - * - * Non-zero implies other directory entry types. - */ - uint8_t type; - /** - * Checksum of name in the short dir entry at the end of the - * long dir set. - */ - uint8_t chksum; - /** Characters 6-11 of the long-name sub-component in this entry. */ - uint16_t name2[LDIR_NAME2_DIM]; - /** Must be ZERO. This is an artifact of the FAT "first cluster" */ - uint16_t mustBeZero; - /** Characters 12 and 13 of the long-name sub-component in this entry. */ - uint16_t name3[LDIR_NAME3_DIM]; -} __attribute__((packed)); -/** Type name for longDirectoryEntry */ -typedef struct longDirectoryEntry ldir_t; -/** - * Ord mast that indicates the entry is the last long dir entry in a - * set of long dir entries. All valid sets of long dir entries must - * begin with an entry having this mask. - */ -const uint8_t LDIR_ORD_LAST_LONG_ENTRY = 0X40; - -}; // namespace sdfat - -#endif // FatStructs_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatVolume.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatVolume.cpp deleted file mode 100644 index 734976ad..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatVolume.cpp +++ /dev/null @@ -1,646 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -#include "FatVolume.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -cache_t* FatCache::read(uint32_t lbn, uint8_t option) { - if (m_lbn != lbn) { - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - if (!(option & CACHE_OPTION_NO_READ)) { - if (!m_vol->readBlock(lbn, m_block.data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_status = 0; - m_lbn = lbn; - } - m_status |= option & CACHE_STATUS_MASK; - return &m_block; - -fail: - - return 0; -} -//------------------------------------------------------------------------------ -bool FatCache::sync() { - if (m_status & CACHE_STATUS_DIRTY) { - if (!m_vol->writeBlock(m_lbn, m_block.data)) { - DBG_FAIL_MACRO; - goto fail; - } - // mirror second FAT - if (m_status & CACHE_STATUS_MIRROR_FAT) { - uint32_t lbn = m_lbn + m_vol->blocksPerFat(); - if (!m_vol->writeBlock(lbn, m_block.data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_status &= ~CACHE_STATUS_DIRTY; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatVolume::allocateCluster(uint32_t current, uint32_t* next) { - uint32_t find; - bool setStart; - if (m_allocSearchStart < current) { - // Try to keep file contiguous. Start just after current cluster. - find = current; - setStart = false; - } else { - find = m_allocSearchStart; - setStart = true; - } - // Following loop may iterate over up to 268 million clusters, so we need to allow - // the OS/hardware to do its work occasionally during the search or a WDT error will - // occur on the ESP8266. - int yieldCnt = 5000; - while (1) { - if (!(--yieldCnt)) { - yieldCnt = 5000; - SysCall::yield(); - } - find++; - if (find > m_lastCluster) { - if (setStart) { - // Can't find space, checked all clusters. - DBG_FAIL_MACRO; - goto fail; - } - find = m_allocSearchStart; - setStart = true; - continue; - } - if (find == current) { - // Can't find space, already searched clusters after current. - DBG_FAIL_MACRO; - goto fail; - } - uint32_t f; - int8_t fg = fatGet(find, &f); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg && f == 0) { - break; - } - } - if (setStart) { - m_allocSearchStart = find; - } - // Mark end of chain. - if (!fatPutEOC(find)) { - DBG_FAIL_MACRO; - goto fail; - } - if (current) { - // Link clusters. - if (!fatPut(current, find)) { - DBG_FAIL_MACRO; - goto fail; - } - } - updateFreeClusterCount(-1); - *next = find; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// find a contiguous group of clusters -bool FatVolume::allocContiguous(uint32_t count, - uint32_t* firstCluster, uint32_t startCluster) { - // flag to save place to start next search - bool setStart; - // start of group - uint32_t bgnCluster; - // end of group - uint32_t endCluster; - if (startCluster != 0) { - bgnCluster = startCluster; - setStart = false; - } else { - // Start at cluster after last allocated cluster. - bgnCluster = m_allocSearchStart + 1; - setStart = true; - } - endCluster = bgnCluster; - // search the FAT for free clusters - // Following loop may iterate over up to 268 million clusters, so we need to allow - // the OS/hardware to do its work occasionally during the search or a WDT error will - // occur on the ESP8266. - int yieldCnt = 5000; - while (1) { - if (!(--yieldCnt)) { - yieldCnt = 5000; - SysCall::yield(); - } - if (endCluster > m_lastCluster) { - // Can't find space. - DBG_FAIL_MACRO; - goto fail; - } - uint32_t f; - int8_t fg = fatGet(endCluster, &f); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (f || fg == 0) { - if (startCluster) { - DBG_FAIL_MACRO; - goto fail; - } - // don't update search start if unallocated clusters before endCluster. - if (bgnCluster != endCluster) { - setStart = false; - } - // cluster in use try next cluster as bgnCluster - bgnCluster = endCluster + 1; - } else if ((endCluster - bgnCluster + 1) == count) { - // done - found space - break; - } - endCluster++; - } - // Remember possible next free cluster. - if (setStart) { - m_allocSearchStart = endCluster; - } - // mark end of chain - if (!fatPutEOC(endCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // link clusters - while (endCluster > bgnCluster) { - if (!fatPut(endCluster - 1, endCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - endCluster--; - } - // Maintain count of free clusters. - updateFreeClusterCount(-count); - - // return first cluster number to caller - *firstCluster = bgnCluster; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -uint32_t FatVolume::clusterFirstBlock(uint32_t cluster) const { - return m_dataStartBlock + ((cluster - 2) << m_clusterSizeShift); -} -//------------------------------------------------------------------------------ -// Fetch a FAT entry - return -1 error, 0 EOC, else 1. -int8_t FatVolume::fatGet(uint32_t cluster, uint32_t* value) { - uint32_t lba; - uint32_t next; - cache_t* pc; - - // error if reserved cluster of beyond FAT - if (cluster < 2 || cluster > m_lastCluster) { - DBG_FAIL_MACRO; - goto fail; - } - - if (fatType() == 32) { - lba = m_fatStartBlock + (cluster >> 7); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - next = pc->fat32[cluster & 0X7F] & FAT32MASK; - goto done; - } - if (fatType() == 16) { - lba = m_fatStartBlock + ((cluster >> 8) & 0XFF); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - next = pc->fat16[cluster & 0XFF]; - goto done; - } - if (FAT12_SUPPORT && fatType() == 12) { - uint16_t index = cluster; - index += index >> 1; - lba = m_fatStartBlock + (index >> 9); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - index &= 0X1FF; - uint16_t tmp = pc->data[index]; - index++; - if (index == 512) { - pc = cacheFetchFat(lba + 1, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - index = 0; - } - tmp |= pc->data[index] << 8; - next = cluster & 1 ? tmp >> 4 : tmp & 0XFFF; - goto done; - } else { - DBG_FAIL_MACRO; - goto fail; - } -done: - if (isEOC(next)) { - return 0; - } - *value = next; - return 1; - -fail: - return -1; -} -//------------------------------------------------------------------------------ -// Store a FAT entry -bool FatVolume::fatPut(uint32_t cluster, uint32_t value) { - uint32_t lba; - cache_t* pc; - - // error if reserved cluster of beyond FAT - if (cluster < 2 || cluster > m_lastCluster) { - DBG_FAIL_MACRO; - goto fail; - } - - if (fatType() == 32) { - lba = m_fatStartBlock + (cluster >> 7); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - pc->fat32[cluster & 0X7F] = value; - return true; - } - - if (fatType() == 16) { - lba = m_fatStartBlock + ((cluster >> 8) & 0XFF); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - pc->fat16[cluster & 0XFF] = value; - return true; - } - - if (FAT12_SUPPORT && fatType() == 12) { - uint16_t index = cluster; - index += index >> 1; - lba = m_fatStartBlock + (index >> 9); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - index &= 0X1FF; - uint8_t tmp = value; - if (cluster & 1) { - tmp = (pc->data[index] & 0XF) | tmp << 4; - } - pc->data[index] = tmp; - - index++; - if (index == 512) { - lba++; - index = 0; - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - } - tmp = value >> 4; - if (!(cluster & 1)) { - tmp = ((pc->data[index] & 0XF0)) | tmp >> 4; - } - pc->data[index] = tmp; - return true; - } else { - DBG_FAIL_MACRO; - goto fail; - } - -fail: - return false; -} -//------------------------------------------------------------------------------ -// free a cluster chain -bool FatVolume::freeChain(uint32_t cluster) { - uint32_t next; - int8_t fg; - do { - fg = fatGet(cluster, &next); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - // free cluster - if (!fatPut(cluster, 0)) { - DBG_FAIL_MACRO; - goto fail; - } - // Add one to count of free clusters. - updateFreeClusterCount(1); - - if (cluster <= m_allocSearchStart) { - m_allocSearchStart = cluster - 1; - } - cluster = next; - } while (fg); - - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -int32_t FatVolume::freeClusterCount() { -#if MAINTAIN_FREE_CLUSTER_COUNT - if (m_freeClusterCount >= 0) { - return m_freeClusterCount; - } -#endif // MAINTAIN_FREE_CLUSTER_COUNT - uint32_t free = 0; - uint32_t lba; - uint32_t todo = m_lastCluster + 1; - uint16_t n; - - if (FAT12_SUPPORT && fatType() == 12) { - for (unsigned i = 2; i < todo; i++) { - uint32_t c; - int8_t fg = fatGet(i, &c); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg && c == 0) { - free++; - } - } - } else if (fatType() == 16 || fatType() == 32) { - lba = m_fatStartBlock; - while (todo) { - cache_t* pc = cacheFetchFat(lba++, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - n = fatType() == 16 ? 256 : 128; - if (todo < n) { - n = todo; - } - if (fatType() == 16) { - for (uint16_t i = 0; i < n; i++) { - if (pc->fat16[i] == 0) { - free++; - } - } - } else { - for (uint16_t i = 0; i < n; i++) { - if (pc->fat32[i] == 0) { - free++; - } - } - } - todo -= n; - } - } else { - // invalid FAT type - DBG_FAIL_MACRO; - goto fail; - } - setFreeClusterCount(free); - return free; - -fail: - return -1; -} -//------------------------------------------------------------------------------ -bool FatVolume::init(uint8_t part) { - uint32_t clusterCount; - uint32_t totalBlocks; - uint32_t volumeStartBlock = 0; - fat32_boot_t* fbs; - cache_t* pc; - uint8_t tmp; - m_fatType = 0; - m_allocSearchStart = 1; - m_cache.init(this); -#if USE_SEPARATE_FAT_CACHE - m_fatCache.init(this); -#endif // USE_SEPARATE_FAT_CACHE - // if part == 0 assume super floppy with FAT boot sector in block zero - // if part > 0 assume mbr volume with partition table - if (part) { - if (part > 4) { - DBG_FAIL_MACRO; - goto fail; - } - pc = cacheFetchData(0, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - part_t* p = &pc->mbr.part[part - 1]; - if ((p->boot & 0X7F) != 0 || p->firstSector == 0) { - // not a valid partition - DBG_FAIL_MACRO; - goto fail; - } - volumeStartBlock = p->firstSector; - } - pc = cacheFetchData(volumeStartBlock, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - fbs = &(pc->fbs32); - if (fbs->bytesPerSector != 512 || - fbs->fatCount != 2 || - fbs->reservedSectorCount == 0) { - // not valid FAT volume - DBG_FAIL_MACRO; - goto fail; - } - m_blocksPerCluster = fbs->sectorsPerCluster; - m_clusterBlockMask = m_blocksPerCluster - 1; - // determine shift that is same as multiply by m_blocksPerCluster - m_clusterSizeShift = 0; - for (tmp = 1; m_blocksPerCluster != tmp; tmp <<= 1, m_clusterSizeShift++) { - if (tmp == 0) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_blocksPerFat = fbs->sectorsPerFat16 ? - fbs->sectorsPerFat16 : fbs->sectorsPerFat32; - - m_fatStartBlock = volumeStartBlock + fbs->reservedSectorCount; - - // count for FAT16 zero for FAT32 - m_rootDirEntryCount = fbs->rootDirEntryCount; - - // directory start for FAT16 dataStart for FAT32 - m_rootDirStart = m_fatStartBlock + 2 * m_blocksPerFat; - // data start for FAT16 and FAT32 - m_dataStartBlock = m_rootDirStart + ((32 * fbs->rootDirEntryCount + 511)/512); - - // total blocks for FAT16 or FAT32 - totalBlocks = fbs->totalSectors16 ? - fbs->totalSectors16 : fbs->totalSectors32; - // total data blocks - clusterCount = totalBlocks - (m_dataStartBlock - volumeStartBlock); - - // divide by cluster size to get cluster count - clusterCount >>= m_clusterSizeShift; - m_lastCluster = clusterCount + 1; - - // Indicate unknown number of free clusters. - setFreeClusterCount(-1); - // FAT type is determined by cluster count - if (clusterCount < 4085) { - m_fatType = 12; - if (!FAT12_SUPPORT) { - DBG_FAIL_MACRO; - goto fail; - } - } else if (clusterCount < 65525) { - m_fatType = 16; - } else { - m_rootDirStart = fbs->fat32RootCluster; - m_fatType = 32; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatVolume::wipe(print_t* pr) { - cache_t* cache; - uint16_t count; - uint32_t lbn; - if (!fatType()) { - DBG_FAIL_MACRO; - goto fail; - } - cache = cacheClear(); - if (!cache) { - DBG_FAIL_MACRO; - goto fail; - } - memset(cache->data, 0, 512); - // Zero root. - if (fatType() == 32) { - lbn = clusterFirstBlock(m_rootDirStart); - count = m_blocksPerCluster; - } else { - lbn = m_rootDirStart; - count = m_rootDirEntryCount/16; - } - for (uint32_t n = 0; n < count; n++) { - if (!writeBlock(lbn + n, cache->data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Clear FATs. - count = 2*m_blocksPerFat; - lbn = m_fatStartBlock; - for (uint32_t nb = 0; nb < count; nb++) { - if (pr && (nb & 0XFF) == 0) { - pr->write('.'); - } - if (!writeBlock(lbn + nb, cache->data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Reserve first two clusters. - if (fatType() == 32) { - cache->fat32[0] = 0x0FFFFFF8; - cache->fat32[1] = 0x0FFFFFFF; - } else if (fatType() == 16) { - cache->fat16[0] = 0XFFF8; - cache->fat16[1] = 0XFFFF; - } else if (FAT12_SUPPORT && fatType() == 12) { - cache->fat32[0] = 0XFFFFF8; - } else { - DBG_FAIL_MACRO; - goto fail; - } - if (!writeBlock(m_fatStartBlock, cache->data) || - !writeBlock(m_fatStartBlock + m_blocksPerFat, cache->data)) { - DBG_FAIL_MACRO; - goto fail; - } - if (fatType() == 32) { - // Reserve root cluster. - if (!fatPutEOC(m_rootDirStart) || !cacheSync()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (pr) { - pr->write('\r'); - pr->write('\n'); - } - m_fatType = 0; - return true; - -fail: - m_fatType = 0; - return false; -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatVolume.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatVolume.h deleted file mode 100644 index cf03b3c9..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FatVolume.h +++ /dev/null @@ -1,405 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatVolume_h -#define FatVolume_h -/** - * \file - * \brief FatVolume class - */ -#include -#include "FatLibConfig.h" -#include "FatStructs.h" -#include "BlockDriver.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -/** Macro for debug. */ -#define DEBUG_MODE 0 -#if DEBUG_MODE -#define DBG_FAIL_MACRO Serial.print(F(__FILE__)); Serial.println(__LINE__); -#define DBG_PRINT_IF(b) if (b) {Serial.println(F(#b)); DBG_FAIL_MACRO;} -#define DBG_HALT_IF(b) if (b) {Serial.println(F(#b));\ - DBG_FAIL_MACRO; while (1);} -#else // DEBUG_MODE -#define DBG_FAIL_MACRO -#define DBG_PRINT_IF(b) -#define DBG_HALT_IF(b) -#endif // DEBUG_MODE -#endif // DOXYGEN_SHOULD_SKIP_THIS -//------------------------------------------------------------------------------ -#if ENABLE_ARDUINO_FEATURES -/** Use Print for Arduino */ -typedef Print print_t; -#else // ENABLE_ARDUINO_FEATURES -/** - * \class CharWriter - * \brief Character output - often serial port. - */ -class CharWriter { - public: - virtual size_t write(char c) = 0; - virtual size_t write(const char* s) = 0; -}; -typedef CharWriter print_t; -#endif // ENABLE_ARDUINO_FEATURES -//------------------------------------------------------------------------------ -// Forward declaration of FatVolume. -class FatVolume; -//------------------------------------------------------------------------------ -/** - * \brief Cache for an raw data block. - */ -union cache_t { - /** Used to access cached file data blocks. */ - uint8_t data[512]; - /** Used to access cached FAT16 entries. */ - uint16_t fat16[256]; - /** Used to access cached FAT32 entries. */ - uint32_t fat32[128]; - /** Used to access cached directory entries. */ - dir_t dir[16]; - /** Used to access a cached Master Boot Record. */ - mbr_t mbr; - /** Used to access to a cached FAT boot sector. */ - fat_boot_t fbs; - /** Used to access to a cached FAT32 boot sector. */ - fat32_boot_t fbs32; - /** Used to access to a cached FAT32 FSINFO sector. */ - fat32_fsinfo_t fsinfo; -}; -//============================================================================== -/** - * \class FatCache - * \brief Block cache. - */ -class FatCache { - public: - - FatCache() { invalidate(); } - - /** Cached block is dirty */ - static const uint8_t CACHE_STATUS_DIRTY = 1; - /** Cashed block is FAT entry and must be mirrored in second FAT. */ - static const uint8_t CACHE_STATUS_MIRROR_FAT = 2; - /** Cache block status bits */ - static const uint8_t CACHE_STATUS_MASK - = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT; - /** Sync existing block but do not read new block. */ - static const uint8_t CACHE_OPTION_NO_READ = 4; - /** Cache block for read. */ - static const uint8_t CACHE_FOR_READ = 0; - /** Cache block for write. */ - static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY; - /** Reserve cache block for write - do not read from block device. */ - static const uint8_t CACHE_RESERVE_FOR_WRITE - = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ; - /** \return Cache block address. */ - cache_t* block() { - return &m_block; - } - /** Set current block dirty. */ - void dirty() { - m_status |= CACHE_STATUS_DIRTY; - } - /** Initialize the cache. - * \param[in] vol FatVolume that owns this FatCache. - */ - void init(FatVolume *vol) { - m_vol = vol; - invalidate(); - } - /** Invalidate current cache block. */ - void invalidate() { - m_status = 0; - m_lbn = 0XFFFFFFFF; - } - /** \return dirty status */ - bool isDirty() { - return m_status & CACHE_STATUS_DIRTY; - } - /** \return Logical block number for cached block. */ - uint32_t lbn() { - return m_lbn; - } - /** Read a block into the cache. - * \param[in] lbn Block to read. - * \param[in] option mode for cached block. - * \return Address of cached block. */ - cache_t* read(uint32_t lbn, uint8_t option); - /** Write current block if dirty. - * \return true for success else false. - */ - bool sync(); - - private: - uint8_t m_status; - FatVolume* m_vol; - uint32_t m_lbn; - cache_t m_block; -}; -//============================================================================== -/** - * \class FatVolume - * \brief Access FAT16 and FAT32 volumes on raw file devices. - */ -class FatVolume { - public: - /** Create an instance of FatVolume - */ - FatVolume() : m_fatType(0) {} - - /** \return The volume's cluster size in blocks. */ - uint8_t blocksPerCluster() const { - return m_blocksPerCluster; - } - /** \return The number of blocks in one FAT. */ - uint32_t blocksPerFat() const { - return m_blocksPerFat; - } - /** Clear the cache and returns a pointer to the cache. Not for normal apps. - * \return A pointer to the cache buffer or zero if an error occurs. - */ - cache_t* cacheClear() { - if (!cacheSync()) { - return 0; - } - m_cache.invalidate(); - return m_cache.block(); - } - /** \return The total number of clusters in the volume. */ - uint32_t clusterCount() const { - return m_lastCluster - 1; - } - /** \return The shift count required to multiply by blocksPerCluster. */ - uint8_t clusterSizeShift() const { - return m_clusterSizeShift; - } - /** \return The logical block number for the start of file data. */ - uint32_t dataStartBlock() const { - return m_dataStartBlock; - } - /** \return The sector number for the start of file data. */ - uint32_t dataStartSector() const { - return m_dataStartBlock; - } - /** \return The number of File Allocation Tables. */ - uint8_t fatCount() { - return 2; - } - /** \return The logical block number for the start of the first FAT. */ - uint32_t fatStartBlock() const { - return m_fatStartBlock; - } - /** \return The sector number for the start of the first FAT. */ - uint32_t fatStartSector() const { - return m_fatStartBlock; - } - /** \return The FAT type of the volume. Values are 12, 16 or 32. */ - uint8_t fatType() const { - return m_fatType; - } - /** Volume free space in clusters. - * - * \return Count of free clusters for success or -1 if an error occurs. - */ - int32_t freeClusterCount(); - /** Initialize a FAT volume. Try partition one first then try super - * floppy format. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool init() { - return init(1) || init(0); - } - /** Initialize a FAT volume. - - * \param[in] part The partition to be used. Legal values for \a part are - * 1-4 to use the corresponding partition on a device formatted with - * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in block zero. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool init(uint8_t part); - /** \return The cluster number of last cluster in the volume. */ - uint32_t lastCluster() const { - return m_lastCluster; - } - /** \return The number of entries in the root directory for FAT16 volumes. */ - uint16_t rootDirEntryCount() const { - return m_rootDirEntryCount; - } - /** \return The logical block number for the start of the root directory - on FAT16 volumes or the first cluster number on FAT32 volumes. */ - uint32_t rootDirStart() const { - return m_rootDirStart; - } - /** \return The volume's cluster size in sectors. */ - uint8_t sectorsPerCluster() const { - return m_blocksPerCluster; - } - /** \return The number of blocks in the volume */ - uint32_t volumeBlockCount() const { - return blocksPerCluster()*clusterCount(); - } - /** \return The number of sectors in the volume */ - uint32_t volumeSectorCount() const { - return sectorsPerCluster()*clusterCount(); - } - /** Wipe all data from the volume. - * \param[in] pr print stream for status dots. - * \return true for success else false. - */ - bool wipe(print_t* pr = 0); - /** Debug access to FAT table - * - * \param[in] n cluster number. - * \param[out] v value of entry - * \return -1 error, 0 EOC, else 1. - */ - int8_t dbgFat(uint32_t n, uint32_t* v) { - return fatGet(n, v); - } -//------------------------------------------------------------------------------ - private: - // Allow FatFile and FatCache access to FatVolume private functions. - friend class FatCache; ///< Allow access to FatVolume. - friend class FatFile; ///< Allow access to FatVolume. - friend class FatFileSystem; ///< Allow access to FatVolume. -//------------------------------------------------------------------------------ - BlockDriver* m_blockDev; // block device - uint8_t m_blocksPerCluster; // Cluster size in blocks. - uint8_t m_clusterBlockMask; // Mask to extract block of cluster. - uint8_t m_clusterSizeShift; // Cluster count to block count shift. - uint8_t m_fatType; // Volume type (12, 16, OR 32). - uint16_t m_rootDirEntryCount; // Number of entries in FAT16 root dir. - uint32_t m_allocSearchStart; // Start cluster for alloc search. - uint32_t m_blocksPerFat; // FAT size in blocks - uint32_t m_dataStartBlock; // First data block number. - uint32_t m_fatStartBlock; // Start block for first FAT. - uint32_t m_lastCluster; // Last cluster number in FAT. - uint32_t m_rootDirStart; // Start block for FAT16, cluster for FAT32. -//------------------------------------------------------------------------------ - // block I/O functions. - bool readBlock(uint32_t block, uint8_t* dst) { - return m_blockDev->readBlock(block, dst); - } - bool syncBlocks() { - return m_blockDev->syncBlocks(); - } - bool writeBlock(uint32_t block, const uint8_t* src) { - return m_blockDev->writeBlock(block, src); - } -#if USE_MULTI_BLOCK_IO - bool readBlocks(uint32_t block, uint8_t* dst, size_t nb) { - return m_blockDev->readBlocks(block, dst, nb); - } - bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb) { - return m_blockDev->writeBlocks(block, src, nb); - } -#endif // USE_MULTI_BLOCK_IO -#if MAINTAIN_FREE_CLUSTER_COUNT - int32_t m_freeClusterCount; // Count of free clusters in volume. - void setFreeClusterCount(int32_t value) { - m_freeClusterCount = value; - } - void updateFreeClusterCount(int32_t change) { - if (m_freeClusterCount >= 0) { - m_freeClusterCount += change; - } - } -#else // MAINTAIN_FREE_CLUSTER_COUNT - void setFreeClusterCount(int32_t value) { - (void)value; - } - void updateFreeClusterCount(int32_t change) { - (void)change; - } -#endif // MAINTAIN_FREE_CLUSTER_COUNT - -// block caches - FatCache m_cache; -#if USE_SEPARATE_FAT_CACHE - FatCache m_fatCache; - cache_t* cacheFetchFat(uint32_t blockNumber, uint8_t options) { - return m_fatCache.read(blockNumber, - options | FatCache::CACHE_STATUS_MIRROR_FAT); - } - bool cacheSync() { - return m_cache.sync() && m_fatCache.sync() && syncBlocks(); - } -#else // - cache_t* cacheFetchFat(uint32_t blockNumber, uint8_t options) { - return cacheFetchData(blockNumber, - options | FatCache::CACHE_STATUS_MIRROR_FAT); - } - bool cacheSync() { - return m_cache.sync() && syncBlocks(); - } -#endif // USE_SEPARATE_FAT_CACHE - cache_t* cacheFetchData(uint32_t blockNumber, uint8_t options) { - return m_cache.read(blockNumber, options); - } - void cacheInvalidate() { - m_cache.invalidate(); - } - bool cacheSyncData() { - return m_cache.sync(); - } - cache_t *cacheAddress() { - return m_cache.block(); - } - uint32_t cacheBlockNumber() { - return m_cache.lbn(); - } - void cacheDirty() { - m_cache.dirty(); - } -//------------------------------------------------------------------------------ - bool allocateCluster(uint32_t current, uint32_t* next); - bool allocContiguous(uint32_t count, - uint32_t* firstCluster, uint32_t startCluster = 0); - uint8_t blockOfCluster(uint32_t position) const { - return (position >> 9) & m_clusterBlockMask; - } - uint32_t clusterFirstBlock(uint32_t cluster) const; - int8_t fatGet(uint32_t cluster, uint32_t* value); - bool fatPut(uint32_t cluster, uint32_t value); - bool fatPutEOC(uint32_t cluster) { - return fatPut(cluster, 0x0FFFFFFF); - } - bool freeChain(uint32_t cluster); - bool isEOC(uint32_t cluster) const { - return cluster > m_lastCluster; - } -}; - -}; // namespace sdfat - -#endif // FatVolume diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FmtNumber.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FmtNumber.cpp deleted file mode 100644 index 91e22ade..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FmtNumber.cpp +++ /dev/null @@ -1,463 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FmtNumber.h" -// Use Stimmer div/mod 10 on avr -#ifdef __AVR__ -#include -#define USE_STIMMER -#endif // __AVR__ - -namespace sdfat { - -//------------------------------------------------------------------------------ -// Stimmer div/mod 10 for AVR -// this code fragment works out i/10 and i%10 by calculating -// i*(51/256)*(256/255)/2 == i*51/510 == i/10 -// by "j.k" I mean 32.8 fixed point, j is integer part, k is fractional part -// j.k = ((j+1.0)*51.0)/256.0 -// (we add 1 because we will be using the floor of the result later) -// divmod10_asm16 and divmod10_asm32 are public domain code by Stimmer. -// http://forum.arduino.cc/index.php?topic=167414.msg1293679#msg1293679 -#define divmod10_asm16(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " lsr %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") - -#define divmod10_asm32(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " mul %C0,%2 \n\t" \ - " clr %C0 \n\t" \ - " add %B0,r0 \n\t" \ - " adc %C0,r1 \n\t" \ - " mul %D0,%2 \n\t" \ - " clr %D0 \n\t" \ - " add %C0,r0 \n\t" \ - " adc %D0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,%C0 \n\t" \ - " adc %C0,%D0 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,%C0 \n\t" \ - " adc %B0,%D0 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%D0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " lsr %D0 \n\t" \ - " ror %C0 \n\t" \ - " ror %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") -//------------------------------------------------------------------------------ -/* -// C++ code is based on this version of divmod10 by robtillaart. -// http://forum.arduino.cc/index.php?topic=167414.msg1246851#msg1246851 -// from robtillaart post: -// The code is based upon the divu10() code from the book Hackers Delight1. -// My insight was that the error formula in divu10() was in fact modulo 10 -// but not always. Sometimes it was 10 more. -void divmod10(uint32_t in, uint32_t &div, uint32_t &mod) -{ - // q = in * 0.8; - uint32_t q = (in >> 1) + (in >> 2); - q = q + (q >> 4); - q = q + (q >> 8); - q = q + (q >> 16); // not needed for 16 bit version - - // q = q / 8; ==> q = in *0.1; - q = q >> 3; - - // determine error - uint32_t r = in - ((q << 3) + (q << 1)); // r = in - q*10; - div = q + (r > 9); - if (r > 9) mod = r - 10; - else mod = r; -} -// Hackers delight function is here: -// http://www.hackersdelight.org/hdcodetxt/divuc.c.txt -// Code below uses 8/10 = 0.1100 1100 1100 1100 1100 1100 1100 1100. -// 15 ops including the multiply, or 17 elementary ops. -unsigned divu10(unsigned n) { - unsigned q, r; - - q = (n >> 1) + (n >> 2); - q = q + (q >> 4); - q = q + (q >> 8); - q = q + (q >> 16); - q = q >> 3; - r = n - q*10; - return q + ((r + 6) >> 4); -// return q + (r > 9); -} -*/ -//------------------------------------------------------------------------------ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#ifdef __AVR__ -static const float m[] PROGMEM = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; -static const float p[] PROGMEM = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; -#else // __AVR__ -static const float m[] = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; -static const float p[] = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; -#endif // __AVR__ -#endif // DOXYGEN_SHOULD_SKIP_THIS -// scale float v by power of ten. return v*10^n -float scale10(float v, int8_t n) { - const float *s; - if (n < 0) { - n = -n; - s = m; - } else { - s = p; - } - n &= 63; - for (uint8_t i = 0; n; n >>= 1, i++) { -#ifdef __AVR__ - if (n & 1) { - v *= pgm_read_float(&s[i]); - } -#else // __AVR__ - if (n & 1) { - v *= s[i]; - } -#endif // __AVR__ - } - return v; -} -//------------------------------------------------------------------------------ -// Format 16-bit unsigned -char* fmtDec(uint16_t n, char* p) { - while (n > 9) { -#ifdef USE_STIMMER - uint8_t tmp8, r; - divmod10_asm16(n, r, tmp8); -#else // USE_STIMMER - uint16_t t = n; - n = (n >> 1) + (n >> 2); - n = n + (n >> 4); - n = n + (n >> 8); - // n = n + (n >> 16); // no code for 16-bit n - n = n >> 3; - uint8_t r = t - (((n << 2) + n) << 1); - if (r > 9) { - n++; - r -= 10; - } -#endif // USE_STIMMER - *--p = r + '0'; - } - *--p = n + '0'; - return p; -} -//------------------------------------------------------------------------------ -// format 32-bit unsigned -char* fmtDec(uint32_t n, char* p) { - while (n >> 16) { -#ifdef USE_STIMMER - uint8_t tmp8, r; - divmod10_asm32(n, r, tmp8); -#else // USE_STIMMER - uint32_t t = n; - n = (n >> 1) + (n >> 2); - n = n + (n >> 4); - n = n + (n >> 8); - n = n + (n >> 16); - n = n >> 3; - uint8_t r = t - (((n << 2) + n) << 1); - if (r > 9) { - n++; - r -= 10; - } -#endif // USE_STIMMER - *--p = r + '0'; - } - return fmtDec((uint16_t)n, p); -} -//------------------------------------------------------------------------------ -char* fmtFloat(float value, char* p, uint8_t prec) { - char sign = value < 0 ? '-' : 0; - if (sign) { - value = -value; - } - - if (isnan(value)) { - *--p = 'n'; - *--p = 'a'; - *--p = 'n'; - return p; - } - if (isinf(value)) { - *--p = 'f'; - *--p = 'n'; - *--p = 'i'; - return p; - } - if (value > 4294967040.0) { - *--p = 'f'; - *--p = 'v'; - *--p = 'o'; - return p; - } - if (prec > 9) { - prec = 9; - } - value += scale10(0.5, -prec); - - uint32_t whole = value; - if (prec) { - char* tmp = p - prec; - uint32_t fraction = scale10(value - whole, prec); - p = fmtDec(fraction, p); - while (p > tmp) { - *--p = '0'; - } - *--p = '.'; - } - p = fmtDec(whole, p); - if (sign) { - *--p = sign; - } - return p; -} -//------------------------------------------------------------------------------ -/** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] ptr Pointer to last char in buffer. - * \param[in] prec Number of digits after decimal point. - * \param[in] expChar Use exp format if non zero. - * \return Pointer to first character of result. - */ -char* fmtFloat(float value, char* ptr, uint8_t prec, char expChar) { - bool neg = value < 0; - if (neg) { - value = -value; - } - - // check for nan inf ovf - if (isnan(value)) { - *--ptr = 'n'; - *--ptr = 'a'; - *--ptr = 'n'; - return ptr; - } - if (isinf(value)) { - *--ptr = 'f'; - *--ptr = 'n'; - *--ptr = 'i'; - return ptr; - } - if (!expChar && value > 4294967040.0) { - *--ptr = 'f'; - *--ptr = 'v'; - *--ptr = 'o'; - return ptr; - } - if (prec > 9) { - prec = 9; - } - float round = scale10(0.5, -prec); - if (expChar) { - int8_t exp = 0; - bool expNeg = false; - if (value) { - while (value > 10.0) { - value *= 0.1; - exp++; - } - while (value < 1.0) { - value *= 10.0; - exp--; - } - value += round; - if (value > 10.0) { - value *= 0.1; - exp++; - } - expNeg = exp < 0; - if (expNeg) { - exp = -exp; - } - } - ptr = fmtDec((uint16_t)exp, ptr); - if (exp < 10) { - *--ptr = '0'; - } - *--ptr = expNeg ? '-' : '+'; - *--ptr = expChar; - } else { - // round value - value += round; - } - uint32_t whole = value; - if (prec) { - char* tmp = ptr - prec; - uint32_t fraction = scale10(value - whole, prec); - ptr = fmtDec(fraction, ptr); - while (ptr > tmp) { - *--ptr = '0'; - } - *--ptr = '.'; - } - ptr = fmtDec(whole, ptr); - if (neg) { - *--ptr = '-'; - } - return ptr; -} -//------------------------------------------------------------------------------ -char* fmtHex(uint32_t n, char* p) { - do { - uint8_t h = n & 0XF; - *--p = h + (h < 10 ? '0' : 'A' - 10); - n >>= 4; - } while (n); - return p; -} -//------------------------------------------------------------------------------ -float scanFloat(const char* str, char** ptr) { - int16_t const EXP_LIMIT = 100; - bool digit = false; - bool dot = false; - uint32_t fract = 0; - int fracExp = 0; - uint8_t nd = 0; - bool neg; - int c; - float v; - const char* successPtr = str; - - if (ptr) { - *ptr = const_cast(str); - } - - while (isSpace((c = *str++))) {} - neg = c == '-'; - if (c == '-' || c == '+') { - c = *str++; - } - // Skip leading zeros - while (c == '0') { - c = *str++; - digit = true; - } - for (;;) { - if (isDigit(c)) { - digit = true; - if (nd < 9) { - fract = 10*fract + c - '0'; - nd++; - if (dot) { - fracExp--; - } - } else { - if (!dot) { - fracExp++; - } - } - } else if (c == '.') { - if (dot) { - goto fail; - } - dot = true; - } else { - if (!digit) { - goto fail; - } - break; - } - successPtr = str; - c = *str++; - } - if (c == 'e' || c == 'E') { - int exp = 0; - c = *str++; - bool expNeg = c == '-'; - if (c == '-' || c == '+') { - c = *str++; - } - while (isDigit(c)) { - if (exp > EXP_LIMIT) { - goto fail; - } - exp = 10*exp + c - '0'; - successPtr = str; - c = *str++; - } - fracExp += expNeg ? -exp : exp; - } - if (ptr) { - *ptr = const_cast(successPtr); - } - v = scale10(static_cast(fract), fracExp); - return neg ? -v : v; - -fail: - return 0; -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FmtNumber.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FmtNumber.h deleted file mode 100644 index cd033552..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/FmtNumber.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FmtNumber_h -#define FmtNumber_h -#include -#include - -// #include - -namespace sdfat { - -inline bool isDigit(char c) { - return '0' <= c && c <= '9'; -} -inline bool isSpace(char c) { - return c == ' ' || (0X9 <= c && c <= 0XD); -} - -char* fmtDec(uint16_t n, char* p); -char* fmtDec(uint32_t n, char* p); -char* fmtFloat(float value, char* p, uint8_t prec); -char* fmtFloat(float value, char* ptr, uint8_t prec, char expChar); -char* fmtHex(uint32_t n, char* p); -float scale10(float v, int8_t n); -float scanFloat(const char* str, char** ptr); - -}; // namespace sdfat - -#endif // FmtNumber_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/StdioStream.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/StdioStream.cpp deleted file mode 100644 index 7ce4c995..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/StdioStream.cpp +++ /dev/null @@ -1,512 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "StdioStream.h" -#include "FmtNumber.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -int StdioStream::fclose() { - int rtn = 0; - if (!m_status) { - return EOF; - } - if (m_status & S_SWR) { - if (!flushBuf()) { - rtn = EOF; - } - } - if (!FatFile::close()) { - rtn = EOF; - } - m_r = 0; - m_w = 0; - m_status = 0; - return rtn; -} -//------------------------------------------------------------------------------ -int StdioStream::fflush() { - if ((m_status & (S_SWR | S_SRW)) && !(m_status & S_SRD)) { - if (flushBuf() && FatFile::sync()) { - return 0; - } - } - return EOF; -} -//------------------------------------------------------------------------------ -char* StdioStream::fgets(char* str, size_t num, size_t* len) { - char* s = str; - size_t n; - if (num-- == 0) { - return 0; - } - while (num) { - if ((n = m_r) == 0) { - if (!fillBuf()) { - if (s == str) { - return 0; - } - break; - } - n = m_r; - } - if (n > num) { - n = num; - } - uint8_t* end = reinterpret_cast(memchr(m_p, '\n', n)); - if (end != 0) { - n = ++end - m_p; - memcpy(s, m_p, n); - m_r -= n; - m_p = end; - s += n; - break; - } - memcpy(s, m_p, n); - m_r -= n; - m_p += n; - s += n; - num -= n; - } - *s = 0; - if (len) { - *len = s - str; - } - return str; -} -//------------------------------------------------------------------------------ -bool StdioStream::fopen(const char* path, const char* mode) { - oflag_t oflag; - uint8_t m; - switch (*mode++) { - case 'a': - m = O_WRONLY; - oflag = O_CREAT | O_APPEND; - m_status = S_SWR; - break; - - case 'r': - m = O_RDONLY; - oflag = 0; - m_status = S_SRD; - break; - - case 'w': - m = O_WRONLY; - oflag = O_CREAT | O_TRUNC; - m_status = S_SWR; - break; - - default: - goto fail; - } - while (*mode) { - switch (*mode++) { - case '+': - m_status = S_SRW; - m = O_RDWR; - break; - - case 'b': - break; - - case 'x': - oflag |= O_EXCL; - break; - - default: - goto fail; - } - } - oflag |= m; - - if (!FatFile::open(path, oflag)) { - goto fail; - } - m_r = 0; - m_w = 0; - m_p = m_buf; - return true; - -fail: - m_status = 0; - return false; -} -//------------------------------------------------------------------------------ -int StdioStream::fputs(const char* str) { - size_t len = strlen(str); - return fwrite(str, 1, len) == len ? len : EOF; -} -//------------------------------------------------------------------------------ -size_t StdioStream::fread(void* ptr, size_t size, size_t count) { - uint8_t* dst = reinterpret_cast(ptr); - size_t total = size*count; - if (total == 0) { - return 0; - } - size_t need = total; - while (need > m_r) { - memcpy(dst, m_p, m_r); - dst += m_r; - m_p += m_r; - need -= m_r; - if (!fillBuf()) { - return (total - need)/size; - } - } - memcpy(dst, m_p, need); - m_r -= need; - m_p += need; - return count; -} -//------------------------------------------------------------------------------ -int StdioStream::fseek(int32_t offset, int origin) { - int32_t pos; - if (m_status & S_SWR) { - if (!flushBuf()) { - goto fail; - } - } - switch (origin) { - case SEEK_CUR: - pos = ftell(); - if (pos < 0) { - goto fail; - } - pos += offset; - if (!FatFile::seekCur(pos)) { - goto fail; - } - break; - - case SEEK_SET: - if (!FatFile::seekSet(offset)) { - goto fail; - } - break; - - case SEEK_END: - if (!FatFile::seekEnd(offset)) { - goto fail; - } - break; - - default: - goto fail; - } - m_r = 0; - m_p = m_buf; - return 0; - -fail: - return EOF; -} -//------------------------------------------------------------------------------ -int32_t StdioStream::ftell() { - uint32_t pos = FatFile::curPosition(); - if (m_status & S_SRD) { - if (m_r > pos) { - return -1L; - } - pos -= m_r; - } else if (m_status & S_SWR) { - pos += m_p - m_buf; - } - return pos; -} -//------------------------------------------------------------------------------ -size_t StdioStream::fwrite(const void* ptr, size_t size, size_t count) { - return write(ptr, count*size) < 0 ? EOF : count; -} -//------------------------------------------------------------------------------ -int StdioStream::write(const void* buf, size_t count) { - const uint8_t* src = static_cast(buf); - size_t todo = count; - - while (todo > m_w) { - memcpy(m_p, src, m_w); - m_p += m_w; - src += m_w; - todo -= m_w; - if (!flushBuf()) { - return EOF; - } - } - memcpy(m_p, src, todo); - m_p += todo; - m_w -= todo; - return count; -} -//------------------------------------------------------------------------------ -#if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) -size_t StdioStream::print(const __FlashStringHelper *str) { - const char *p = (const char*)str; - uint8_t c; - while ((c = pgm_read_byte(p))) { - if (putc(c) < 0) { - return 0; - } - p++; - } - return p - (const char*)str; -} -#endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) -//------------------------------------------------------------------------------ -int StdioStream::printDec(float value, uint8_t prec) { - char buf[24]; - char *ptr = fmtFloat(value, buf + sizeof(buf), prec); - return write(ptr, buf + sizeof(buf) - ptr); -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(signed char n) { - if (n < 0) { - if (fputc('-') < 0) { - return -1; - } - n = -n; - } - return printDec((unsigned char)n); -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(int16_t n) { - int s; - uint8_t rtn = 0; - if (n < 0) { - if (fputc('-') < 0) { - return -1; - } - n = -n; - rtn++; - } - if ((s = printDec((uint16_t)n)) < 0) { - return s; - } - return rtn; -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(uint16_t n) { -#define NEW_WAY -#ifdef NEW_WAY - char buf[5]; - char *ptr = fmtDec(n, buf + sizeof(buf)); - uint8_t len = buf + sizeof(buf) - ptr; - return write(ptr, len); -#else - uint8_t len; - if (n < 100) { - len = n < 10 ? 1 : 2; - } else { - len = n < 1000 ? 3 : n < 10000 ? 4 : 5; - } - char* str = fmtSpace(len); - if (!str) { - return -1; - } - fmtDec(n, str); - return len; -#endif -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(int32_t n) { - uint8_t s = 0; - if (n < 0) { - if (fputc('-') < 0) { - return -1; - } - n = -n; - s = 1; - } - int rtn = printDec((uint32_t)n); - return rtn > 0 ? rtn + s : -1; -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(uint32_t n) { -#ifdef NEW_WAY - char buf[10]; - char *ptr = fmtDec(n, buf + sizeof(buf)); - uint8_t len = buf + sizeof(buf) - ptr; - return write(ptr, len); -#else - uint8_t len; - if (n < 0X10000) { - return printDec((uint16_t)n); - } - if (n < 10000000) { - len = n < 100000 ? 5 : n < 1000000 ? 6 : 7; - } else { - len = n < 100000000 ? 8 : n < 1000000000 ? 9 : 10; - } - - char* str = fmtSpace(len); - if (!str) { - return -1; - } - fmtDec(n, str); - return len; -#endif -} -//------------------------------------------------------------------------------ -int StdioStream::printHex(uint32_t n) { -#ifdef NEW_WAY - char buf[8]; - char *ptr = fmtHex(n, buf + sizeof(buf)); - uint8_t len = buf + sizeof(buf) - ptr; - return write(ptr, len); -#else - size_t len; - if (n < 0X10000) { - len = n < 0X10 ? 1 : n < 0X100 ? 2 : n < 0X1000 ? 3 : 4; - } else { - len = n < 0X100000 ? 5 : n < 0X1000000 ? 6 : n < 0X10000000 ? 7 : 8; - } - char* str = fmtSpace(len); - if (!str) { - return -1; - } - - do { - uint8_t h = n & 0XF; - *str-- = h + (h < 10 ? '0' : 'A' - 10); - n >>= 4; - } while (n); - return len; -#endif -} -//------------------------------------------------------------------------------ -bool StdioStream::rewind() { - if (m_status & S_SWR) { - if (!flushBuf()) { - return false; - } - } - FatFile::seekSet(0); - m_r = 0; - return true; -} -//------------------------------------------------------------------------------ -int StdioStream::ungetc(int c) { - // error if EOF. - if (c == EOF) { - return EOF; - } - // error if not reading. - if ((m_status & S_SRD) == 0) { - return EOF; - } - // error if no space. - if (m_p == m_buf) { - return EOF; - } - m_r++; - m_status &= ~S_EOF; - return *--m_p = (uint8_t)c; -} -//============================================================================== -// private -//------------------------------------------------------------------------------ -int StdioStream::fillGet() { - if (!fillBuf()) { - return EOF; - } - m_r--; - return *m_p++; -} -//------------------------------------------------------------------------------ -// private -bool StdioStream::fillBuf() { - if (!(m_status & - S_SRD)) { // check for S_ERR and S_EOF ??///////////////// - if (!(m_status & S_SRW)) { - m_status |= S_ERR; - return false; - } - if (m_status & S_SWR) { - if (!flushBuf()) { - return false; - } - m_status &= ~S_SWR; - m_status |= S_SRD; - m_w = 0; - } - } - m_p = m_buf + UNGETC_BUF_SIZE; - int nr = FatFile::read(m_p, sizeof(m_buf) - UNGETC_BUF_SIZE); - if (nr <= 0) { - m_status |= nr < 0 ? S_ERR : S_EOF; - m_r = 0; - return false; - } - m_r = nr; - return true; -} -//------------------------------------------------------------------------------ -// private -bool StdioStream::flushBuf() { - if (!(m_status & - S_SWR)) { // check for S_ERR ??//////////////////////// - if (!(m_status & S_SRW)) { - m_status |= S_ERR; - return false; - } - m_status &= ~S_SRD; - m_status |= S_SWR; - m_r = 0; - m_w = sizeof(m_buf); - m_p = m_buf; - return true; - } - uint8_t n = m_p - m_buf; - m_p = m_buf; - m_w = sizeof(m_buf); - if (FatFile::write(m_buf, n) == n) { - return true; - } - m_status |= S_ERR; - return false; -} -//------------------------------------------------------------------------------ -int StdioStream::flushPut(uint8_t c) { - if (!flushBuf()) { - return EOF; - } - m_w--; - return *m_p++ = c; -} -//------------------------------------------------------------------------------ -char* StdioStream::fmtSpace(uint8_t len) { - if (m_w < len) { - if (!flushBuf() || m_w < len) { - return 0; - } - } - if (len > m_w) { - return 0; - } - m_p += len; - m_w -= len; - return reinterpret_cast(m_p); -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/StdioStream.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/StdioStream.h deleted file mode 100644 index 9905d8b0..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/StdioStream.h +++ /dev/null @@ -1,679 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef StdioStream_h -#define StdioStream_h -/** - * \file - * \brief StdioStream class - */ -#include -#include "FatFile.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** Total size of stream buffer. The entire buffer is used for output. - * During input UNGETC_BUF_SIZE of this space is reserved for ungetc. - */ -const uint8_t STREAM_BUF_SIZE = 64; -/** Amount of buffer allocated for ungetc during input. */ -const uint8_t UNGETC_BUF_SIZE = 2; - -}; // namespace sdfat - -//------------------------------------------------------------------------------ -// Get rid of any macros defined in . -#include -#undef clearerr -#undef fclose -#undef feof -#undef ferror -#undef fflush -#undef fgetc -#undef fgetpos -#undef fgets -#undef fopen -#undef fprintf -#undef fputc -#undef fputs -#undef fread -#undef freopen -#undef fscanf -#undef fseek -#undef fsetpos -#undef ftell -#undef fwrite -#undef getc -#undef getchar -#undef gets -#undef perror -//#undef printf // NOLINT -#undef putc -#undef putchar -#undef puts -#undef remove -#undef rename -#undef rewind -#undef scanf -#undef setbuf -#undef setvbuf -//#undef sprintf // NOLINT -#undef sscanf -#undef tmpfile -#undef tmpnam -#undef ungetc -#undef vfprintf -#undef vprintf -#undef vsprintf - -// make sure needed macros are defined -#ifndef EOF -/** End-of-file return value. */ -#define EOF (-1) -#endif // EOF -#ifndef NULL -/** Null pointer */ -#define NULL 0 -#endif // NULL -#ifndef SEEK_CUR -/** Seek relative to current position. */ -#define SEEK_CUR 1 -#endif // SEEK_CUR -#ifndef SEEK_END -/** Seek relative to end-of-file. */ -#define SEEK_END 2 -#endif // SEEK_END -#ifndef SEEK_SET -/** Seek relative to start-of-file. */ -#define SEEK_SET 0 -#endif // SEEK_SET - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** \class StdioStream - * \brief StdioStream implements a minimal stdio stream. - * - * StdioStream does not support subdirectories or long file names. - */ -class StdioStream : private FatFile { - public: - /** Constructor - * - */ - StdioStream() { - m_w = m_r = 0; - m_p = m_buf; - m_status = 0; - } - //---------------------------------------------------------------------------- - /** Clear the stream's end-of-file and error indicators. */ - void clearerr() { - m_status &= ~(S_ERR | S_EOF); - } - //---------------------------------------------------------------------------- - /** Close a stream. - * - * A successful call to the fclose function causes the stream to be - * flushed and the associated file to be closed. Any unwritten buffered - * data is written to the file; any unread buffered data is discarded. - * Whether or not the call succeeds, the stream is disassociated from - * the file. - * - * \return zero if the stream was successfully closed, or EOF if any any - * errors are detected. - */ - int fclose(); - //---------------------------------------------------------------------------- - /** Test the stream's end-of-file indicator. - * \return non-zero if and only if the end-of-file indicator is set. - */ - int feof() { - return (m_status & S_EOF) != 0; - } - //---------------------------------------------------------------------------- - /** Test the stream's error indicator. - * \return return non-zero if and only if the error indicator is set. - */ - int ferror() { - return (m_status & S_ERR) != 0; - } - //---------------------------------------------------------------------------- - /** Flush the stream. - * - * If stream is an output stream or an update stream in which the most - * recent operation was not input, any unwritten data is written to the - * file; otherwise the call is an error since any buffered input data - * would be lost. - * - * \return sets the error indicator for the stream and returns EOF if an - * error occurs, otherwise it returns zero. - */ - int fflush(); - //---------------------------------------------------------------------------- - /** Get a byte from the stream. - * - * \return If the end-of-file indicator for the stream is set, or if the - * stream is at end-of-file, the end-of-file indicator for the stream is - * set and the fgetc function returns EOF. Otherwise, the fgetc function - * returns the next character from the input stream. - */ - int fgetc() { - return m_r-- == 0 ? fillGet() : *m_p++; - } - //---------------------------------------------------------------------------- - /** Get a string from a stream. - * - * The fgets function reads at most one less than the number of - * characters specified by num from the stream into the array pointed - * to by str. No additional characters are read after a new-line - * character (which is retained) or after end-of-file. A null character - * is written immediately after the last character read into the array. - * - * \param[out] str Pointer to an array of where the string is copied. - * - * \param[in] num Maximum number of characters including the null - * character. - * - * \param[out] len If len is not null and fgets is successful, the - * length of the string is returned. - * - * \return str if successful. If end-of-file is encountered and no - * characters have been read into the array, the contents of the array - * remain unchanged and a null pointer is returned. If a read error - * occurs during the operation, the array contents are indeterminate - * and a null pointer is returned. - */ - char* fgets(char* str, size_t num, size_t* len = 0); - //---------------------------------------------------------------------------- - /** Open a stream. - * - * Open a file and associates the stream with it. - * - * \param[in] path file to be opened. - * - * \param[in] mode a string that indicates the open mode. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
"r" or "rb"Open a file for reading. The file must exist.
"w" or "wb"Truncate an existing to zero length or create an empty file - * for writing.
"wx" or "wbx"Create a file for writing. Fails if the file already exists.
"a" or "ab"Append; open or create file for writing at end-of-file.
"r+" or "rb+" or "r+b"Open a file for update (reading and writing).
"w+" or "w+b" or "wb+"Truncate an existing to zero length or create a file for update.
"w+x" or "w+bx" or "wb+x"Create a file for update. Fails if the file already exists.
"a+" or "a+b" or "ab+"Append; open or create a file for update, writing at end-of-file.
- * The character 'b' shall have no effect, but is allowed for ISO C - * standard conformance. - * - * Opening a file with append mode causes all subsequent writes to the - * file to be forced to the then current end-of-file, regardless of - * intervening calls to the fseek function. - * - * When a file is opened with update mode, both input and output may be - * performed on the associated stream. However, output shall not be - * directly followed by input without an intervening call to the fflush - * function or to a file positioning function (fseek, or rewind), and - * input shall not be directly followed by output without an intervening - * call to a file positioning function, unless the input operation - * encounters end-of-file. - * - * \return true for success or false for failure. - */ - bool fopen(const char* path, const char * mode); - //---------------------------------------------------------------------------- - /** Write a byte to a stream. - * - * \param[in] c the byte to be written (converted to an unsigned char). - * - * \return Upon successful completion, fputc() returns the value it - * has written. Otherwise, it returns EOF and sets the error indicator for - * the stream. - */ - int fputc(int c) { - return m_w-- == 0 ? flushPut(c) : *m_p++ = c; - } - //---------------------------------------------------------------------------- - /** Write a string to a stream. - * - * \param[in] str a pointer to the string to be written. - * - * \return for success, fputs() returns a non-negative - * number. Otherwise, it returns EOF and sets the error indicator for - * the stream. - */ - int fputs(const char* str); - //---------------------------------------------------------------------------- - /** Binary input. - * - * Reads an array of up to count elements, each one with a size of size - * bytes. - * \param[out] ptr pointer to area of at least (size*count) bytes where - * the data will be stored. - * - * \param[in] size the size, in bytes, of each element to be read. - * - * \param[in] count the number of elements to be read. - * - * \return number of elements successfully read, which may be less than - * count if a read error or end-of-file is encountered. If size or count - * is zero, fread returns zero and the contents of the array and the - * state of the stream remain unchanged. - */ - size_t fread(void* ptr, size_t size, size_t count); - //---------------------------------------------------------------------------- - /** Set the file position for the stream. - * - * \param[in] offset number of offset from the origin. - * - * \param[in] origin position used as reference for the offset. It is - * specified by one of the following constants. - * - * SEEK_SET - Beginning of file. - * - * SEEK_CUR - Current position of the file pointer. - * - * SEEK_END - End of file. - * - * \return zero for success. Otherwise, it returns non-zero and sets the - * error indicator for the stream. - */ - int fseek(int32_t offset, int origin); - //---------------------------------------------------------------------------- - /** Get the current position in a stream. - * - * \return If successful, ftell return the current value of the position - * indicator. On failure, ftell returns −1L. - */ - int32_t ftell(); - //---------------------------------------------------------------------------- - /** Binary output. - * - * Writes an array of up to count elements, each one with a size of size - * bytes. - * \param[in] ptr pointer to (size*count) bytes of data to be written. - * - * \param[in] size the size, in bytes, of each element to be written. - * - * \param[in] count the number of elements to be written. - * - * \return number of elements successfully written. if this number is - * less than count, an error has occurred. If size or count is zero, - * fwrite returns zero. - */ - size_t fwrite(const void * ptr, size_t size, size_t count); - //---------------------------------------------------------------------------- - /** Get a byte from the stream. - * - * getc and fgetc are equivalent but getc is in-line so it is faster but - * require more flash memory. - * - * \return If the end-of-file indicator for the stream is set, or if the - * stream is at end-of-file, the end-of-file indicator for the stream is - * set and the fgetc function returns EOF. Otherwise, the fgetc function - * returns the next character from the input stream. - */ - inline __attribute__((always_inline)) - int getc() { - return m_r-- == 0 ? fillGet() : *m_p++; - } - //---------------------------------------------------------------------------- - /** Write a byte to a stream. - * - * putc and fputc are equivalent but putc is in-line so it is faster but - * require more flash memory. - * - * \param[in] c the byte to be written (converted to an unsigned char). - * - * \return Upon successful completion, fputc() returns the value it - * has written. Otherwise, it returns EOF and sets the error indicator for - * the stream. - */ - inline __attribute__((always_inline)) - int putc(int c) { - return m_w-- == 0 ? flushPut(c) : *m_p++ = c; - } - //---------------------------------------------------------------------------- - /** Write a CR/LF. - * - * \return two, the number of bytes written, for success or -1 for failure. - */ - inline __attribute__((always_inline)) - int putCRLF() { - if (m_w < 2) { - if (!flushBuf()) { - return -1; - } - } - *m_p++ = '\r'; - *m_p++ = '\n'; - m_w -= 2; - return 2; - } - //---------------------------------------------------------------------------- - /** Write a character. - * \param[in] c the character to write. - * \return the number of bytes written. - */ - size_t print(char c) { - return putc(c) < 0 ? 0 : 1; - } - //---------------------------------------------------------------------------- - /** Write a string. - * - * \param[in] str the string to be written. - * - * \return the number of bytes written. - */ - size_t print(const char* str) { - int n = fputs(str); - return n < 0 ? 0 : n; - } - //---------------------------------------------------------------------------- -#if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - /** Print a string stored in flash memory. - * - * \param[in] str the string to print. - * - * \return the number of bytes written. - */ - size_t print(const __FlashStringHelper *str); -#endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - //---------------------------------------------------------------------------- - /** Print a floating point number. - * - * \param[in] prec Number of digits after decimal point. - * - * \param[in] val the number to be printed. - * - * \return the number of bytes written. - */ - size_t print(double val, uint8_t prec = 2) { - return print(static_cast(val), prec); - } - //---------------------------------------------------------------------------- - /** Print a floating point number. - * - * \param[in] prec Number of digits after decimal point. - * - * \param[in] val the number to be printed. - * - * \return the number of bytes written. - */ - size_t print(float val, uint8_t prec = 2) { - int n = printDec(val, prec); - return n > 0 ? n : 0; - } - //---------------------------------------------------------------------------- - /** Print a number. - * - * \param[in] val the number to be printed. - * - * \return the number of bytes written. - */ - template - size_t print(T val) { - int n = printDec(val); - return n > 0 ? n : 0; - } - //---------------------------------------------------------------------------- - /** Write a CR/LF. - * - * \return two, the number of bytes written, for success or zero for failure. - */ - size_t println() { - return putCRLF() > 0 ? 2 : 0; - } - //---------------------------------------------------------------------------- - /** Print a floating point number followed by CR/LF. - * - * \param[in] val the number to be printed. - * - * \param[in] prec Number of digits after decimal point. - * - * \return the number of bytes written. - */ - size_t println(double val, uint8_t prec = 2) { - return println(static_cast(val), prec); - } - //---------------------------------------------------------------------------- - /** Print a floating point number followed by CR/LF. - * - * \param[in] val the number to be printed. - * - * \param[in] prec Number of digits after decimal point. - * - * \return the number of bytes written. - */ - size_t println(float val, uint8_t prec = 2) { - int n = printDec(val, prec); - return n > 0 && putCRLF() > 0 ? n + 2 : 0; - } - //---------------------------------------------------------------------------- - /** Print an item followed by CR/LF - * - * \param[in] val the item to be printed. - * - * \return the number of bytes written. - */ - template - size_t println(T val) { - int n = print(val); - return putCRLF() > 0 ? n + 2 : 0; - } - //---------------------------------------------------------------------------- - /** Print a char as a number. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(char n) { - if (CHAR_MIN == 0) { - return printDec((unsigned char)n); - } else { - return printDec((signed char)n); - } - } - //---------------------------------------------------------------------------- - /** print a signed 8-bit integer - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(signed char n); - //---------------------------------------------------------------------------- - /** Print an unsigned 8-bit number. - * \param[in] n number to be print. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(unsigned char n) { - return printDec((uint16_t)n); - } - //---------------------------------------------------------------------------- - /** Print a int16_t - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(int16_t n); - //---------------------------------------------------------------------------- - /** print a uint16_t. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(uint16_t n); - //---------------------------------------------------------------------------- - /** Print a signed 32-bit integer. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(int32_t n); - //---------------------------------------------------------------------------- - /** Write an unsigned 32-bit number. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(uint32_t n); - //---------------------------------------------------------------------------- - /** Print a double. - * \param[in] value The number to be printed. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(double value, uint8_t prec) { - return printDec(static_cast(value), prec); - } - //---------------------------------------------------------------------------- - /** Print a float. - * \param[in] value The number to be printed. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(float value, uint8_t prec); - //---------------------------------------------------------------------------- - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(double value, char term, uint8_t prec = 2) { - return printField(static_cast(value), term, prec) > 0; - } - //---------------------------------------------------------------------------- - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(float value, char term, uint8_t prec = 2) { - int rtn = printDec(value, prec); - return rtn < 0 || putc(term) < 0 ? -1 : rtn + 1; - } - //---------------------------------------------------------------------------- - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. - * \return The number of bytes written or -1 if an error occurs. - */ - template - int printField(T value, char term) { - int rtn = printDec(value); - return rtn < 0 || putc(term) < 0 ? -1 : rtn + 1; - } - //---------------------------------------------------------------------------- - /** Print HEX - * \param[in] n number to be printed as HEX. - * - * \return The number of bytes written or -1 if an error occurs. - */ - int printHex(uint32_t n); - //---------------------------------------------------------------------------- - /** Print HEX with CRLF - * \param[in] n number to be printed as HEX. - * - * \return The number of bytes written or -1 if an error occurs. - */ - int printHexln(uint32_t n) { - int rtn = printHex(n); - return rtn < 0 || putCRLF() != 2 ? -1 : rtn + 2; - } - //---------------------------------------------------------------------------- - /** Set position of a stream to the beginning. - * - * The rewind function sets the file position to the beginning of the - * file. It is equivalent to fseek(0L, SEEK_SET) except that the error - * indicator for the stream is also cleared. - * - * \return true for success or false for failure. - */ - bool rewind(); - //---------------------------------------------------------------------------- - /** Push a byte back into an input stream. - * - * \param[in] c the byte (converted to an unsigned char) to be pushed back. - * - * One character of push-back is guaranteed. If the ungetc function is - * called too many times without an intervening read or file positioning - * operation on that stream, the operation may fail. - * - * A successful intervening call to a file positioning function (fseek, - * fsetpos, or rewind) discards any pushed-back characters for the stream. - * - * \return Upon successful completion, ungetc() returns the byte pushed - * back after conversion. Otherwise it returns EOF. - */ - int ungetc(int c); - //============================================================================ - private: - bool fillBuf(); - int fillGet(); - bool flushBuf(); - int flushPut(uint8_t c); - char* fmtSpace(uint8_t len); - int write(const void* buf, size_t count); - //---------------------------------------------------------------------------- - // S_SRD and S_WR are never simultaneously asserted - static const uint8_t S_SRD = 0x01; // OK to read - static const uint8_t S_SWR = 0x02; // OK to write - static const uint8_t S_SRW = 0x04; // open for reading & writing - static const uint8_t S_EOF = 0x10; // found EOF - static const uint8_t S_ERR = 0x20; // found error - //---------------------------------------------------------------------------- - uint8_t m_status; - uint8_t* m_p; - uint8_t m_r; - uint8_t m_w; - uint8_t m_buf[STREAM_BUF_SIZE]; -}; - -}; // namespace sdfat - -//------------------------------------------------------------------------------ -#endif // StdioStream_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/bufstream.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/bufstream.h deleted file mode 100644 index d5b0e9cd..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/bufstream.h +++ /dev/null @@ -1,178 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef bufstream_h -#define bufstream_h -/** - * \file - * \brief \ref ibufstream and \ref obufstream classes - */ -#include -#include "iostream.h" - -namespace sdfat { - -//============================================================================== -/** - * \class ibufstream - * \brief parse a char string - */ -class ibufstream : public istream { - public: - /** Constructor */ - ibufstream() : m_buf(0), m_len(0) {} - /** Constructor - * \param[in] str pointer to string to be parsed - * Warning: The string will not be copied so must stay in scope. - */ - explicit ibufstream(const char* str) { - init(str); - } - /** Initialize an ibufstream - * \param[in] str pointer to string to be parsed - * Warning: The string will not be copied so must stay in scope. - */ - void init(const char* str) { - m_buf = str; - m_len = strlen(m_buf); - m_pos = 0; - clear(); - } - - protected: - /// @cond SHOW_PROTECTED - int16_t getch() { - if (m_pos < m_len) { - return m_buf[m_pos++]; - } - setstate(eofbit); - return -1; - } - void getpos(FatPos_t *pos) { - pos->position = m_pos; - } - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - bool seekpos(pos_type pos) { - if (pos < m_len) { - m_pos = pos; - return true; - } - return false; - } - void setpos(FatPos_t *pos) { - m_pos = pos->position; - } - pos_type tellpos() { - return m_pos; - } - /// @endcond - private: - const char* m_buf; - size_t m_len; - size_t m_pos; -}; -//============================================================================== -/** - * \class obufstream - * \brief format a char string - */ -class obufstream : public ostream { - public: - /** constructor */ - obufstream() : m_in(0) {} - /** Constructor - * \param[in] buf buffer for formatted string - * \param[in] size buffer size - */ - obufstream(char *buf, size_t size) { - init(buf, size); - } - /** Initialize an obufstream - * \param[in] buf buffer for formatted string - * \param[in] size buffer size - */ - void init(char *buf, size_t size) { - m_buf = buf; - buf[0] = '\0'; - m_size = size; - m_in = 0; - } - /** \return a pointer to the buffer */ - char* buf() { - return m_buf; - } - /** \return the length of the formatted string */ - size_t length() { - return m_in; - } - - protected: - /// @cond SHOW_PROTECTED - void putch(char c) { - if (m_in >= (m_size - 1)) { - setstate(badbit); - return; - } - m_buf[m_in++] = c; - m_buf[m_in] = '\0'; - } - void putstr(const char *str) { - while (*str) { - putch(*str++); - } - } - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - bool seekpos(pos_type pos) { - if (pos > m_in) { - return false; - } - m_in = pos; - m_buf[m_in] = '\0'; - return true; - } - bool sync() { - return true; - } - - pos_type tellpos() { - return m_in; - } - /// @endcond - private: - char *m_buf; - size_t m_size; - size_t m_in; -}; - -}; // namespace sdfat - -#endif // bufstream_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/fstream.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/fstream.cpp deleted file mode 100644 index e8dd302b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/fstream.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "fstream.h" - -namespace sdfat { - -//============================================================================== -/// @cond SHOW_PROTECTED -int16_t FatStreamBase::getch() { - uint8_t c; - int8_t s = read(&c, 1); - if (s != 1) { - if (s < 0) { - setstate(badbit); - } else { - setstate(eofbit); - } - return -1; - } - if (c != '\r' || (getmode() & ios::binary)) { - return c; - } - s = read(&c, 1); - if (s == 1 && c == '\n') { - return c; - } - if (s == 1) { - seekCur(-1); - } - return '\r'; -} -//------------------------------------------------------------------------------ -void FatStreamBase::open(const char* path, ios::openmode mode) { - oflag_t oflag; - switch (mode & (app | in | out | trunc)) { - case app | in: - case app | in | out: - oflag = O_RDWR | O_APPEND | O_CREAT; - break; - - case app: - case app | out: - oflag = O_WRONLY | O_APPEND | O_CREAT; - break; - - case in: - oflag = O_RDONLY; - break; - - case in | out: - oflag = O_RDWR; - break; - - case in | out | trunc: - oflag = O_RDWR | O_TRUNC | O_CREAT; - break; - - case out: - case out | trunc: - oflag = O_WRONLY | O_TRUNC | O_CREAT; - break; - - default: - goto fail; - } - if (mode & ios::ate) { - oflag |= O_AT_END; - } - if (!FatFile::open(path, oflag)) { - goto fail; - } - setmode(mode); - clear(); - return; - -fail: - FatFile::close(); - setstate(failbit); - return; -} -//------------------------------------------------------------------------------ -void FatStreamBase::putch(char c) { - if (c == '\n' && !(getmode() & ios::binary)) { - write('\r'); - } - write(c); - if (getWriteError()) { - setstate(badbit); - } -} -//------------------------------------------------------------------------------ -void FatStreamBase::putstr(const char* str) { - size_t n = 0; - while (1) { - char c = str[n]; - if (c == '\0' || (c == '\n' && !(getmode() & ios::binary))) { - if (n > 0) { - write(str, n); - } - if (c == '\0') { - break; - } - write('\r'); - str += n; - n = 0; - } - n++; - } - if (getWriteError()) { - setstate(badbit); - } -} -//------------------------------------------------------------------------------ -/** Internal do not use - * \param[in] off - * \param[in] way - */ -bool FatStreamBase::seekoff(off_type off, seekdir way) { - pos_type pos; - switch (way) { - case beg: - pos = off; - break; - - case cur: - pos = curPosition() + off; - break; - - case end: - pos = fileSize() + off; - break; - - default: - return false; - } - return seekpos(pos); -} -//------------------------------------------------------------------------------ -/** Internal do not use - * \param[in] pos - */ -bool FatStreamBase::seekpos(pos_type pos) { - return seekSet(pos); -} -//------------------------------------------------------------------------------ -int FatStreamBase::write(const void* buf, size_t n) { - return FatFile::write(buf, n); -} -//------------------------------------------------------------------------------ -void FatStreamBase::write(char c) { - write(&c, 1); -} -/// @endcond - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/fstream.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/fstream.h deleted file mode 100644 index b54dfd33..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/fstream.h +++ /dev/null @@ -1,326 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef fstream_h -#define fstream_h -/** - * \file - * \brief \ref fstream, \ref ifstream, and \ref ofstream classes - */ -#include "FatFile.h" -#include "iostream.h" - -namespace sdfat { - -//============================================================================== -/** - * \class FatStreamBase - * \brief Base class for C++ style streams - */ -class FatStreamBase : protected FatFile, virtual public ios { - protected: - /// @cond SHOW_PROTECTED - int16_t getch(); - void putch(char c); - void putstr(const char *str); - void open(const char* path, ios::openmode mode); - /** Internal do not use - * \return mode - */ - ios::openmode getmode() { - return m_mode; - } - /** Internal do not use - * \param[in] mode - */ - void setmode(ios::openmode mode) { - m_mode = mode; - } - bool seekoff(off_type off, seekdir way); - bool seekpos(pos_type pos); - int write(const void* buf, size_t n); - void write(char c); - /// @endcond - private: - ios::openmode m_mode; -}; -//============================================================================== -/** - * \class fstream - * \brief file input/output stream. - */ -class fstream : public iostream, FatStreamBase { - public: - using iostream::peek; - fstream() {} - /** Constructor with open - * - * \param[in] path path to open - * \param[in] mode open mode - */ - explicit fstream(const char* path, openmode mode = in | out) { - open(path, mode); - } -#if DESTRUCTOR_CLOSES_FILE - ~fstream() {} -#endif // DESTRUCTOR_CLOSES_FILE - /** Clear state and writeError - * \param[in] state new state for stream - */ - void clear(iostate state = goodbit) { - ios::clear(state); - FatFile::clearWriteError(); - } - /** Close a file and force cached data and directory information - * to be written to the storage device. - */ - void close() { - FatFile::close(); - } - /** Open a fstream - * \param[in] path file to open - * \param[in] mode open mode - * - * Valid open modes are (at end, ios::ate, and/or ios::binary may be added): - * - * ios::in - Open file for reading. - * - * ios::out or ios::out | ios::trunc - Truncate to 0 length, if existent, - * or create a file for writing only. - * - * ios::app or ios::out | ios::app - Append; open or create file for - * writing at end-of-file. - * - * ios::in | ios::out - Open file for update (reading and writing). - * - * ios::in | ios::out | ios::trunc - Truncate to zero length, if existent, - * or create file for update. - * - * ios::in | ios::app or ios::in | ios::out | ios::app - Append; open or - * create text file for update, writing at end of file. - */ - void open(const char* path, openmode mode = in | out) { - FatStreamBase::open(path, mode); - } - /** \return True if stream is open else false. */ - bool is_open() { - return FatFile::isOpen(); - } - - protected: - /// @cond SHOW_PROTECTED - /** Internal - do not use - * \return - */ - int16_t getch() { - return FatStreamBase::getch(); - } - /** Internal - do not use - * \param[out] pos - */ - void getpos(FatPos_t* pos) { - FatFile::getpos(pos); - } - /** Internal - do not use - * \param[in] c - */ - void putch(char c) { - FatStreamBase::putch(c); - } - /** Internal - do not use - * \param[in] str - */ - void putstr(const char *str) { - FatStreamBase::putstr(str); - } - /** Internal - do not use - * \param[in] pos - */ - bool seekoff(off_type off, seekdir way) { - return FatStreamBase::seekoff(off, way); - } - bool seekpos(pos_type pos) { - return FatStreamBase::seekpos(pos); - } - void setpos(FatPos_t* pos) { - FatFile::setpos(pos); - } - bool sync() { - return FatStreamBase::sync(); - } - pos_type tellpos() { - return FatStreamBase::curPosition(); - } - /// @endcond -}; -//============================================================================== -/** - * \class ifstream - * \brief file input stream. - */ -class ifstream : public istream, FatStreamBase { - public: - using istream::peek; - ifstream() {} - /** Constructor with open - * \param[in] path file to open - * \param[in] mode open mode - */ - explicit ifstream(const char* path, openmode mode = in) { - open(path, mode); - } -#if DESTRUCTOR_CLOSES_FILE - ~ifstream() {} -#endif // DESTRUCTOR_CLOSES_FILE - /** Close a file and force cached data and directory information - * to be written to the storage device. - */ - void close() { - FatFile::close(); - } - /** \return True if stream is open else false. */ - bool is_open() { - return FatFile::isOpen(); - } - /** Open an ifstream - * \param[in] path file to open - * \param[in] mode open mode - * - * \a mode See fstream::open() for valid modes. - */ - void open(const char* path, openmode mode = in) { - FatStreamBase::open(path, mode | in); - } - - protected: - /// @cond SHOW_PROTECTED - /** Internal - do not use - * \return - */ - int16_t getch() { - return FatStreamBase::getch(); - } - /** Internal - do not use - * \param[out] pos - */ - void getpos(FatPos_t* pos) { - FatFile::getpos(pos); - } - /** Internal - do not use - * \param[in] pos - */ - bool seekoff(off_type off, seekdir way) { - return FatStreamBase::seekoff(off, way); - } - bool seekpos(pos_type pos) { - return FatStreamBase::seekpos(pos); - } - void setpos(FatPos_t* pos) { - FatFile::setpos(pos); - } - pos_type tellpos() { - return FatStreamBase::curPosition(); - } - /// @endcond -}; -//============================================================================== -/** - * \class ofstream - * \brief file output stream. - */ -class ofstream : public ostream, FatStreamBase { - public: - ofstream() {} - /** Constructor with open - * \param[in] path file to open - * \param[in] mode open mode - */ - explicit ofstream(const char* path, ios::openmode mode = out) { - open(path, mode); - } -#if DESTRUCTOR_CLOSES_FILE - ~ofstream() {} -#endif // DESTRUCTOR_CLOSES_FILE - /** Clear state and writeError - * \param[in] state new state for stream - */ - void clear(iostate state = goodbit) { - ios::clear(state); - FatFile::clearWriteError(); - } - /** Close a file and force cached data and directory information - * to be written to the storage device. - */ - void close() { - FatFile::close(); - } - /** Open an ofstream - * \param[in] path file to open - * \param[in] mode open mode - * - * \a mode See fstream::open() for valid modes. - */ - void open(const char* path, openmode mode = out) { - FatStreamBase::open(path, mode | out); - } - /** \return True if stream is open else false. */ - bool is_open() { - return FatFile::isOpen(); - } - - protected: - /// @cond SHOW_PROTECTED - /** - * Internal do not use - * \param[in] c - */ - void putch(char c) { - FatStreamBase::putch(c); - } - void putstr(const char* str) { - FatStreamBase::putstr(str); - } - bool seekoff(off_type off, seekdir way) { - return FatStreamBase::seekoff(off, way); - } - bool seekpos(pos_type pos) { - return FatStreamBase::seekpos(pos); - } - /** - * Internal do not use - * \param[in] b - */ - bool sync() { - return FatStreamBase::sync(); - } - pos_type tellpos() { - return FatStreamBase::curPosition(); - } - /// @endcond -}; - -}; // namespace sdfat - -//------------------------------------------------------------------------------ -#endif // fstream_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ios.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ios.h deleted file mode 100644 index 29d6fa34..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ios.h +++ /dev/null @@ -1,429 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef ios_h -#define ios_h -#include "FatFile.h" - -namespace sdfat { - -/** - * \file - * \brief \ref ios_base and \ref ios classes - */ -//============================================================================== -/** - * \class ios_base - * \brief Base class for all streams - */ -class ios_base { - public: - /** typedef for iostate bitmask */ - typedef unsigned char iostate; - // State flags. - /** iostate for no flags */ - static const iostate goodbit = 0x00; - /** iostate bad bit for a nonrecoverable error. */ - static const iostate badbit = 0X01; - /** iostate bit for end of file reached */ - static const iostate eofbit = 0x02; - /** iostate fail bit for nonfatal error */ - static const iostate failbit = 0X04; - /** - * unsigned size that can represent maximum file size. - * (violates spec - should be signed) - */ - typedef uint32_t streamsize; - /** type for absolute seek position */ - typedef uint32_t pos_type; - /** type for relative seek offset */ - typedef int32_t off_type; - - /** enumerated type for the direction of relative seeks */ - enum seekdir { - /** seek relative to the beginning of the stream */ - beg, - /** seek relative to the current stream position */ - cur, - /** seek relative to the end of the stream */ - end - }; - /** type for format flags */ - typedef unsigned int fmtflags; - /** left adjust fields */ - static const fmtflags left = 0x0001; - /** right adjust fields */ - static const fmtflags right = 0x0002; - /** fill between sign/base prefix and number */ - static const fmtflags internal = 0x0004; - /** base 10 flag*/ - static const fmtflags dec = 0x0008; - /** base 16 flag */ - static const fmtflags hex = 0x0010; - /** base 8 flag */ - static const fmtflags oct = 0x0020; - // static const fmtflags fixed = 0x0040; - // static const fmtflags scientific = 0x0080; - /** use strings true/false for bool */ - static const fmtflags boolalpha = 0x0100; - /** use prefix 0X for hex and 0 for oct */ - static const fmtflags showbase = 0x0200; - /** always show '.' for floating numbers */ - static const fmtflags showpoint = 0x0400; - /** show + sign for nonnegative numbers */ - static const fmtflags showpos = 0x0800; - /** skip initial white space */ - static const fmtflags skipws = 0x1000; - // static const fmtflags unitbuf = 0x2000; - /** use uppercase letters in number representations */ - static const fmtflags uppercase = 0x4000; - /** mask for adjustfield */ - static const fmtflags adjustfield = left | right | internal; - /** mask for basefield */ - static const fmtflags basefield = dec | hex | oct; - // static const fmtflags floatfield = scientific | fixed; - //---------------------------------------------------------------------------- - /** typedef for iostream open mode */ - typedef uint8_t openmode; - - // Openmode flags. - /** seek to end before each write */ - static const openmode app = 0X4; - /** open and seek to end immediately after opening */ - static const openmode ate = 0X8; - /** perform input and output in binary mode (as opposed to text mode) */ - static const openmode binary = 0X10; - /** open for input */ - static const openmode in = 0X20; - /** open for output */ - static const openmode out = 0X40; - /** truncate an existing stream when opening */ - static const openmode trunc = 0X80; - //---------------------------------------------------------------------------- - ios_base() : m_fill(' '), m_fmtflags(dec | right | skipws) - , m_precision(2), m_width(0) {} - /** \return fill character */ - char fill() { - return m_fill; - } - /** Set fill character - * \param[in] c new fill character - * \return old fill character - */ - char fill(char c) { - char r = m_fill; - m_fill = c; - return r; - } - /** \return format flags */ - fmtflags flags() const { - return m_fmtflags; - } - /** set format flags - * \param[in] fl new flag - * \return old flags - */ - fmtflags flags(fmtflags fl) { - fmtflags tmp = m_fmtflags; - m_fmtflags = fl; - return tmp; - } - /** \return precision */ - int precision() const { - return m_precision; - } - /** set precision - * \param[in] n new precision - * \return old precision - */ - int precision(unsigned int n) { - int r = m_precision; - m_precision = n; - return r; - } - /** set format flags - * \param[in] fl new flags to be or'ed in - * \return old flags - */ - fmtflags setf(fmtflags fl) { - fmtflags r = m_fmtflags; - m_fmtflags |= fl; - return r; - } - /** modify format flags - * \param[in] mask flags to be removed - * \param[in] fl flags to be set after mask bits have been cleared - * \return old flags - */ - fmtflags setf(fmtflags fl, fmtflags mask) { - fmtflags r = m_fmtflags; - m_fmtflags &= ~mask; - m_fmtflags |= fl; - return r; - } - /** clear format flags - * \param[in] fl flags to be cleared - * \return old flags - */ - void unsetf(fmtflags fl) { - m_fmtflags &= ~fl; - } - /** \return width */ - unsigned width() { - return m_width; - } - /** set width - * \param[in] n new width - * \return old width - */ - unsigned width(unsigned n) { - unsigned r = m_width; - m_width = n; - return r; - } - - protected: - /** \return current number base */ - uint8_t flagsToBase() { - uint8_t f = flags() & basefield; - return f == oct ? 8 : f != hex ? 10 : 16; - } - - private: - char m_fill; - fmtflags m_fmtflags; - unsigned char m_precision; - unsigned int m_width; -}; -//------------------------------------------------------------------------------ -/** function for boolalpha manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& boolalpha(ios_base& str) { - str.setf(ios_base::boolalpha); - return str; -} -/** function for dec manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& dec(ios_base& str) { - str.setf(ios_base::dec, ios_base::basefield); - return str; -} -/** function for hex manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& hex(ios_base& str) { - str.setf(ios_base::hex, ios_base::basefield); - return str; -} -/** function for internal manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& internal(ios_base& str) { - str.setf(ios_base::internal, ios_base::adjustfield); - return str; -} -/** function for left manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& left(ios_base& str) { - str.setf(ios_base::left, ios_base::adjustfield); - return str; -} -/** function for noboolalpha manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noboolalpha(ios_base& str) { - str.unsetf(ios_base::boolalpha); - return str; -} -/** function for noshowbase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noshowbase(ios_base& str) { - str.unsetf(ios_base::showbase); - return str; -} -/** function for noshowpoint manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noshowpoint(ios_base& str) { - str.unsetf(ios_base::showpoint); - return str; -} -/** function for noshowpos manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noshowpos(ios_base& str) { - str.unsetf(ios_base::showpos); - return str; -} -/** function for noskipws manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noskipws(ios_base& str) { - str.unsetf(ios_base::skipws); - return str; -} -/** function for nouppercase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& nouppercase(ios_base& str) { - str.unsetf(ios_base::uppercase); - return str; -} -/** function for oct manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& oct(ios_base& str) { - str.setf(ios_base::oct, ios_base::basefield); - return str; -} -/** function for right manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& right(ios_base& str) { - str.setf(ios_base::right, ios_base::adjustfield); - return str; -} -/** function for showbase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& showbase(ios_base& str) { - str.setf(ios_base::showbase); - return str; -} -/** function for showpos manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& showpos(ios_base& str) { - str.setf(ios_base::showpos); - return str; -} -/** function for showpoint manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& showpoint(ios_base& str) { - str.setf(ios_base::showpoint); - return str; -} -/** function for skipws manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& skipws(ios_base& str) { - str.setf(ios_base::skipws); - return str; -} -/** function for uppercase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& uppercase(ios_base& str) { - str.setf(ios_base::uppercase); - return str; -} -//============================================================================== -/** - * \class ios - * \brief Error and state information for all streams - */ -class ios : public ios_base { - public: - /** Create ios with no error flags set */ - ios() : m_iostate(0) {} - - /** \return null pointer if fail() is true. */ - operator const void*() const { - return !fail() ? reinterpret_cast(this) : 0; - } - /** \return true if fail() else false. */ - bool operator!() const { - return fail(); - } - /** \return The iostate flags for this file. */ - iostate rdstate() const { - return m_iostate; - } - /** \return True if no iostate flags are set else false. */ - bool good() const { - return m_iostate == goodbit; - } - /** \return true if end of file has been reached else false. - * - * Warning: An empty file returns false before the first read. - * - * Moral: eof() is only useful in combination with fail(), to find out - * whether EOF was the cause for failure - */ - bool eof() const { - return m_iostate & eofbit; - } - /** \return true if any iostate bit other than eof are set else false. */ - bool fail() const { - return m_iostate & (failbit | badbit); - } - /** \return true if bad bit is set else false. */ - bool bad() const { - return m_iostate & badbit; - } - /** Clear iostate bits. - * - * \param[in] state The flags you want to set after clearing all flags. - **/ - void clear(iostate state = goodbit) { - m_iostate = state; - } - /** Set iostate bits. - * - * \param[in] state Bitts to set. - **/ - void setstate(iostate state) { - m_iostate |= state; - } - - private: - iostate m_iostate; -}; - -}; // namespace sdfat - -#endif // ios_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/iostream.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/iostream.h deleted file mode 100644 index a2b230bd..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/iostream.h +++ /dev/null @@ -1,164 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef iostream_h -#define iostream_h -/** - * \file - * \brief \ref iostream class - */ -#include "istream.h" -#include "ostream.h" - -namespace sdfat { - -/** Skip white space - * \param[in] is the Stream - * \return The stream - */ -inline istream& ws(istream& is) { - is.skipWhite(); - return is; -} -/** insert endline - * \param[in] os The Stream - * \return The stream - */ -inline ostream& endl(ostream& os) { - os.put('\n'); -#if ENDL_CALLS_FLUSH - os.flush(); -#endif // ENDL_CALLS_FLUSH - return os; -} -/** flush manipulator - * \param[in] os The stream - * \return The stream - */ -inline ostream& flush(ostream& os) { - os.flush(); - return os; -} -/** - * \struct setfill - * \brief type for setfill manipulator - */ -struct setfill { - /** fill character */ - char c; - /** constructor - * - * \param[in] arg new fill character - */ - explicit setfill(char arg) : c(arg) {} -}; -/** setfill manipulator - * \param[in] os the stream - * \param[in] arg set setfill object - * \return the stream - */ -inline ostream &operator<< (ostream &os, const setfill &arg) { - os.fill(arg.c); - return os; -} -/** setfill manipulator - * \param[in] obj the stream - * \param[in] arg set setfill object - * \return the stream - */ -inline istream &operator>>(istream &obj, const setfill &arg) { - obj.fill(arg.c); - return obj; -} -//------------------------------------------------------------------------------ -/** \struct setprecision - * \brief type for setprecision manipulator - */ -struct setprecision { - /** precision */ - unsigned int p; - /** constructor - * \param[in] arg new precision - */ - explicit setprecision(unsigned int arg) : p(arg) {} -}; -/** setprecision manipulator - * \param[in] os the stream - * \param[in] arg set setprecision object - * \return the stream - */ -inline ostream &operator<< (ostream &os, const setprecision &arg) { - os.precision(arg.p); - return os; -} -/** setprecision manipulator - * \param[in] is the stream - * \param[in] arg set setprecision object - * \return the stream - */ -inline istream &operator>>(istream &is, const setprecision &arg) { - is.precision(arg.p); - return is; -} -//------------------------------------------------------------------------------ -/** \struct setw - * \brief type for setw manipulator - */ -struct setw { - /** width */ - unsigned w; - /** constructor - * \param[in] arg new width - */ - explicit setw(unsigned arg) : w(arg) {} -}; -/** setw manipulator - * \param[in] os the stream - * \param[in] arg set setw object - * \return the stream - */ -inline ostream &operator<< (ostream &os, const setw &arg) { - os.width(arg.w); - return os; -} -/** setw manipulator - * \param[in] is the stream - * \param[in] arg set setw object - * \return the stream - */ -inline istream &operator>>(istream &is, const setw &arg) { - is.width(arg.w); - return is; -} -//============================================================================== -/** - * \class iostream - * \brief Input/Output stream - */ -class iostream : public istream, public ostream { -}; - -}; // namespace sdfat - -#endif // iostream_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/istream.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/istream.cpp deleted file mode 100644 index ea65c89d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/istream.cpp +++ /dev/null @@ -1,401 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -// #include -#include -#include -#include "istream.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -int istream::get() { - int c; - m_gcount = 0; - c = getch(); - if (c < 0) { - setstate(failbit); - } else { - m_gcount = 1; - } - return c; -} -//------------------------------------------------------------------------------ -istream& istream::get(char& c) { - int tmp = get(); - if (tmp >= 0) { - c = tmp; - } - return *this; -} -//------------------------------------------------------------------------------ -istream& istream::get(char *str, streamsize n, char delim) { - int c; - FatPos_t pos; - m_gcount = 0; - while ((m_gcount + 1) < n) { - c = getch(&pos); - if (c < 0) { - break; - } - if (c == delim) { - setpos(&pos); - break; - } - str[m_gcount++] = c; - } - if (n > 0) { - str[m_gcount] = '\0'; - } - if (m_gcount == 0) { - setstate(failbit); - } - return *this; -} -//------------------------------------------------------------------------------ -void istream::getBool(bool *b) { - if ((flags() & boolalpha) == 0) { - getNumber(b); - return; - } -#ifdef __AVR__ - PGM_P truePtr = PSTR("true"); - PGM_P falsePtr = PSTR("false"); -#else // __AVR__ - const char* truePtr = "true"; - const char* falsePtr = "false"; -#endif // __AVR - const uint8_t true_len = 4; - const uint8_t false_len = 5; - bool trueOk = true; - bool falseOk = true; - uint8_t i = 0; - int c = readSkip(); - while (1) { -#ifdef __AVR__ - falseOk = falseOk && c == pgm_read_byte(falsePtr + i); - trueOk = trueOk && c == pgm_read_byte(truePtr + i); -#else // __AVR__ - falseOk = falseOk && c == falsePtr[i]; - trueOk = trueOk && c == truePtr[i]; -#endif // __AVR__ - if (trueOk == false && falseOk == false) { - break; - } - i++; - if (trueOk && i == true_len) { - *b = true; - return; - } - if (falseOk && i == false_len) { - *b = false; - return; - } - c = getch(); - } - setstate(failbit); -} -//------------------------------------------------------------------------------ -void istream::getChar(char* ch) { - int16_t c = readSkip(); - if (c < 0) { - setstate(failbit); - } else { - *ch = c; - } -} -//------------------------------------------------------------------------------ -// -// http://www.exploringbinary.com/category/numbers-in-computers/ -// -int16_t const EXP_LIMIT = 100; -static const uint32_t uint32_max = (uint32_t)-1; -bool istream::getDouble(double* value) { - bool got_digit = false; - bool got_dot = false; - bool neg; - int16_t c; - bool expNeg = false; - int16_t exp = 0; - int16_t fracExp = 0; - uint32_t frac = 0; - FatPos_t endPos; - double pow10; - double v; - - getpos(&endPos); - c = readSkip(); - neg = c == '-'; - if (c == '-' || c == '+') { - c = getch(); - } - while (1) { - if (isdigit(c)) { - got_digit = true; - if (frac < uint32_max/10) { - frac = frac * 10 + (c - '0'); - if (got_dot) { - fracExp--; - } - } else { - if (!got_dot) { - fracExp++; - } - } - } else if (!got_dot && c == '.') { - got_dot = true; - } else { - break; - } - if (fracExp < -EXP_LIMIT || fracExp > EXP_LIMIT) { - goto fail; - } - c = getch(&endPos); - } - if (!got_digit) { - goto fail; - } - if (c == 'e' || c == 'E') { - c = getch(); - expNeg = c == '-'; - if (c == '-' || c == '+') { - c = getch(); - } - while (isdigit(c)) { - if (exp > EXP_LIMIT) { - goto fail; - } - exp = exp * 10 + (c - '0'); - c = getch(&endPos); - } - } - v = static_cast(frac); - exp = expNeg ? fracExp - exp : fracExp + exp; - expNeg = exp < 0; - if (expNeg) { - exp = -exp; - } - pow10 = 10.0; - while (exp) { - if (exp & 1) { - if (expNeg) { - // check for underflow - if (v < FLT_MIN * pow10 && frac != 0) { - goto fail; - } - v /= pow10; - } else { - // check for overflow - if (v > FLT_MAX / pow10) { - goto fail; - } - v *= pow10; - } - } - pow10 *= pow10; - exp >>= 1; - } - setpos(&endPos); - *value = neg ? -v : v; - return true; - -fail: - // error restore position to last good place - setpos(&endPos); - setstate(failbit); - return false; -} -//------------------------------------------------------------------------------ - -istream& istream::getline(char *str, streamsize n, char delim) { - FatPos_t pos; - int c; - m_gcount = 0; - if (n > 0) { - str[0] = '\0'; - } - while (1) { - c = getch(&pos); - if (c < 0) { - break; - } - if (c == delim) { - m_gcount++; - break; - } - if ((m_gcount + 1) >= n) { - setpos(&pos); - setstate(failbit); - break; - } - str[m_gcount++] = c; - str[m_gcount] = '\0'; - } - if (m_gcount == 0) { - setstate(failbit); - } - return *this; -} -//------------------------------------------------------------------------------ -bool istream::getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num) { - int16_t c; - int8_t any = 0; - int8_t have_zero = 0; - uint8_t neg; - uint32_t val = 0; - uint32_t cutoff; - uint8_t cutlim; - FatPos_t endPos; - uint8_t f = flags() & basefield; - uint8_t base = f == oct ? 8 : f != hex ? 10 : 16; - getpos(&endPos); - c = readSkip(); - - neg = c == '-' ? 1 : 0; - if (c == '-' || c == '+') { - c = getch(); - } - - if (base == 16 && c == '0') { // TESTSUITE - c = getch(&endPos); - if (c == 'X' || c == 'x') { - c = getch(); - // remember zero in case no hex digits follow x/X - have_zero = 1; - } else { - any = 1; - } - } - // set values for overflow test - cutoff = neg ? negMax : posMax; - cutlim = cutoff % base; - cutoff /= base; - - while (1) { - if (isdigit(c)) { - c -= '0'; - } else if (isalpha(c)) { - c -= isupper(c) ? 'A' - 10 : 'a' - 10; - } else { - break; - } - if (c >= base) { - break; - } - if (val > cutoff || (val == cutoff && c > cutlim)) { - // indicate overflow error - any = -1; - break; - } - val = val * base + c; - c = getch(&endPos); - any = 1; - } - setpos(&endPos); - if (any > 0 || (have_zero && any >= 0)) { - *num = neg ? -val : val; - return true; - } - setstate(failbit); - return false; -} -//------------------------------------------------------------------------------ -void istream::getStr(char *str) { - FatPos_t pos; - uint16_t i = 0; - uint16_t m = width() ? width() - 1 : 0XFFFE; - if (m != 0) { - getpos(&pos); - int c = readSkip(); - - while (i < m) { - if (c < 0) { - break; - } - if (isspace(c)) { - setpos(&pos); - break; - } - str[i++] = c; - c = getch(&pos); - } - } - str[i] = '\0'; - if (i == 0) { - setstate(failbit); - } - width(0); -} -//------------------------------------------------------------------------------ -istream& istream::ignore(streamsize n, int delim) { - int c; - m_gcount = 0; - while (m_gcount < n) { - c = getch(); - if (c < 0) { - break; - } - m_gcount++; - if (c == delim) { - break; - } - } - return *this; -} -//------------------------------------------------------------------------------ -int istream::peek() { - int16_t c; - FatPos_t pos; - m_gcount = 0; - getpos(&pos); - c = getch(); - if (c < 0) { - if (!bad()) { - setstate(eofbit); - } - } else { - setpos(&pos); - } - return c; -} -//------------------------------------------------------------------------------ -int16_t istream::readSkip() { - int16_t c; - do { - c = getch(); - } while (isspace(c) && (flags() & skipws)); - return c; -} -//------------------------------------------------------------------------------ -/** used to implement ws() */ -void istream::skipWhite() { - int c; - FatPos_t pos; - do { - c = getch(&pos); - } while (isspace(c)); - setpos(&pos); -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/istream.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/istream.h deleted file mode 100644 index 34faa02d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/istream.h +++ /dev/null @@ -1,388 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef istream_h -#define istream_h -/** - * \file - * \brief \ref istream class - */ -#include "ios.h" - -namespace sdfat { - -/** - * \class istream - * \brief Input Stream - */ -class istream : public virtual ios { - public: - istream() {} - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - istream& operator>>(istream& (*pf)(istream& str)) { - return pf(*this); - } - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - istream& operator>>(ios_base& (*pf)(ios_base& str)) { - pf(*this); - return *this; - } - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - istream& operator>>(ios& (*pf)(ios& str)) { - pf(*this); - return *this; - } - /** - * Extract a character string - * \param[out] str location to store the string. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(char *str) { - getStr(str); - return *this; - } - /** - * Extract a character - * \param[out] ch location to store the character. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(char& ch) { - getChar(&ch); - return *this; - } - /** - * Extract a character string - * \param[out] str location to store the string. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(signed char *str) { - getStr(reinterpret_cast(str)); - return *this; - } - /** - * Extract a character - * \param[out] ch location to store the character. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(signed char& ch) { - getChar(reinterpret_cast(&ch)); - return *this; - } - /** - * Extract a character string - * \param[out] str location to store the string. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(unsigned char *str) { - getStr(reinterpret_cast(str)); - return *this; - } - /** - * Extract a character - * \param[out] ch location to store the character. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(unsigned char& ch) { - getChar(reinterpret_cast(&ch)); - return *this; - } - /** - * Extract a value of type bool. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(bool& arg) { - getBool(&arg); - return *this; - } - /** - * Extract a value of type short. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(short& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type unsigned short. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(unsigned short& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type int. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(int& arg) { - getNumber(&arg); - return *this; - } - /** - * Extract a value of type unsigned int. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(unsigned int& arg) { - getNumber(&arg); - return *this; - } - /** - * Extract a value of type long. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(long& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type unsigned long. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(unsigned long& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type double. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>> (double& arg) { - getDouble(&arg); - return *this; - } - /** - * Extract a value of type float. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>> (float& arg) { - double v; - getDouble(&v); - arg = v; - return *this; - } - /** - * Extract a value of type void*. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>> (void*& arg) { - uint32_t val; - getNumber(&val); - arg = reinterpret_cast(val); - return *this; - } - /** - * \return The number of characters extracted by the last unformatted - * input function. - */ - streamsize gcount() const { - return m_gcount; - } - /** - * Extract a character if one is available. - * - * \return The character or -1 if a failure occurs. A failure is indicated - * by the stream state. - */ - int get(); - /** - * Extract a character if one is available. - * - * \param[out] ch location to receive the extracted character. - * - * \return always returns *this. A failure is indicated by the stream state. - */ - istream& get(char& ch); - /** - * Extract characters. - * - * \param[out] str Location to receive extracted characters. - * \param[in] n Size of str. - * \param[in] delim Delimiter - * - * Characters are extracted until extraction fails, n is less than 1, - * n-1 characters are extracted, or the next character equals - * \a delim (delim is not extracted). If no characters are extracted - * failbit is set. If end-of-file occurs the eofbit is set. - * - * \return always returns *this. A failure is indicated by the stream state. - */ - istream& get(char *str, streamsize n, char delim = '\n'); - /** - * Extract characters - * - * \param[out] str Location to receive extracted characters. - * \param[in] n Size of str. - * \param[in] delim Delimiter - * - * Characters are extracted until extraction fails, - * the next character equals \a delim (delim is extracted), or n-1 - * characters are extracted. - * - * The failbit is set if no characters are extracted or n-1 characters - * are extracted. If end-of-file occurs the eofbit is set. - * - * \return always returns *this. A failure is indicated by the stream state. - */ - istream& getline(char *str, streamsize n, char delim = '\n'); - /** - * Extract characters and discard them. - * - * \param[in] n maximum number of characters to ignore. - * \param[in] delim Delimiter. - * - * Characters are extracted until extraction fails, \a n characters - * are extracted, or the next input character equals \a delim - * (the delimiter is extracted). If end-of-file occurs the eofbit is set. - * - * Failures are indicated by the state of the stream. - * - * \return *this - * - */ - istream& ignore(streamsize n = 1, int delim = -1); - /** - * Return the next available character without consuming it. - * - * \return The character if the stream state is good else -1; - * - */ - int peek(); -// istream& read(char *str, streamsize count); -// streamsize readsome(char *str, streamsize count); - /** - * \return the stream position - */ - pos_type tellg() { - return tellpos(); - } - /** - * Set the stream position - * \param[in] pos The absolute position in which to move the read pointer. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& seekg(pos_type pos) { - if (!seekpos(pos)) { - setstate(failbit); - } - return *this; - } - /** - * Set the stream position. - * - * \param[in] off An offset to move the read pointer relative to way. - * \a off is a signed 32-bit int so the offset is limited to +- 2GB. - * \param[in] way One of ios::beg, ios::cur, or ios::end. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& seekg(off_type off, seekdir way) { - if (!seekoff(off, way)) { - setstate(failbit); - } - return *this; - } - void skipWhite(); - - protected: - /// @cond SHOW_PROTECTED - /** - * Internal - do not use - * \return - */ - virtual int16_t getch() = 0; - /** - * Internal - do not use - * \param[out] pos - * \return - */ - int16_t getch(FatPos_t* pos) { - getpos(pos); - return getch(); - } - /** - * Internal - do not use - * \param[out] pos - */ - virtual void getpos(FatPos_t* pos) = 0; - /** - * Internal - do not use - * \param[in] pos - */ - virtual bool seekoff(off_type off, seekdir way) = 0; - virtual bool seekpos(pos_type pos) = 0; - virtual void setpos(FatPos_t* pos) = 0; - virtual pos_type tellpos() = 0; - - /// @endcond - private: - void getBool(bool *b); - void getChar(char* ch); - bool getDouble(double* value); - template void getNumber(T* value); - bool getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num); - void getStr(char *str); - int16_t readSkip(); - - size_t m_gcount; -}; -//------------------------------------------------------------------------------ -template -void istream::getNumber(T* value) { - uint32_t tmp; - if ((T)-1 < 0) { - // number is signed, max positive value - uint32_t const m = ((uint32_t)-1) >> (33 - sizeof(T) * 8); - // max absolute value of negative number is m + 1. - if (getNumber(m, m + 1, &tmp)) { - *value = (T)tmp; - } - } else { - // max unsigned value for T - uint32_t const m = (T)-1; - if (getNumber(m, m, &tmp)) { - *value = (T)tmp; - } - } -} - -}; // namespace sdfat -#endif // istream_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ostream.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ostream.cpp deleted file mode 100644 index b32fe603..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ostream.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -#include "ostream.h" -#ifndef PSTR -#define PSTR(x) x -#endif - -namespace sdfat { - -//------------------------------------------------------------------------------ -void ostream::do_fill(unsigned len) { - for (; len < width(); len++) { - putch(fill()); - } - width(0); -} -//------------------------------------------------------------------------------ -void ostream::fill_not_left(unsigned len) { - if ((flags() & adjustfield) != left) { - do_fill(len); - } -} -//------------------------------------------------------------------------------ -char* ostream::fmtNum(uint32_t n, char *ptr, uint8_t base) { - char a = flags() & uppercase ? 'A' - 10 : 'a' - 10; - do { - uint32_t m = n; - n /= base; - char c = m - base * n; - *--ptr = c < 10 ? c + '0' : c + a; - } while (n); - return ptr; -} -//------------------------------------------------------------------------------ -void ostream::putBool(bool b) { - if (flags() & boolalpha) { - if (b) { - putPgm(PSTR("true")); - } else { - putPgm(PSTR("false")); - } - } else { - putChar(b ? '1' : '0'); - } -} -//------------------------------------------------------------------------------ -void ostream::putChar(char c) { - fill_not_left(1); - putch(c); - do_fill(1); -} -//------------------------------------------------------------------------------ -void ostream::putDouble(double n) { - uint8_t nd = precision(); - double round = 0.5; - char sign; - char buf[13]; // room for sign, 10 digits, '.', and zero byte - char *end = buf + sizeof(buf) - 1; - char *str = end; - // terminate string - *end = '\0'; - - // get sign and make nonnegative - if (n < 0.0) { - sign = '-'; - n = -n; - } else { - sign = flags() & showpos ? '+' : '\0'; - } - // check for larger than uint32_t - if (n > 4.0E9) { - putPgm(PSTR("BIG FLT")); - return; - } - // round up and separate int and fraction parts - for (uint8_t i = 0; i < nd; ++i) { - round *= 0.1; - } - n += round; - uint32_t intPart = n; - double fractionPart = n - intPart; - - // format intPart and decimal point - if (nd || (flags() & showpoint)) { - *--str = '.'; - } - str = fmtNum(intPart, str, 10); - - // calculate length for fill - uint8_t len = sign ? 1 : 0; - len += nd + end - str; - - // extract adjust field - fmtflags adj = flags() & adjustfield; - if (adj == internal) { - if (sign) { - putch(sign); - } - do_fill(len); - } else { - // do fill for internal or right - fill_not_left(len); - if (sign) { - *--str = sign; - } - } - putstr(str); - // output fraction - while (nd-- > 0) { - fractionPart *= 10.0; - int digit = static_cast(fractionPart); - putch(digit + '0'); - fractionPart -= digit; - } - // do fill if not done above - do_fill(len); -} -//------------------------------------------------------------------------------ -void ostream::putNum(int32_t n) { - bool neg = n < 0 && flagsToBase() == 10; - if (neg) { - n = -n; - } - putNum(n, neg); -} -//------------------------------------------------------------------------------ -void ostream::putNum(uint32_t n, bool neg) { - char buf[13]; - char* end = buf + sizeof(buf) - 1; - char* num; - char* str; - uint8_t base = flagsToBase(); - *end = '\0'; - str = num = fmtNum(n, end, base); - if (base == 10) { - if (neg) { - *--str = '-'; - } else if (flags() & showpos) { - *--str = '+'; - } - } else if (flags() & showbase) { - if (flags() & hex) { - *--str = flags() & uppercase ? 'X' : 'x'; - } - *--str = '0'; - } - uint8_t len = end - str; - fmtflags adj = flags() & adjustfield; - if (adj == internal) { - while (str < num) { - putch(*str++); - } - } - if (adj != left) { - do_fill(len); - } - putstr(str); - do_fill(len); -} -//------------------------------------------------------------------------------ -void ostream::putPgm(const char* str) { - int n; - for (n = 0; pgm_read_byte(&str[n]); n++) {} - fill_not_left(n); - for (uint8_t c; (c = pgm_read_byte(str)); str++) { - putch(c); - } - do_fill(n); -} -//------------------------------------------------------------------------------ -void ostream::putStr(const char *str) { - unsigned n = strlen(str); - fill_not_left(n); - putstr(str); - do_fill(n); -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ostream.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ostream.h deleted file mode 100644 index 9d52aaca..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FatLib/ostream.h +++ /dev/null @@ -1,282 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef ostream_h -#define ostream_h -/** - * \file - * \brief \ref ostream class - */ -#include "ios.h" - -namespace sdfat { - -//============================================================================== -/** - * \class ostream - * \brief Output Stream - */ -class ostream : public virtual ios { - public: - ostream() {} - - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - ostream& operator<< (ostream& (*pf)(ostream& str)) { - return pf(*this); - } - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - ostream& operator<< (ios_base& (*pf)(ios_base& str)) { - pf(*this); - return *this; - } - /** Output bool - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (bool arg) { - putBool(arg); - return *this; - } - /** Output string - * \param[in] arg string to output - * \return the stream - */ - ostream &operator<< (const char *arg) { - putStr(arg); - return *this; - } - /** Output string - * \param[in] arg string to output - * \return the stream - */ - ostream &operator<< (const signed char *arg) { - putStr((const char*)arg); - return *this; - } - /** Output string - * \param[in] arg string to output - * \return the stream - */ - ostream &operator<< (const unsigned char *arg) { - putStr((const char*)arg); - return *this; - } - /** Output character - * \param[in] arg character to output - * \return the stream - */ - ostream &operator<< (char arg) { - putChar(arg); - return *this; - } - /** Output character - * \param[in] arg character to output - * \return the stream - */ - ostream &operator<< (signed char arg) { - putChar(static_cast(arg)); - return *this; - } - /** Output character - * \param[in] arg character to output - * \return the stream - */ - ostream &operator<< (unsigned char arg) { - putChar(static_cast(arg)); - return *this; - } - /** Output double - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (double arg) { - putDouble(arg); - return *this; - } - /** Output float - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (float arg) { - putDouble(arg); - return *this; - } - /** Output signed short - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (short arg) { // NOLINT - putNum((int32_t)arg); - return *this; - } - /** Output unsigned short - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (unsigned short arg) { // NOLINT - putNum((uint32_t)arg); - return *this; - } - /** Output signed int - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (int arg) { - putNum((int32_t)arg); - return *this; - } - /** Output unsigned int - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (unsigned int arg) { - putNum((uint32_t)arg); - return *this; - } - /** Output signed long - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (long arg) { // NOLINT - putNum((int32_t)arg); - return *this; - } - /** Output unsigned long - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (unsigned long arg) { // NOLINT - putNum((uint32_t)arg); - return *this; - } - /** Output pointer - * \param[in] arg value to output - * \return the stream - */ - ostream& operator<< (const void* arg) { - putNum(reinterpret_cast(arg)); - return *this; - } -#if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - /** Output a string from flash using the Arduino F() macro. - * \param[in] arg pointing to flash string - * \return the stream - */ - ostream &operator<< (const __FlashStringHelper *arg) { - putPgm(reinterpret_cast(arg)); - return *this; - } -#endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - /** - * Puts a character in a stream. - * - * The unformatted output function inserts the element \a ch. - * It returns *this. - * - * \param[in] ch The character - * \return A reference to the ostream object. - */ - ostream& put(char ch) { - putch(ch); - return *this; - } -// ostream& write(char *str, streamsize count); - /** - * Flushes the buffer associated with this stream. The flush function - * calls the sync function of the associated file. - * \return A reference to the ostream object. - */ - ostream& flush() { - if (!sync()) { - setstate(badbit); - } - return *this; - } - /** - * \return the stream position - */ - pos_type tellp() { - return tellpos(); - } - /** - * Set the stream position - * \param[in] pos The absolute position in which to move the write pointer. - * \return Is always *this. Failure is indicated by the state of *this. - */ - ostream& seekp(pos_type pos) { - if (!seekpos(pos)) { - setstate(failbit); - } - return *this; - } - /** - * Set the stream position. - * - * \param[in] off An offset to move the write pointer relative to way. - * \a off is a signed 32-bit int so the offset is limited to +- 2GB. - * \param[in] way One of ios::beg, ios::cur, or ios::end. - * \return Is always *this. Failure is indicated by the state of *this. - */ - ostream& seekp(off_type off, seekdir way) { - if (!seekoff(off, way)) { - setstate(failbit); - } - return *this; - } - - protected: - /// @cond SHOW_PROTECTED - /** Put character with binary/text conversion - * \param[in] ch character to write - */ - virtual void putch(char ch) = 0; - virtual void putstr(const char *str) = 0; - virtual bool seekoff(off_type pos, seekdir way) = 0; - virtual bool seekpos(pos_type pos) = 0; - virtual bool sync() = 0; - - virtual pos_type tellpos() = 0; - /// @endcond - private: - void do_fill(unsigned len); - void fill_not_left(unsigned len); - char* fmtNum(uint32_t n, char *ptr, uint8_t base); - void putBool(bool b); - void putChar(char c); - void putDouble(double n); - void putNum(uint32_t n, bool neg = false); - void putNum(int32_t n); - void putPgm(const char* str); - void putStr(const char* str); -}; - -}; // namespace sdfat - -#endif // ostream_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FreeStack.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FreeStack.h deleted file mode 100644 index 503899bc..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/FreeStack.h +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FreeStack_h -#define FreeStack_h - -namespace sdfat { - -/** - * \file - * \brief FreeStack() function. - */ -#if defined(__AVR__) || defined(DOXYGEN) -/** boundary between stack and heap. */ -extern char *__brkval; -/** End of bss section.*/ -extern char __bss_end; -/** Amount of free stack space. - * \return The number of free bytes. - */ -static int FreeStack() { - char* sp = reinterpret_cast(SP); - return __brkval ? sp - __brkval : sp - &__bss_end; -// char top; -// return __brkval ? &top - __brkval : &top - &__bss_end; -} -#elif defined(PLATFORM_ID) // Particle board -static int FreeStack() { - return System.freeMemory(); -} -#elif defined(__arm__) -extern "C" char* sbrk(int incr); -static int FreeStack() { - char top = 't'; - return &top - reinterpret_cast(sbrk(0)); -} -#elif defined(ESP8266) -static int FreeStack() { - int free = (int)ESP.getFreeContStack(); - ESP.resetFreeContStack(); - return free; -} -#else -#warning FreeStack is not defined for this system. -static int FreeStack() { - return 0; -} -#endif - -}; // namespace sdfat - -#endif // FreeStack_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/MinimumSerial.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/MinimumSerial.cpp deleted file mode 100644 index 9267f813..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/MinimumSerial.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SysCall.h" -#if defined(UDR0) || defined(DOXYGEN) -#include "MinimumSerial.h" - -namespace sdfat { - -const uint16_t MIN_2X_BAUD = F_CPU/(4*(2*0XFFF + 1)) + 1; -//------------------------------------------------------------------------------ -int MinimumSerial::available() { - return UCSR0A & (1 << RXC0) ? 1 : 0; -} -//------------------------------------------------------------------------------ -void MinimumSerial::begin(uint32_t baud) { - uint16_t baud_setting; - // don't worry, the compiler will squeeze out F_CPU != 16000000UL - if ((F_CPU != 16000000UL || baud != 57600) && baud > MIN_2X_BAUD) { - // Double the USART Transmission Speed - UCSR0A = 1 << U2X0; - baud_setting = (F_CPU / 4 / baud - 1) / 2; - } else { - // hardcoded exception for compatibility with the bootloader shipped - // with the Duemilanove and previous boards and the firmware on the 8U2 - // on the Uno and Mega 2560. - UCSR0A = 0; - baud_setting = (F_CPU / 8 / baud - 1) / 2; - } - // assign the baud_setting - UBRR0H = baud_setting >> 8; - UBRR0L = baud_setting; - // enable transmit and receive - UCSR0B |= (1 << TXEN0) | (1 << RXEN0); -} -//------------------------------------------------------------------------------ -void MinimumSerial::flush() { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} -} -//------------------------------------------------------------------------------ -int MinimumSerial::read() { - if (UCSR0A & (1 << RXC0)) { - return UDR0; - } - return -1; -} -//------------------------------------------------------------------------------ -size_t MinimumSerial::write(uint8_t b) { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} - UDR0 = b; - return 1; -} - -}; // namespace sdfat - -#endif // defined(UDR0) || defined(DOXYGEN) diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/MinimumSerial.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/MinimumSerial.h deleted file mode 100644 index e6f8c89b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/MinimumSerial.h +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - /** - * \file - * \brief Minimal AVR Serial driver. - */ -#ifndef MinimumSerial_h -#define MinimumSerial_h -#include "SysCall.h" - -namespace sdfat { - -//============================================================================== -/** - * \class MinimumSerial - * \brief mini serial class for the %SdFat library. - */ -class MinimumSerial : public Print { - public: - /** \return true for hardware serial */ - operator bool() { return true; } - /** - * \return one if data is available. - */ - int available(); - /** - * Set baud rate for serial port zero and enable in non interrupt mode. - * Do not call this function if you use another serial library. - * \param[in] baud rate - */ - void begin(uint32_t baud); - /** Wait for write done. */ - void flush(); - /** - * Unbuffered read - * \return -1 if no character is available or an available character. - */ - int read(); - /** - * Unbuffered write - * - * \param[in] b byte to write. - * \return 1 - */ - size_t write(uint8_t b); - using Print::write; -}; - -}; // namespace sdfat - -#endif // MinimumSerial_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdInfo.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdInfo.h deleted file mode 100644 index 7e386ff3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdInfo.h +++ /dev/null @@ -1,499 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdInfo_h -#define SdInfo_h -#include - -namespace sdfat { - -// Based on the document: -// -// SD Specifications -// Part 1 -// Physical Layer -// Simplified Specification -// Version 5.00 -// Aug 10, 2016 -// -// https://www.sdcard.org/downloads/pls/ -//------------------------------------------------------------------------------ -// SD card errors -// See the SD Specification for command info. -typedef enum { - SD_CARD_ERROR_NONE = 0, - - // Basic commands and switch command. - SD_CARD_ERROR_CMD0 = 0X20, - SD_CARD_ERROR_CMD2, - SD_CARD_ERROR_CMD3, - SD_CARD_ERROR_CMD6, - SD_CARD_ERROR_CMD7, - SD_CARD_ERROR_CMD8, - SD_CARD_ERROR_CMD9, - SD_CARD_ERROR_CMD10, - SD_CARD_ERROR_CMD12, - SD_CARD_ERROR_CMD13, - - // Read, write, erase, and extension commands. - SD_CARD_ERROR_CMD17 = 0X30, - SD_CARD_ERROR_CMD18, - SD_CARD_ERROR_CMD24, - SD_CARD_ERROR_CMD25, - SD_CARD_ERROR_CMD32, - SD_CARD_ERROR_CMD33, - SD_CARD_ERROR_CMD38, - SD_CARD_ERROR_CMD58, - SD_CARD_ERROR_CMD59, - - // Application specific commands. - SD_CARD_ERROR_ACMD6 = 0X40, - SD_CARD_ERROR_ACMD13, - SD_CARD_ERROR_ACMD23, - SD_CARD_ERROR_ACMD41, - - // Read/write errors - SD_CARD_ERROR_READ = 0X50, - SD_CARD_ERROR_READ_CRC, - SD_CARD_ERROR_READ_FIFO, - SD_CARD_ERROR_READ_REG, - SD_CARD_ERROR_READ_START, - SD_CARD_ERROR_READ_TIMEOUT, - SD_CARD_ERROR_STOP_TRAN, - SD_CARD_ERROR_WRITE, - SD_CARD_ERROR_WRITE_FIFO, - SD_CARD_ERROR_WRITE_START, - SD_CARD_ERROR_FLASH_PROGRAMMING, - SD_CARD_ERROR_WRITE_TIMEOUT, - - // Misc errors. - SD_CARD_ERROR_DMA = 0X60, - SD_CARD_ERROR_ERASE, - SD_CARD_ERROR_ERASE_SINGLE_BLOCK, - SD_CARD_ERROR_ERASE_TIMEOUT, - SD_CARD_ERROR_INIT_NOT_CALLED, - SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED -} sd_error_code_t; -//------------------------------------------------------------------------------ -// card types -/** Standard capacity V1 SD card */ -const uint8_t SD_CARD_TYPE_SD1 = 1; -/** Standard capacity V2 SD card */ -const uint8_t SD_CARD_TYPE_SD2 = 2; -/** High Capacity SD card */ -const uint8_t SD_CARD_TYPE_SDHC = 3; -//------------------------------------------------------------------------------ -#define SD_SCK_HZ(maxSpeed) SPISettings(maxSpeed, MSBFIRST, SPI_MODE0) -#define SD_SCK_MHZ(maxMhz) SPISettings(1000000UL*maxMhz, MSBFIRST, SPI_MODE0) -// SPI divisor constants -#ifndef ESP8266 -/** Set SCK to max rate of F_CPU/2. */ -#define SPI_FULL_SPEED SD_SCK_MHZ(50) -/** Set SCK rate to F_CPU/3 for Due */ -#define SPI_DIV3_SPEED SD_SCK_HZ(F_CPU/3) -/** Set SCK rate to F_CPU/4. */ -#define SPI_HALF_SPEED SD_SCK_HZ(F_CPU/4) -/** Set SCK rate to F_CPU/6 for Due */ -#define SPI_DIV6_SPEED SD_SCK_HZ(F_CPU/6) -/** Set SCK rate to F_CPU/8. */ -#define SPI_QUARTER_SPEED SD_SCK_HZ(F_CPU/8) -/** Set SCK rate to F_CPU/16. */ -#define SPI_EIGHTH_SPEED SD_SCK_HZ(F_CPU/16) -/** Set SCK rate to F_CPU/32. */ -#define SPI_SIXTEENTH_SPEED SD_SCK_HZ(F_CPU/32) -#else -// ESP8266 backward compatible options from old SD.h library -#define SPI_FULL_SPEED SD_SCK_HZ(8000000) -#define SPI_HALF_SPEED SD_SCK_HZ(4000000) -#define SPI_QUARTER_SPEED SD_SCK_HZ(2000000) -#endif - -//------------------------------------------------------------------------------ -// SD operation timeouts -/** CMD0 retry count */ -const uint8_t SD_CMD0_RETRY = 10; -/** command timeout ms */ -const uint16_t SD_CMD_TIMEOUT = 300; -/** init timeout ms */ -const uint16_t SD_INIT_TIMEOUT = 2000; -/** erase timeout ms */ -const uint16_t SD_ERASE_TIMEOUT = 10000; -/** read timeout ms */ -const uint16_t SD_READ_TIMEOUT = 1000; -/** write time out ms */ -const uint16_t SD_WRITE_TIMEOUT = 2000; -//------------------------------------------------------------------------------ -// SD card commands -/** GO_IDLE_STATE - init card in spi mode if CS low */ -const uint8_t CMD0 = 0X00; -/** ALL_SEND_CID - Asks any card to send the CID. */ -const uint8_t CMD2 = 0X02; -/** SEND_RELATIVE_ADDR - Ask the card to publish a new RCA. */ -const uint8_t CMD3 = 0X03; -/** SWITCH_FUNC - Switch Function Command */ -const uint8_t CMD6 = 0X06; -/** SELECT/DESELECT_CARD - toggles between the stand-by and transfer states. */ -const uint8_t CMD7 = 0X07; -/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ -const uint8_t CMD8 = 0X08; -/** SEND_CSD - read the Card Specific Data (CSD register) */ -const uint8_t CMD9 = 0X09; -/** SEND_CID - read the card identification information (CID register) */ -const uint8_t CMD10 = 0X0A; -/** STOP_TRANSMISSION - end multiple block read sequence */ -const uint8_t CMD12 = 0X0C; -/** SEND_STATUS - read the card status register */ -const uint8_t CMD13 = 0X0D; -/** READ_SINGLE_BLOCK - read a single data block from the card */ -const uint8_t CMD17 = 0X11; -/** READ_MULTIPLE_BLOCK - read a multiple data blocks from the card */ -const uint8_t CMD18 = 0X12; -/** WRITE_BLOCK - write a single data block to the card */ -const uint8_t CMD24 = 0X18; -/** WRITE_MULTIPLE_BLOCK - write blocks of data until a STOP_TRANSMISSION */ -const uint8_t CMD25 = 0X19; -/** ERASE_WR_BLK_START - sets the address of the first block to be erased */ -const uint8_t CMD32 = 0X20; -/** ERASE_WR_BLK_END - sets the address of the last block of the continuous - range to be erased*/ -const uint8_t CMD33 = 0X21; -/** ERASE - erase all previously selected blocks */ -const uint8_t CMD38 = 0X26; -/** APP_CMD - escape for application specific command */ -const uint8_t CMD55 = 0X37; -/** READ_OCR - read the OCR register of a card */ -const uint8_t CMD58 = 0X3A; -/** CRC_ON_OFF - enable or disable CRC checking */ -const uint8_t CMD59 = 0X3B; -/** SET_BUS_WIDTH - Defines the data bus width for data transfer. */ -const uint8_t ACMD6 = 0X06; -/** SD_STATUS - Send the SD Status. */ -const uint8_t ACMD13 = 0X0D; -/** SET_WR_BLK_ERASE_COUNT - Set the number of write blocks to be - pre-erased before writing */ -const uint8_t ACMD23 = 0X17; -/** SD_SEND_OP_COMD - Sends host capacity support information and - activates the card's initialization process */ -const uint8_t ACMD41 = 0X29; -//============================================================================== -// CARD_STATUS -/** The command's argument was out of the allowed range for this card. */ -const uint32_t CARD_STATUS_OUT_OF_RANGE = 1UL << 31; -/** A misaligned address which did not match the block length. */ -const uint32_t CARD_STATUS_ADDRESS_ERROR = 1UL << 30; -/** The transferred block length is not allowed for this card. */ -const uint32_t CARD_STATUS_BLOCK_LEN_ERROR = 1UL << 29; -/** An error in the sequence of erase commands occurred. */ -const uint32_t CARD_STATUS_ERASE_SEQ_ERROR = 1UL <<28; -/** An invalid selection of write-blocks for erase occurred. */ -const uint32_t CARD_STATUS_ERASE_PARAM = 1UL << 27; -/** Set when the host attempts to write to a protected block. */ -const uint32_t CARD_STATUS_WP_VIOLATION = 1UL << 26; -/** When set, signals that the card is locked by the host. */ -const uint32_t CARD_STATUS_CARD_IS_LOCKED = 1UL << 25; -/** Set when a sequence or password error has been detected. */ -const uint32_t CARD_STATUS_LOCK_UNLOCK_FAILED = 1UL << 24; -/** The CRC check of the previous command failed. */ -const uint32_t CARD_STATUS_COM_CRC_ERROR = 1UL << 23; -/** Command not legal for the card state. */ -const uint32_t CARD_STATUS_ILLEGAL_COMMAND = 1UL << 22; -/** Card internal ECC was applied but failed to correct the data. */ -const uint32_t CARD_STATUS_CARD_ECC_FAILED = 1UL << 21; -/** Internal card controller error */ -const uint32_t CARD_STATUS_CC_ERROR = 1UL << 20; -/** A general or an unknown error occurred during the operation. */ -const uint32_t CARD_STATUS_ERROR = 1UL << 19; -// bits 19, 18, and 17 reserved. -/** Permanent WP set or attempt to change read only values of CSD. */ -const uint32_t CARD_STATUS_CSD_OVERWRITE = 1UL <<16; -/** partial address space was erased due to write protect. */ -const uint32_t CARD_STATUS_WP_ERASE_SKIP = 1UL << 15; -/** The command has been executed without using the internal ECC. */ -const uint32_t CARD_STATUS_CARD_ECC_DISABLED = 1UL << 14; -/** out of erase sequence command was received. */ -const uint32_t CARD_STATUS_ERASE_RESET = 1UL << 13; -/** The state of the card when receiving the command. - * 0 = idle - * 1 = ready - * 2 = ident - * 3 = stby - * 4 = tran - * 5 = data - * 6 = rcv - * 7 = prg - * 8 = dis - * 9-14 = reserved - * 15 = reserved for I/O mode - */ -const uint32_t CARD_STATUS_CURRENT_STATE = 0XF << 9; -/** Shift for current state. */ -const uint32_t CARD_STATUS_CURRENT_STATE_SHIFT = 9; -/** Corresponds to buffer empty signaling on the bus. */ -const uint32_t CARD_STATUS_READY_FOR_DATA = 1UL << 8; -// bit 7 reserved. -/** Extension Functions may set this bit to get host to deal with events. */ -const uint32_t CARD_STATUS_FX_EVENT = 1UL << 6; -/** The card will expect ACMD, or the command has been interpreted as ACMD */ -const uint32_t CARD_STATUS_APP_CMD = 1UL << 5; -// bit 4 reserved. -/** Error in the sequence of the authentication process. */ -const uint32_t CARD_STATUS_AKE_SEQ_ERROR = 1UL << 3; -// bits 2,1, and 0 reserved for manufacturer test mode. -//============================================================================== -/** status for card in the ready state */ -const uint8_t R1_READY_STATE = 0X00; -/** status for card in the idle state */ -const uint8_t R1_IDLE_STATE = 0X01; -/** status bit for illegal command */ -const uint8_t R1_ILLEGAL_COMMAND = 0X04; -/** start data token for read or write single block*/ -const uint8_t DATA_START_BLOCK = 0XFE; -/** stop token for write multiple blocks*/ -const uint8_t STOP_TRAN_TOKEN = 0XFD; -/** start data token for write multiple blocks*/ -const uint8_t WRITE_MULTIPLE_TOKEN = 0XFC; -/** mask for data response tokens after a write block operation */ -const uint8_t DATA_RES_MASK = 0X1F; -/** write data accepted token */ -const uint8_t DATA_RES_ACCEPTED = 0X05; -//============================================================================== -/** - * \class CID - * \brief Card IDentification (CID) register. - */ -typedef struct CID { - // byte 0 - /** Manufacturer ID */ - unsigned char mid; - // byte 1-2 - /** OEM/Application ID */ - char oid[2]; - // byte 3-7 - /** Product name */ - char pnm[5]; - // byte 8 - /** Product revision least significant digit */ - unsigned char prv_m : 4; - /** Product revision most significant digit */ - unsigned char prv_n : 4; - // byte 9-12 - /** Product serial number */ - uint32_t psn; - // byte 13 - /** Manufacturing date year low digit */ - unsigned char mdt_year_high : 4; - /** not used */ - unsigned char reserved : 4; - // byte 14 - /** Manufacturing date month */ - unsigned char mdt_month : 4; - /** Manufacturing date year low digit */ - unsigned char mdt_year_low : 4; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** CRC7 checksum */ - unsigned char crc : 7; -} __attribute__((packed)) cid_t; - -//============================================================================== -/** - * \class CSDV1 - * \brief CSD register for version 1.00 cards . - */ -typedef struct CSDV1 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - unsigned char taac; - // byte 2 - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - unsigned char c_size_high : 2; - unsigned char reserved2 : 2; - unsigned char dsr_imp : 1; - unsigned char read_blk_misalign : 1; - unsigned char write_blk_misalign : 1; - unsigned char read_bl_partial : 1; - // byte 7 - unsigned char c_size_mid; - // byte 8 - unsigned char vdd_r_curr_max : 3; - unsigned char vdd_r_curr_min : 3; - unsigned char c_size_low : 2; - // byte 9 - unsigned char c_size_mult_high : 2; - unsigned char vdd_w_cur_max : 3; - unsigned char vdd_w_curr_min : 3; - // byte 10 - unsigned char sector_size_high : 6; - unsigned char erase_blk_en : 1; - unsigned char c_size_mult_low : 1; - // byte 11 - unsigned char wp_grp_size : 7; - unsigned char sector_size_low : 1; - // byte 12 - unsigned char write_bl_len_high : 2; - unsigned char r2w_factor : 3; - unsigned char reserved3 : 2; - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved4 : 5; - unsigned char write_partial : 1; - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved5: 2; - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Indicates the file format on the card */ - unsigned char file_format_grp : 1; - // byte 15 - unsigned char always1 : 1; - unsigned char crc : 7; -} __attribute__((packed)) csd1_t; -//============================================================================== -/** - * \class CSDV2 - * \brief CSD register for version 2.00 cards. - */ -typedef struct CSDV2 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - /** fixed to 0X0E */ - unsigned char taac; - // byte 2 - /** fixed to 0 */ - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - /** This field is fixed to 9h, which indicates READ_BL_LEN=512 Byte */ - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - /** not used */ - unsigned char reserved2 : 4; - unsigned char dsr_imp : 1; - /** fixed to 0 */ - unsigned char read_blk_misalign : 1; - /** fixed to 0 */ - unsigned char write_blk_misalign : 1; - /** fixed to 0 - no partial read */ - unsigned char read_bl_partial : 1; - // byte 7 - /** high part of card size */ - unsigned char c_size_high : 6; - /** not used */ - unsigned char reserved3 : 2; - // byte 8 - /** middle part of card size */ - unsigned char c_size_mid; - // byte 9 - /** low part of card size */ - unsigned char c_size_low; - // byte 10 - /** sector size is fixed at 64 KB */ - unsigned char sector_size_high : 6; - /** fixed to 1 - erase single is supported */ - unsigned char erase_blk_en : 1; - /** not used */ - unsigned char reserved4 : 1; - // byte 11 - unsigned char wp_grp_size : 7; - /** sector size is fixed at 64 KB */ - unsigned char sector_size_low : 1; - // byte 12 - /** write_bl_len fixed for 512 byte blocks */ - unsigned char write_bl_len_high : 2; - /** fixed value of 2 */ - unsigned char r2w_factor : 3; - /** not used */ - unsigned char reserved5 : 2; - /** fixed value of 0 - no write protect groups */ - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved6 : 5; - /** always zero - no partial block read*/ - unsigned char write_partial : 1; - /** write_bl_len fixed for 512 byte blocks */ - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved7: 2; - /** Do not use always 0 */ - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Do not use always 0 */ - unsigned char file_format_grp : 1; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** checksum */ - unsigned char crc : 7; -} __attribute__((packed)) csd2_t; -//============================================================================== -/** - * \class csd_t - * \brief Union of old and new style CSD register. - */ -union csd_t { - csd1_t v1; - csd2_t v2; -}; -//----------------------------------------------------------------------------- -inline uint32_t sdCardCapacity(csd_t* csd) { - if (csd->v1.csd_ver == 0) { - uint8_t read_bl_len = csd->v1.read_bl_len; - uint16_t c_size = (csd->v1.c_size_high << 10) - | (csd->v1.c_size_mid << 2) | csd->v1.c_size_low; - uint8_t c_size_mult = (csd->v1.c_size_mult_high << 1) - | csd->v1.c_size_mult_low; - return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); - } else if (csd->v2.csd_ver == 1) { - uint32_t c_size = 0X10000L * csd->v2.c_size_high + 0X100L - * (uint32_t)csd->v2.c_size_mid + csd->v2.c_size_low; - return (c_size + 1) << 10; - } else { - return 0; - } -} - -}; // namespace sdfat - -#endif // SdInfo_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCard.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCard.cpp deleted file mode 100644 index 50c4c337..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCard.cpp +++ /dev/null @@ -1,807 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiCard.h" - -namespace sdfat { - -//============================================================================== -// debug trace macro -#define SD_TRACE(m, b) -// #define SD_TRACE(m, b) Serial.print(m);Serial.println(b); -#define SD_CS_DBG(m) -// #define SD_CS_DBG(m) Serial.println(F(m)); - -#define DBG_PROFILE_STATS 0 -#if DBG_PROFILE_STATS - -#define DBG_TAG_LIST\ - DBG_TAG(DBG_CMD0_TIME, "CMD0 time")\ - DBG_TAG(DBG_ACMD41_TIME, "ACMD41 time")\ - DBG_TAG(DBG_CMD_BUSY, "cmd busy")\ - DBG_TAG(DBG_ERASE_BUSY, "erase busy")\ - DBG_TAG(DBG_WAIT_READ, "wait read")\ - DBG_TAG(DBG_WRITE_FLASH, "write flash")\ - DBG_TAG(DBG_WRITE_BUSY, "write busy")\ - DBG_TAG(DBG_WRITE_STOP, "write stop")\ - DBG_TAG(DBG_ACMD41_COUNT, "ACMD41 count")\ - DBG_TAG(DBG_CMD0_COUNT, "CMD0 count") - -#define DBG_TIME_DIM DBG_ACMD41_COUNT - -enum DbgTag { - #define DBG_TAG(tag, str) tag, - DBG_TAG_LIST - DBG_COUNT_DIM - #undef DBG_TAG -}; - -static uint32_t dbgCount[DBG_COUNT_DIM]; -static uint32_t dbgBgnTime[DBG_TIME_DIM]; -static uint32_t dbgMaxTime[DBG_TIME_DIM]; -static uint32_t dbgMinTime[DBG_TIME_DIM]; -static uint32_t dbgTotalTime[DBG_TIME_DIM]; -//------------------------------------------------------------------------------ -static void dbgBeginTime(DbgTag tag) { - dbgBgnTime[tag] = micros(); -} -//------------------------------------------------------------------------------ -static void dbgClearStats() { - for (int i = 0; i < DBG_COUNT_DIM; i++) { - dbgCount[i] = 0; - if (i < DBG_TIME_DIM) { - dbgMaxTime[i] = 0; - dbgMinTime[i] = 9999999; - dbgTotalTime[i] = 0; - } - } -} -//------------------------------------------------------------------------------ -static void dbgEndTime(DbgTag tag) { - uint32_t m = micros() - dbgBgnTime[tag]; - dbgTotalTime[tag] += m; - if (m > dbgMaxTime[tag]) { - dbgMaxTime[tag] = m; - } - if (m < dbgMinTime[tag]) { - dbgMinTime[tag] = m; - } - dbgCount[tag]++; -} -//------------------------------------------------------------------------------ -static void dbgEventCount(DbgTag tag) { - dbgCount[tag]++; -} -//------------------------------------------------------------------------------ -static void dbgPrintTagText(uint8_t tag) { - #define DBG_TAG(e, m) case e: Serial.print(F(m)); break; - switch (tag) { - DBG_TAG_LIST - } - #undef DBG_TAG -} -//------------------------------------------------------------------------------ -static void dbgPrintStats() { - Serial.println(); - Serial.println(F("=======================")); - Serial.println(F("item,event,min,max,avg")); - Serial.println(F("tag,count,usec,usec,usec")); - for (int i = 0; i < DBG_COUNT_DIM; i++) { - if (dbgCount[i]) { - dbgPrintTagText(i); - Serial.print(','); - Serial.print(dbgCount[i]); - if (i < DBG_TIME_DIM) { - Serial.print(','); - Serial.print(dbgMinTime[i]); - Serial.print(','); - Serial.print(dbgMaxTime[i]); - Serial.print(','); - Serial.print(dbgTotalTime[i]/dbgCount[i]); - } - Serial.println(); - } - } - Serial.println(F("=======================")); - Serial.println(); -} -#undef DBG_TAG_LIST -#define DBG_BEGIN_TIME(tag) dbgBeginTime(tag) -#define DBG_END_TIME(tag) dbgEndTime(tag) -#define DBG_EVENT_COUNT(tag) dbgEventCount(tag) -#else // DBG_PROFILE_STATS -#define DBG_BEGIN_TIME(tag) -#define DBG_END_TIME(tag) -#define DBG_EVENT_COUNT(tag) -static void dbgClearStats() {} -static void dbgPrintStats() {} -#endif // DBG_PROFILE_STATS -//============================================================================== -#if USE_SD_CRC -// CRC functions -//------------------------------------------------------------------------------ -static uint8_t CRC7(const uint8_t* data, uint8_t n) { - uint8_t crc = 0; - for (uint8_t i = 0; i < n; i++) { - uint8_t d = data[i]; - for (uint8_t j = 0; j < 8; j++) { - crc <<= 1; - if ((d & 0x80) ^ (crc & 0x80)) { - crc ^= 0x09; - } - d <<= 1; - } - } - return (crc << 1) | 1; -} -//------------------------------------------------------------------------------ -#if USE_SD_CRC == 1 -// Shift based CRC-CCITT -// uses the x^16,x^12,x^5,x^1 polynomial. -static uint16_t CRC_CCITT(const uint8_t *data, size_t n) { - uint16_t crc = 0; - for (size_t i = 0; i < n; i++) { - crc = (uint8_t)(crc >> 8) | (crc << 8); - crc ^= data[i]; - crc ^= (uint8_t)(crc & 0xff) >> 4; - crc ^= crc << 12; - crc ^= (crc & 0xff) << 5; - } - return crc; -} -#elif USE_SD_CRC > 1 // CRC_CCITT -//------------------------------------------------------------------------------ -// Table based CRC-CCITT -// uses the x^16,x^12,x^5,x^1 polynomial. -#ifdef __AVR__ -static const uint16_t crctab[] PROGMEM = { -#else // __AVR__ -static const uint16_t crctab[] = { -#endif // __AVR__ - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, - 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, - 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, - 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, - 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, - 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, - 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, - 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, - 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, - 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, - 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, - 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, - 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, - 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, - 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, - 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, - 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, - 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, - 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, - 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, - 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, - 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, - 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 -}; -static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { - uint16_t crc = 0; - for (size_t i = 0; i < n; i++) { -#ifdef __AVR__ - crc = pgm_read_word(&crctab[(crc >> 8 ^ data[i]) & 0XFF]) ^ (crc << 8); -#else // __AVR__ - crc = crctab[(crc >> 8 ^ data[i]) & 0XFF] ^ (crc << 8); -#endif // __AVR__ - } - return crc; -} -#endif // CRC_CCITT -#endif // USE_SD_CRC -//============================================================================== -// SdSpiCard member functions -//------------------------------------------------------------------------------ -bool SdSpiCard::begin(SdSpiDriver* spi, uint8_t csPin, SPISettings settings) { - m_spiActive = false; - m_errorCode = SD_CARD_ERROR_NONE; - m_type = 0; - m_spiDriver = spi; - uint16_t t0 = curTimeMS(); - uint32_t arg; - - m_spiDriver->begin(csPin); - m_spiDriver->setSpiSettings(SD_SCK_HZ(250000)); - spiStart(); - - // must supply min of 74 clock cycles with CS high. - spiUnselect(); - for (uint8_t i = 0; i < 10; i++) { - spiSend(0XFF); - } - spiSelect(); - - DBG_BEGIN_TIME(DBG_CMD0_TIME); - // command to go idle in SPI mode - for (uint8_t i = 1;; i++) { - DBG_EVENT_COUNT(DBG_CMD0_COUNT); - if (cardCommand(CMD0, 0) == R1_IDLE_STATE) { - break; - } - if (i == SD_CMD0_RETRY) { - error(SD_CARD_ERROR_CMD0); - goto fail; - } - // stop multi-block write - spiSend(STOP_TRAN_TOKEN); - // finish block transfer - for (int i = 0; i < 520; i++) { - spiReceive(); - } - } - DBG_END_TIME(DBG_CMD0_TIME); -#if USE_SD_CRC - if (cardCommand(CMD59, 1) != R1_IDLE_STATE) { - error(SD_CARD_ERROR_CMD59); - goto fail; - } -#endif // USE_SD_CRC - // check SD version - if (cardCommand(CMD8, 0x1AA) == (R1_ILLEGAL_COMMAND | R1_IDLE_STATE)) { - type(SD_CARD_TYPE_SD1); - } else { - for (uint8_t i = 0; i < 4; i++) { - m_status = spiReceive(); - } - if (m_status == 0XAA) { - type(SD_CARD_TYPE_SD2); - } else { - error(SD_CARD_ERROR_CMD8); - goto fail; - } - } - // initialize card and send host supports SDHC if SD2 - arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; - DBG_BEGIN_TIME(DBG_ACMD41_TIME); - while (cardAcmd(ACMD41, arg) != R1_READY_STATE) { - DBG_EVENT_COUNT(DBG_ACMD41_COUNT); - // check for timeout - if (isTimedOut(t0, SD_INIT_TIMEOUT)) { - error(SD_CARD_ERROR_ACMD41); - goto fail; - } - } - DBG_END_TIME(DBG_ACMD41_TIME); - // if SD2 read OCR register to check for SDHC card - if (type() == SD_CARD_TYPE_SD2) { - if (cardCommand(CMD58, 0)) { - error(SD_CARD_ERROR_CMD58); - goto fail; - } - if ((spiReceive() & 0XC0) == 0XC0) { - type(SD_CARD_TYPE_SDHC); - } - // Discard rest of ocr - contains allowed voltage range. - for (uint8_t i = 0; i < 3; i++) { - spiReceive(); - } - } - spiStop(); - m_spiDriver->setSpiSettings(settings); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -// send command and return error code. Return zero for OK -uint8_t SdSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { - // select card - if (!m_spiActive) { - spiStart(); - } - // wait if busy unless CMD0 - if (cmd != CMD0) { - DBG_BEGIN_TIME(DBG_CMD_BUSY); - waitNotBusy(SD_CMD_TIMEOUT); - DBG_END_TIME(DBG_CMD_BUSY); - } - -#if USE_SD_CRC - // form message - uint8_t buf[6]; - buf[0] = (uint8_t)0x40U | cmd; - buf[1] = (uint8_t)(arg >> 24U); - buf[2] = (uint8_t)(arg >> 16U); - buf[3] = (uint8_t)(arg >> 8U); - buf[4] = (uint8_t)arg; - - // add CRC - buf[5] = CRC7(buf, 5); - - // send message - spiSend(buf, 6); -#else // USE_SD_CRC - // send command - spiSend(cmd | 0x40); - - // send argument - uint8_t *pa = reinterpret_cast(&arg); - for (int8_t i = 3; i >= 0; i--) { - spiSend(pa[i]); - } - // send CRC - correct for CMD0 with arg zero or CMD8 with arg 0X1AA - spiSend(cmd == CMD0 ? 0X95 : 0X87); -#endif // USE_SD_CRC - - // discard first fill byte to avoid MISO pull-up problem. - spiReceive(); - - // there are 1-8 fill bytes before response. fill bytes should be 0XFF. - for (uint8_t i = 0; ((m_status = spiReceive()) & 0X80) && i < 10; i++) { - } - return m_status; -} -//------------------------------------------------------------------------------ -uint32_t SdSpiCard::cardCapacity() { - csd_t csd; - return readCSD(&csd) ? sdCardCapacity(&csd) : 0; -} -//------------------------------------------------------------------------------ -void SdSpiCard::dbgClearStats() {sdfat::dbgClearStats();} -//------------------------------------------------------------------------------ -void SdSpiCard::dbgPrintStats() {sdfat::dbgPrintStats();} -//------------------------------------------------------------------------------ -bool SdSpiCard::erase(uint32_t firstBlock, uint32_t lastBlock) { - csd_t csd; - if (!readCSD(&csd)) { - goto fail; - } - // check for single block erase - if (!csd.v1.erase_blk_en) { - // erase size mask - uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; - if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) { - // error card can't erase specified area - error(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); - goto fail; - } - } - if (m_type != SD_CARD_TYPE_SDHC) { - firstBlock <<= 9; - lastBlock <<= 9; - } - if (cardCommand(CMD32, firstBlock) - || cardCommand(CMD33, lastBlock) - || cardCommand(CMD38, 0)) { - error(SD_CARD_ERROR_ERASE); - goto fail; - } - DBG_BEGIN_TIME(DBG_ERASE_BUSY); - if (!waitNotBusy(SD_ERASE_TIMEOUT)) { - error(SD_CARD_ERROR_ERASE_TIMEOUT); - goto fail; - } - DBG_END_TIME(DBG_ERASE_BUSY); - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::eraseSingleBlockEnable() { - csd_t csd; - return readCSD(&csd) ? csd.v1.erase_blk_en : false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::isBusy() { - bool rtn = true; - bool spiActive = m_spiActive; - if (!spiActive) { - spiStart(); - } - for (uint8_t i = 0; i < 8; i++) { - if (0XFF == spiReceive()) { - rtn = false; - break; - } - } - if (!spiActive) { - spiStop(); - } - return rtn; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::isTimedOut(uint16_t startMS, uint16_t timeoutMS) { -#if WDT_YIELD_TIME_MICROS - static uint32_t last; - if ((micros() - last) > WDT_YIELD_TIME_MICROS) { - SysCall::yield(); - last = micros(); - } -#endif // WDT_YIELD_TIME_MICROS - return (curTimeMS() - startMS) > timeoutMS; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readBlock(uint32_t blockNumber, uint8_t* dst) { - SD_TRACE("RB", blockNumber); - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD17, blockNumber)) { - error(SD_CARD_ERROR_CMD17); - goto fail; - } - if (!readData(dst, 512)) { - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readBlocks(uint32_t block, uint8_t* dst, size_t count) { - if (!readStart(block)) { - return false; - } - for (uint16_t b = 0; b < count; b++, dst += 512) { - if (!readData(dst, 512)) { - return false; - } - } - return readStop(); -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readData(uint8_t *dst) { - return readData(dst, 512); -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readData(uint8_t* dst, size_t count) { -#if USE_SD_CRC - uint16_t crc; -#endif // USE_SD_CRC - DBG_BEGIN_TIME(DBG_WAIT_READ); - // wait for start block token - uint16_t t0 = curTimeMS(); - while ((m_status = spiReceive()) == 0XFF) { - if (isTimedOut(t0, SD_READ_TIMEOUT)) { - error(SD_CARD_ERROR_READ_TIMEOUT); - goto fail; - } - } - DBG_END_TIME(DBG_WAIT_READ); - if (m_status != DATA_START_BLOCK) { - error(SD_CARD_ERROR_READ); - goto fail; - } - // transfer data - if ((m_status = spiReceive(dst, count))) { - error(SD_CARD_ERROR_DMA); - goto fail; - } - -#if USE_SD_CRC - // get crc - crc = (spiReceive() << 8) | spiReceive(); - if (crc != CRC_CCITT(dst, count)) { - error(SD_CARD_ERROR_READ_CRC); - goto fail; - } -#else - // discard crc - spiReceive(); - spiReceive(); -#endif // USE_SD_CRC - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readOCR(uint32_t* ocr) { - uint8_t *p = reinterpret_cast(ocr); - if (cardCommand(CMD58, 0)) { - error(SD_CARD_ERROR_CMD58); - goto fail; - } - for (uint8_t i = 0; i < 4; i++) { - p[3 - i] = spiReceive(); - } - - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -/** read CID or CSR register */ -bool SdSpiCard::readRegister(uint8_t cmd, void* buf) { - uint8_t* dst = reinterpret_cast(buf); - if (cardCommand(cmd, 0)) { - error(SD_CARD_ERROR_READ_REG); - goto fail; - } - if (!readData(dst, 16)) { - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readStart(uint32_t blockNumber) { - SD_TRACE("RS", blockNumber); - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD18, blockNumber)) { - error(SD_CARD_ERROR_CMD18); - goto fail; - } -// spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//----------------------------------------------------------------------------- -bool SdSpiCard::readStatus(uint8_t* status) { - // retrun is R2 so read extra status byte. - if (cardAcmd(ACMD13, 0) || spiReceive()) { - error(SD_CARD_ERROR_ACMD13); - goto fail; - } - if (!readData(status, 64)) { - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//----------------------------------------------------------------------------- -void SdSpiCard::spiStart() { - if (!m_spiActive) { - spiActivate(); - spiSelect(); - m_spiActive = true; - } -} -//----------------------------------------------------------------------------- -void SdSpiCard::spiStop() { - if (m_spiActive) { - spiUnselect(); - spiSend(0XFF); - spiDeactivate(); - m_spiActive = false; - } -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readStop() { - if (cardCommand(CMD12, 0)) { - error(SD_CARD_ERROR_CMD12); - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -// wait for card to go not busy -bool SdSpiCard::waitNotBusy(uint16_t timeoutMS) { - uint16_t t0 = curTimeMS(); -#if WDT_YIELD_TIME_MICROS - // Call isTimedOut first to insure yield is called. - while (!isTimedOut(t0, timeoutMS)) { - if (spiReceive() == 0XFF) { - return true; - } - } - return false; -#else // WDT_YIELD_TIME_MICROS - // Check not busy first since yield is not called in isTimedOut. - while (spiReceive() != 0XFF) { - if (isTimedOut(t0, timeoutMS)) { - return false; - } - } - return true; -#endif // WDT_YIELD_TIME_MICROS -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeBlock(uint32_t blockNumber, const uint8_t* src) { - SD_TRACE("WB", blockNumber); - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD24, blockNumber)) { - error(SD_CARD_ERROR_CMD24); - goto fail; - } - if (!writeData(DATA_START_BLOCK, src)) { - goto fail; - } - - -#if CHECK_FLASH_PROGRAMMING - // wait for flash programming to complete - DBG_BEGIN_TIME(DBG_WRITE_FLASH); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - error(SD_CARD_ERROR_FLASH_PROGRAMMING); - goto fail; - } - DBG_END_TIME(DBG_WRITE_FLASH); - // response is r2 so get and check two bytes for nonzero - if (cardCommand(CMD13, 0) || spiReceive()) { - error(SD_CARD_ERROR_CMD13); - goto fail; - } -#endif // CHECK_PROGRAMMING - - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeBlocks(uint32_t block, const uint8_t* src, size_t count) { - if (!writeStart(block)) { - goto fail; - } - for (size_t b = 0; b < count; b++, src += 512) { - if (!writeData(src)) { - goto fail; - } - } - return writeStop(); - - fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeData(const uint8_t* src) { - // wait for previous write to finish - DBG_BEGIN_TIME(DBG_WRITE_BUSY); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - error(SD_CARD_ERROR_WRITE_TIMEOUT); - goto fail; - } - DBG_END_TIME(DBG_WRITE_BUSY); - if (!writeData(WRITE_MULTIPLE_TOKEN, src)) { - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -// send one block of data for write block or write multiple blocks -bool SdSpiCard::writeData(uint8_t token, const uint8_t* src) { -#if USE_SD_CRC - uint16_t crc = CRC_CCITT(src, 512); -#else // USE_SD_CRC - uint16_t crc = 0XFFFF; -#endif // USE_SD_CRC - spiSend(token); - spiSend(src, 512); - spiSend(crc >> 8); - spiSend(crc & 0XFF); - - m_status = spiReceive(); - if ((m_status & DATA_RES_MASK) != DATA_RES_ACCEPTED) { - error(SD_CARD_ERROR_WRITE); - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeStart(uint32_t blockNumber) { - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD25, blockNumber)) { - error(SD_CARD_ERROR_CMD25); - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeStart(uint32_t blockNumber, uint32_t eraseCount) { - SD_TRACE("WS", blockNumber); - // send pre-erase count - if (cardAcmd(ACMD23, eraseCount)) { - error(SD_CARD_ERROR_ACMD23); - goto fail; - } - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD25, blockNumber)) { - error(SD_CARD_ERROR_CMD25); - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeStop() { - DBG_BEGIN_TIME(DBG_WRITE_STOP); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - goto fail; - } - DBG_END_TIME(DBG_WRITE_STOP); - spiSend(STOP_TRAN_TOKEN); - spiStop(); - return true; - -fail: - error(SD_CARD_ERROR_STOP_TRAN); - spiStop(); - return false; -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCard.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCard.h deleted file mode 100644 index 1d8d9d97..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCard.h +++ /dev/null @@ -1,482 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdSpiCard_h -#define SdSpiCard_h -/** - * \file - * \brief SdSpiCard class for V2 SD/SDHC cards - */ -#include -#include "SysCall.h" -#include "SdInfo.h" -#include "../FatLib/BaseBlockDriver.h" -#include "../SpiDriver/SdSpiDriver.h" - -#ifdef HOST_MOCK -extern uint64_t _sdCardSizeB; -extern uint8_t *_sdCard; -#endif - -namespace sdfat { -//============================================================================== -/** - * \class SdSpiCard - * \brief Raw access to SD and SDHC flash memory cards via SPI protocol. - */ -#if ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -class SdSpiCard : public BaseBlockDriver { -#else // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -class SdSpiCard { -#endif // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -#ifndef HOST_MOCK - public: - /** Construct an instance of SdSpiCard. */ - SdSpiCard() : m_errorCode(SD_CARD_ERROR_INIT_NOT_CALLED), m_type(0) {} - /** Initialize the SD card. - * \param[in] spi SPI driver for card. - * \param[in] csPin card chip select pin. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings); - /** - * Determine the size of an SD flash memory card. - * - * \return The number of 512 byte sectors in the card - * or zero if an error occurs. - */ - uint32_t cardCapacity(); - /** \return Card size in sectors or zero if an error occurs. */ - uint32_t cardSize() {return cardCapacity();} - /** Clear debug stats. */ - void dbgClearStats(); - /** Print debug stats. */ - void dbgPrintStats(); - /** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool erase(uint32_t firstBlock, uint32_t lastBlock); - /** Determine if card supports single block erase. - * - * \return true is returned if single block erase is supported. - * false is returned if single block erase is not supported. - */ - bool eraseSingleBlockEnable(); - /** - * Set SD error code. - * \param[in] code value for error code. - */ - void error(uint8_t code) { - m_errorCode = code; - } - /** - * \return code for the last error. See SdInfo.h for a list of error codes. - */ - int errorCode() const { - return m_errorCode; - } - /** \return error data for last error. */ - int errorData() const { - return m_status; - } - /** - * Check for busy. MISO low indicates the card is busy. - * - * \return true if busy else false. - */ - bool isBusy(); - /** - * Read a 512 byte block from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t lba, uint8_t* dst); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t lba, uint8_t* dst, size_t nb); - /** - * Read a card's CID register. The CID contains card identification - * information such as Manufacturer ID, Product name, Product serial - * number and Manufacturing date. - * - * \param[out] cid pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCID(cid_t* cid) { - return readRegister(CMD10, cid); - } - /** - * Read a card's CSD register. The CSD contains Card-Specific Data that - * provides information regarding access to the card's contents. - * - * \param[out] csd pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCSD(csd_t* csd) { - return readRegister(CMD9, csd); - } - /** Read one data block in a multiple block read sequence - * - * \param[out] dst Pointer to the location for the data to be read. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readData(uint8_t *dst); - /** Read OCR register. - * - * \param[out] ocr Value of OCR register. - * \return true for success else false. - */ - bool readOCR(uint32_t* ocr); - /** Start a read multiple blocks sequence. - * - * \param[in] blockNumber Address of first block in sequence. - * - * \note This function is used with readData() and readStop() for optimized - * multiple block reads. SPI chipSelect must be low for the entire sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStart(uint32_t blockNumber); - /** Return the 64 byte card status - * \param[out] status location for 64 status bytes. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStatus(uint8_t* status); - /** End a read multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStop(); - /** \return success if sync successful. Not for user apps. */ - bool syncBlocks() {return true;} - /** Return the card type: SD V1, SD V2 or SDHC - * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. - */ - int type() const { - return m_type; - } - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t lba, const uint8_t* src); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t lba, const uint8_t* src, size_t nb); - /** Write one data block in a multiple block write sequence. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeData(const uint8_t* src); - /** Start a write multiple blocks sequence. - * - * \param[in] blockNumber Address of first block in sequence. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t blockNumber); - - /** Start a write multiple blocks sequence with pre-erase. - * - * \param[in] blockNumber Address of first block in sequence. - * \param[in] eraseCount The number of blocks to be pre-erased. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t blockNumber, uint32_t eraseCount); - /** End a write multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStop(); - /** Set CS low and activate the card. */ - void spiStart(); - /** Set CS high and deactivate the card. */ - void spiStop(); - - private: - // private functions - uint8_t cardAcmd(uint8_t cmd, uint32_t arg) { - cardCommand(CMD55, 0); - return cardCommand(cmd, arg); - } - uint8_t cardCommand(uint8_t cmd, uint32_t arg); - bool isTimedOut(uint16_t startMS, uint16_t timeoutMS); - bool readData(uint8_t* dst, size_t count); - bool readRegister(uint8_t cmd, void* buf); - - void type(uint8_t value) { - m_type = value; - } - - bool waitNotBusy(uint16_t timeoutMS); - bool writeData(uint8_t token, const uint8_t* src); - - //--------------------------------------------------------------------------- - // functions defined in SdSpiDriver.h - void spiActivate() { - m_spiDriver->activate(); - } - void spiDeactivate() { - m_spiDriver->deactivate(); - } - uint8_t spiReceive() { - return m_spiDriver->receive(); - } - uint8_t spiReceive(uint8_t* buf, size_t n) { - return m_spiDriver->receive(buf, n); - } - void spiSend(uint8_t data) { - m_spiDriver->send(data); - } - void spiSend(const uint8_t* buf, size_t n) { - m_spiDriver->send(buf, n); - } - void spiSelect() { - m_spiDriver->select(); - } - void spiUnselect() { - m_spiDriver->unselect(); - } - uint8_t m_errorCode; - SdSpiDriver *m_spiDriver; - bool m_spiActive; - uint8_t m_status; - uint8_t m_type; -#else - public: - SdSpiCard() : m_errorCode(SD_CARD_ERROR_INIT_NOT_CALLED), m_type(0) { - _blocks = _sdCardSizeB / 512LL; - _data = _sdCard; - } - ~SdSpiCard() { } - bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { - m_errorCode = 0; - m_status = 0; - (void)spi; - (void)csPin; - (void)spiSettings; - return true; - } - uint32_t cardSize() { return _blocks; } - bool erase(uint32_t firstBlock, uint32_t lastBlock) { - _blocks = _sdCardSizeB / 512LL; - _data = _sdCard; - if (!_data) return false; - memset(_data + firstBlock * 512, 0, (lastBlock - firstBlock) * 512); - return true; - } - bool eraseSingleBlockEnable() { return true; } - void error(uint8_t code) { m_errorCode = code; } - int errorCode() const { return m_errorCode; } - int errorData() const { return m_status; } - bool isBusy() { return false; } - bool readBlock(uint32_t lba, uint8_t* dst) { - _blocks = _sdCardSizeB / 512LL; - _data = _sdCard; - if (!_data) return false; - memcpy(dst, _data + lba * 512, 512); - return true; - } - bool readBlocks(uint32_t lba, uint8_t* dst, size_t nb) { - _blocks = _sdCardSizeB / 512LL; - _data = _sdCard; - if (!_data) return false; - memcpy(dst, _data + lba, 512 * nb); - return true; - } - bool readCID(cid_t* cid) { (void) cid; return true; } - bool readCSD(csd_t* csd) { (void) csd; return true; } - bool readData(uint8_t *dst) { return readBlock(_multi++, dst); } - bool readOCR(uint32_t* ocr) { (void) ocr; return true; } - bool readStart(uint32_t blockNumber) { - _multi = blockNumber; - return true; - } - bool readStatus(uint8_t* status) { (void) status; return true; } - bool readStop() { return true; } - bool syncBlocks() { return true; } - int type() const { return m_type; } - bool writeBlock(uint32_t lba, const uint8_t* src) { - _blocks = _sdCardSizeB / 512LL; - _data = _sdCard; - if (!_data) return false; - memcpy(_data + lba * 512, src, 512); - return true; - } - bool writeBlocks(uint32_t lba, const uint8_t* src, size_t nb) { - _blocks = _sdCardSizeB / 512LL; - _data = _sdCard; - if (!_data) return false; - memcpy(_data + lba * 512, src, 512 * nb); - return true; - } - bool writeData(const uint8_t* src) { return writeBlock(_multi++, src); - } - bool writeStart(uint32_t blockNumber) { - _multi = blockNumber; - return true; - } - bool writeStart(uint32_t blockNumber, uint32_t eraseCount) { - erase(blockNumber, blockNumber + eraseCount); - _multi = blockNumber; - return true; - } - bool writeStop() { return true; } - void spiStart() { } - void spiStop() { } - -private: - int _multi; - uint8_t *_data; - uint64_t _cardSizeB; - int _blocks; - int m_errorCode; - int m_status; - int m_type; -#endif -}; -//============================================================================== -/** - * \class SdSpiCardEX - * \brief Extended SD I/O block driver. - */ -class SdSpiCardEX : public SdSpiCard { - public: - /** Initialize the SD card - * - * \param[in] spi SPI driver. - * \param[in] csPin Card chip select pin number. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { - m_curState = IDLE_STATE; - return SdSpiCard::begin(spi, csPin, spiSettings); - } - /** - * Read a 512 byte block from an SD card. - * - * \param[in] block Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t block, uint8_t* dst); - /** End multi-block transfer and go to idle state. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool syncBlocks(); - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t block, const uint8_t* src); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] block Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t block, uint8_t* dst, size_t nb); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb); - - private: - static const uint32_t IDLE_STATE = 0; - static const uint32_t READ_STATE = 1; - static const uint32_t WRITE_STATE = 2; - uint32_t m_curBlock; - uint8_t m_curState; -}; - -}; // namespace sdfat - -#endif // SdSpiCard_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCardEX.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCardEX.cpp deleted file mode 100644 index 0e34efe1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdSpiCardEX.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiCard.h" - -namespace sdfat { - -bool SdSpiCardEX::readBlock(uint32_t block, uint8_t* dst) { - if (m_curState != READ_STATE || block != m_curBlock) { - if (!syncBlocks()) { - return false; - } - if (!SdSpiCard::readStart(block)) { - return false; - } - m_curBlock = block; - m_curState = READ_STATE; - } - if (!SdSpiCard::readData(dst)) { - return false; - } - m_curBlock++; - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::readBlocks(uint32_t block, uint8_t* dst, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!readBlock(block + i, dst + i*512UL)) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::syncBlocks() { - if (m_curState == READ_STATE) { - m_curState = IDLE_STATE; - if (!SdSpiCard::readStop()) { - return false; - } - } else if (m_curState == WRITE_STATE) { - m_curState = IDLE_STATE; - if (!SdSpiCard::writeStop()) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::writeBlock(uint32_t block, const uint8_t* src) { - if (m_curState != WRITE_STATE || m_curBlock != block) { - if (!syncBlocks()) { - return false; - } - if (!SdSpiCard::writeStart(block)) { - return false; - } - m_curBlock = block; - m_curState = WRITE_STATE; - } - if (!SdSpiCard::writeData(src)) { - return false; - } - m_curBlock++; - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::writeBlocks(uint32_t block, - const uint8_t* src, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!writeBlock(block + i, src + i*512UL)) { - return false; - } - } - return true; -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioCard.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioCard.h deleted file mode 100644 index 376b242e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioCard.h +++ /dev/null @@ -1,309 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdioCard_h -#define SdioCard_h -#include "SysCall.h" -#include "BlockDriver.h" - -namespace sdfat { - -/** - * \class SdioCard - * \brief Raw SDIO access to SD and SDHC flash memory cards. - */ -class SdioCard : public BaseBlockDriver { - public: - /** Initialize the SD card. - * \return true for success else false. - */ - bool begin(); - /** - * Determine the size of an SD flash memory card. - * - * \return The number of 512 byte sectors in the card - * or zero if an error occurs. - */ - uint32_t cardCapacity(); - /** \return Card size in sectors or zero if an error occurs. */ - uint32_t cardSize() {return cardCapacity();} - /** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool erase(uint32_t firstBlock, uint32_t lastBlock); - /** - * \return code for the last error. See SdInfo.h for a list of error codes. - */ - uint8_t errorCode(); - /** \return error data for last error. */ - uint32_t errorData(); - /** \return error line for last error. Tmp function for debug. */ - uint32_t errorLine(); - /** - * Check for busy with CMD13. - * - * \return true if busy else false. - */ - bool isBusy(); - /** \return the SD clock frequency in kHz. */ - uint32_t kHzSdClk(); - /** - * Read a 512 byte block from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t lba, uint8_t* dst); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t lba, uint8_t* dst, size_t nb); - /** - * Read a card's CID register. The CID contains card identification - * information such as Manufacturer ID, Product name, Product serial - * number and Manufacturing date. - * - * \param[out] cid pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCID(void* cid); - /** - * Read a card's CSD register. The CSD contains Card-Specific Data that - * provides information regarding access to the card's contents. - * - * \param[out] csd pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCSD(void* csd); - /** Read one data block in a multiple block read sequence - * - * \param[out] dst Pointer to the location for the data to be read. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readData(uint8_t *dst); - /** Read OCR register. - * - * \param[out] ocr Value of OCR register. - * \return true for success else false. - */ - bool readOCR(uint32_t* ocr); - /** Start a read multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * - * \note This function is used with readData() and readStop() for optimized - * multiple block reads. SPI chipSelect must be low for the entire sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStart(uint32_t lba); - /** Start a read multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * \param[in] count Maximum block count. - * \note This function is used with readData() and readStop() for optimized - * multiple block reads. SPI chipSelect must be low for the entire sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStart(uint32_t lba, uint32_t count); - /** End a read multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStop(); - /** \return success if sync successful. Not for user apps. */ - bool syncBlocks(); - /** Return the card type: SD V1, SD V2 or SDHC - * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. - */ - uint8_t type(); - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t lba, const uint8_t* src); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t lba, const uint8_t* src, size_t nb); - /** Write one data block in a multiple block write sequence. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeData(const uint8_t* src); - /** Start a write multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t lba); - /** Start a write multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * \param[in] count Maximum block count. - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t lba, uint32_t count); - - /** End a write multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStop(); -}; -//============================================================================== -/** - * \class SdioCardEX - * \brief Extended SD I/O block driver. - */ -class SdioCardEX : public SdioCard { - public: - /** Initialize the SD card - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool begin() { - m_curState = IDLE_STATE; - return SdioCard::begin(); - } - /** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool erase(uint32_t firstBlock, uint32_t lastBlock) { - return syncBlocks() && SdioCard::erase(firstBlock, lastBlock); - } - /** - * Read a 512 byte block from an SD card. - * - * \param[in] block Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t block, uint8_t* dst); - /** End multi-block transfer and go to idle state. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool syncBlocks(); - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t block, const uint8_t* src); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] block Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t block, uint8_t* dst, size_t nb); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb); - - private: - static const uint32_t IDLE_STATE = 0; - static const uint32_t READ_STATE = 1; - static const uint32_t WRITE_STATE = 2; - uint32_t m_curLba; - uint32_t m_limitLba; - uint8_t m_curState; -}; - -}; // namespace sdfat - -#endif // SdioCard_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioCardEX.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioCardEX.cpp deleted file mode 100644 index 9f98c8a7..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioCardEX.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdioCard.h" - -namespace sdfat { - -// limit of K66 due to errata KINETIS_K_0N65N. -const uint32_t MAX_SDHC_COUNT = 0XFFFF; - -// Max RU is 1024 blocks. -const uint32_t RU_MASK = 0X03FF; - -bool SdioCardEX::readBlock(uint32_t lba, uint8_t* dst) { - if (m_curState != READ_STATE || lba != m_curLba) { - if (!syncBlocks()) { - return false; - } - m_limitLba = (lba + MAX_SDHC_COUNT) & ~RU_MASK; - if (!SdioCard::readStart(lba, m_limitLba - lba)) { - return false; - } - m_curLba = lba; - m_curState = READ_STATE; - } - if (!SdioCard::readData(dst)) { - return false; - } - m_curLba++; - if (m_curLba >= m_limitLba) { - m_curState = IDLE_STATE; - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::readBlocks(uint32_t lba, uint8_t* dst, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!readBlock(lba + i, dst + i*512UL)) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::syncBlocks() { - if (m_curState == READ_STATE) { - m_curState = IDLE_STATE; - if (!SdioCard::readStop()) { - return false; - } - } else if (m_curState == WRITE_STATE) { - m_curState = IDLE_STATE; - if (!SdioCard::writeStop()) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::writeBlock(uint32_t lba, const uint8_t* src) { - if (m_curState != WRITE_STATE || m_curLba != lba) { - if (!syncBlocks()) { - return false; - } - m_limitLba = (lba + MAX_SDHC_COUNT) & ~RU_MASK; - if (!SdioCard::writeStart(lba , m_limitLba - lba)) { - return false; - } - m_curLba = lba; - m_curState = WRITE_STATE; - } - if (!SdioCard::writeData(src)) { - return false; - } - m_curLba++; - if (m_curLba >= m_limitLba) { - m_curState = IDLE_STATE; - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::writeBlocks(uint32_t lba, const uint8_t* src, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!writeBlock(lba + i, src + i*512UL)) { - return false; - } - } - return true; -} - -}; // namespace sdfat diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioTeensy.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioTeensy.cpp deleted file mode 100644 index 84095c82..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdCard/SdioTeensy.cpp +++ /dev/null @@ -1,806 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(__MK64FX512__) || defined(__MK66FX1M0__) -#include "SdioCard.h" - -namespace sdfat { - -//============================================================================== -#define SDHC_PROCTL_DTW_4BIT 0x01 -const uint32_t FIFO_WML = 16; -const uint32_t CMD8_RETRIES = 10; -const uint32_t BUSY_TIMEOUT_MICROS = 500000; -//============================================================================== -const uint32_t SDHC_IRQSTATEN_MASK = - SDHC_IRQSTATEN_DMAESEN | SDHC_IRQSTATEN_AC12ESEN | - SDHC_IRQSTATEN_DEBESEN | SDHC_IRQSTATEN_DCESEN | - SDHC_IRQSTATEN_DTOESEN | SDHC_IRQSTATEN_CIESEN | - SDHC_IRQSTATEN_CEBESEN | SDHC_IRQSTATEN_CCESEN | - SDHC_IRQSTATEN_CTOESEN | SDHC_IRQSTATEN_DINTSEN | - SDHC_IRQSTATEN_TCSEN | SDHC_IRQSTATEN_CCSEN; - -const uint32_t SDHC_IRQSTAT_CMD_ERROR = - SDHC_IRQSTAT_CIE | SDHC_IRQSTAT_CEBE | - SDHC_IRQSTAT_CCE | SDHC_IRQSTAT_CTOE; - -const uint32_t SDHC_IRQSTAT_DATA_ERROR = - SDHC_IRQSTAT_AC12E | SDHC_IRQSTAT_DEBE | - SDHC_IRQSTAT_DCE | SDHC_IRQSTAT_DTOE; - -const uint32_t SDHC_IRQSTAT_ERROR = - SDHC_IRQSTAT_DMAE | SDHC_IRQSTAT_CMD_ERROR | - SDHC_IRQSTAT_DATA_ERROR; - -const uint32_t SDHC_IRQSIGEN_MASK = - SDHC_IRQSIGEN_DMAEIEN | SDHC_IRQSIGEN_AC12EIEN | - SDHC_IRQSIGEN_DEBEIEN | SDHC_IRQSIGEN_DCEIEN | - SDHC_IRQSIGEN_DTOEIEN | SDHC_IRQSIGEN_CIEIEN | - SDHC_IRQSIGEN_CEBEIEN | SDHC_IRQSIGEN_CCEIEN | - SDHC_IRQSIGEN_CTOEIEN | SDHC_IRQSIGEN_TCIEN; -//============================================================================= -const uint32_t CMD_RESP_NONE = SDHC_XFERTYP_RSPTYP(0); - -const uint32_t CMD_RESP_R1 = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(2); - -const uint32_t CMD_RESP_R1b = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(3); - -const uint32_t CMD_RESP_R2 = SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(1); - -const uint32_t CMD_RESP_R3 = SDHC_XFERTYP_RSPTYP(2); - -const uint32_t CMD_RESP_R6 = CMD_RESP_R1; - -const uint32_t CMD_RESP_R7 = CMD_RESP_R1; - -const uint32_t DATA_READ = SDHC_XFERTYP_DTDSEL | SDHC_XFERTYP_DPSEL; - -const uint32_t DATA_READ_DMA = DATA_READ | SDHC_XFERTYP_DMAEN; - -const uint32_t DATA_READ_MULTI_DMA = DATA_READ_DMA | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; - -const uint32_t DATA_READ_MULTI_PGM = DATA_READ | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN | SDHC_XFERTYP_AC12EN; - -const uint32_t DATA_WRITE_DMA = SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_DMAEN; - -const uint32_t DATA_WRITE_MULTI_DMA = DATA_WRITE_DMA | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; - -const uint32_t DATA_WRITE_MULTI_PGM = SDHC_XFERTYP_DPSEL | - SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN | SDHC_XFERTYP_AC12EN; - -const uint32_t ACMD6_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD6) | CMD_RESP_R1; - -const uint32_t ACMD41_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD41) | CMD_RESP_R3; - -const uint32_t CMD0_XFERTYP = SDHC_XFERTYP_CMDINX(CMD0) | CMD_RESP_NONE; - -const uint32_t CMD2_XFERTYP = SDHC_XFERTYP_CMDINX(CMD2) | CMD_RESP_R2; - -const uint32_t CMD3_XFERTYP = SDHC_XFERTYP_CMDINX(CMD3) | CMD_RESP_R6; - -const uint32_t CMD6_XFERTYP = SDHC_XFERTYP_CMDINX(CMD6) | CMD_RESP_R1 | - DATA_READ_DMA; - -const uint32_t CMD7_XFERTYP = SDHC_XFERTYP_CMDINX(CMD7) | CMD_RESP_R1b; - -const uint32_t CMD8_XFERTYP = SDHC_XFERTYP_CMDINX(CMD8) | CMD_RESP_R7; - -const uint32_t CMD9_XFERTYP = SDHC_XFERTYP_CMDINX(CMD9) | CMD_RESP_R2; - -const uint32_t CMD10_XFERTYP = SDHC_XFERTYP_CMDINX(CMD10) | CMD_RESP_R2; - -const uint32_t CMD12_XFERTYP = SDHC_XFERTYP_CMDINX(CMD12) | CMD_RESP_R1b | - SDHC_XFERTYP_CMDTYP(3); - -const uint32_t CMD13_XFERTYP = SDHC_XFERTYP_CMDINX(CMD13) | CMD_RESP_R1; - -const uint32_t CMD17_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD17) | CMD_RESP_R1 | - DATA_READ_DMA; - -const uint32_t CMD18_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_DMA; - -const uint32_t CMD18_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_PGM; - -const uint32_t CMD24_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD24) | CMD_RESP_R1 | - DATA_WRITE_DMA; - -const uint32_t CMD25_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_DMA; - -const uint32_t CMD25_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_PGM; - -const uint32_t CMD32_XFERTYP = SDHC_XFERTYP_CMDINX(CMD32) | CMD_RESP_R1; - -const uint32_t CMD33_XFERTYP = SDHC_XFERTYP_CMDINX(CMD33) | CMD_RESP_R1; - -const uint32_t CMD38_XFERTYP = SDHC_XFERTYP_CMDINX(CMD38) | CMD_RESP_R1b; - -const uint32_t CMD55_XFERTYP = SDHC_XFERTYP_CMDINX(CMD55) | CMD_RESP_R1; - -//============================================================================= -static bool cardCommand(uint32_t xfertyp, uint32_t arg); -static void enableGPIO(bool enable); -static void enableDmaIrs(); -static void initSDHC(); -static bool isBusyCMD13(); -static bool isBusyCommandComplete(); -static bool isBusyCommandInhibit(); -static bool readReg16(uint32_t xfertyp, void* data); -static void setSdclk(uint32_t kHzMax); -static bool yieldTimeout(bool (*fcn)()); -static bool waitDmaStatus(); -static bool waitTimeout(bool (*fcn)()); -//----------------------------------------------------------------------------- -static bool (*m_busyFcn)() = 0; -static bool m_initDone = false; -static bool m_version2; -static bool m_highCapacity; -static uint8_t m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED; -static uint32_t m_errorLine = 0; -static uint32_t m_rca; -static volatile bool m_dmaBusy = false; -static volatile uint32_t m_irqstat; -static uint32_t m_sdClkKhz = 0; -static uint32_t m_ocr; -static cid_t m_cid; -static csd_t m_csd; -//============================================================================= -#define USE_DEBUG_MODE 0 -#if USE_DEBUG_MODE -#define DBG_IRQSTAT() if (SDHC_IRQSTAT) {Serial.print(__LINE__);\ - Serial.print(" IRQSTAT "); Serial.println(SDHC_IRQSTAT, HEX);} - -static void printRegs(uint32_t line) { - Serial.print(line); - Serial.print(" PRSSTAT "); - Serial.print(SDHC_PRSSTAT, HEX); - Serial.print(" PROCTL "); - Serial.print(SDHC_PROCTL, HEX); - Serial.print(" IRQSTAT "); - Serial.print(SDHC_IRQSTAT, HEX); - Serial.print(" m_irqstat "); - Serial.println(m_irqstat, HEX); -} -#else // USE_DEBUG_MODE -#define DBG_IRQSTAT() -#endif // USE_DEBUG_MODE -//============================================================================= -// Error function and macro. -#define sdError(code) setSdErrorCode(code, __LINE__) -inline bool setSdErrorCode(uint8_t code, uint32_t line) { - m_errorCode = code; - m_errorLine = line; - return false; // setSdErrorCode -} -//============================================================================= -// ISR -void sdhc_isr() { - SDHC_IRQSIGEN = 0; - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - m_dmaBusy = false; -} -//============================================================================= -// Static functions. -static bool cardAcmd(uint32_t rca, uint32_t xfertyp, uint32_t arg) { - return cardCommand(CMD55_XFERTYP, rca) && cardCommand (xfertyp, arg); -} -//----------------------------------------------------------------------------- -static bool cardCommand(uint32_t xfertyp, uint32_t arg) { - DBG_IRQSTAT(); - if (waitTimeout(isBusyCommandInhibit)) { - return false; // Caller will set errorCode. - } - SDHC_CMDARG = arg; - SDHC_XFERTYP = xfertyp; - if (waitTimeout(isBusyCommandComplete)) { - return false; // Caller will set errorCode. - } - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - - return (m_irqstat & SDHC_IRQSTAT_CC) && - !(m_irqstat & SDHC_IRQSTAT_CMD_ERROR); -} -//----------------------------------------------------------------------------- -static bool cardCMD6(uint32_t arg, uint8_t* status) { - // CMD6 returns 64 bytes. - if (waitTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - enableDmaIrs(); - SDHC_DSADDR = (uint32_t)status; - SDHC_CMDARG = arg; - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(64); - SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - SDHC_XFERTYP = CMD6_XFERTYP; - - if (!waitDmaStatus()) { - return sdError(SD_CARD_ERROR_CMD6); - } - return true; -} -//----------------------------------------------------------------------------- -static void enableGPIO(bool enable) { - const uint32_t PORT_CLK = PORT_PCR_MUX(4) | PORT_PCR_DSE; - const uint32_t PORT_CMD_DATA = PORT_CLK | PORT_PCR_PS | PORT_PCR_PE; - - PORTE_PCR0 = enable ? PORT_CMD_DATA : 0; // SDHC_D1 - PORTE_PCR1 = enable ? PORT_CMD_DATA : 0; // SDHC_D0 - PORTE_PCR2 = enable ? PORT_CLK : 0; // SDHC_CLK - PORTE_PCR3 = enable ? PORT_CMD_DATA : 0; // SDHC_CMD - PORTE_PCR4 = enable ? PORT_CMD_DATA : 0; // SDHC_D3 - PORTE_PCR5 = enable ? PORT_CMD_DATA : 0; // SDHC_D2 -} -//----------------------------------------------------------------------------- -static void enableDmaIrs() { - m_dmaBusy = true; - m_irqstat = 0; -} -//----------------------------------------------------------------------------- -static void initSDHC() { -#ifdef HAS_KINETIS_MPU - // Allow SDHC Bus Master access. - MPU_RGDAAC0 |= 0x0C000000; -#endif - // Enable SDHC clock. - SIM_SCGC3 |= SIM_SCGC3_SDHC; - - // Disable GPIO clock. - enableGPIO(false); - - // Reset SDHC. Use default Water Mark Level of 16. - SDHC_SYSCTL = SDHC_SYSCTL_RSTA; - while (SDHC_SYSCTL & SDHC_SYSCTL_RSTA) { - } - // Set initial SCK rate. - setSdclk(400); - - enableGPIO(true); - - // Enable desired IRQSTAT bits. - SDHC_IRQSTATEN = SDHC_IRQSTATEN_MASK; - - NVIC_SET_PRIORITY(IRQ_SDHC, 6*16); - NVIC_ENABLE_IRQ(IRQ_SDHC); - - // Send 80 clocks to card. - SDHC_SYSCTL |= SDHC_SYSCTL_INITA; - while (SDHC_SYSCTL & SDHC_SYSCTL_INITA) { - } -} -//----------------------------------------------------------------------------- -static bool isBusyCMD13() { - if (!cardCommand(CMD13_XFERTYP, m_rca)) { - // Caller will timeout. - return true; - } - return !(SDHC_CMDRSP0 & CARD_STATUS_READY_FOR_DATA); -} -//----------------------------------------------------------------------------- -static bool isBusyCommandComplete() { - return !(SDHC_IRQSTAT &(SDHC_IRQSTAT_CC | SDHC_IRQSTAT_CMD_ERROR)); -} -//----------------------------------------------------------------------------- -static bool isBusyCommandInhibit() { - return SDHC_PRSSTAT & SDHC_PRSSTAT_CIHB; -} -//----------------------------------------------------------------------------- -static bool isBusyDMA() { - return m_dmaBusy; -} -//----------------------------------------------------------------------------- -static bool isBusyFifoRead() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BREN); -} -//----------------------------------------------------------------------------- -static bool isBusyFifoWrite() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN); -} -//----------------------------------------------------------------------------- -static bool isBusyTransferComplete() { - return !(SDHC_IRQSTAT & (SDHC_IRQSTAT_TC | SDHC_IRQSTAT_ERROR)); -} -//----------------------------------------------------------------------------- -static bool rdWrBlocks(uint32_t xfertyp, - uint32_t lba, uint8_t* buf, size_t n) { - if ((3 & (uint32_t)buf) || n == 0) { - return sdError(SD_CARD_ERROR_DMA); - } - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - enableDmaIrs(); - SDHC_DSADDR = (uint32_t)buf; - SDHC_CMDARG = m_highCapacity ? lba : 512*lba; - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(n) | SDHC_BLKATTR_BLKSIZE(512); - SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - SDHC_XFERTYP = xfertyp; - - return waitDmaStatus(); -} -//----------------------------------------------------------------------------- -// Read 16 byte CID or CSD register. -static bool readReg16(uint32_t xfertyp, void* data) { - uint8_t* d = reinterpret_cast(data); - if (!cardCommand(xfertyp, m_rca)) { - return false; // Caller will set errorCode. - } - uint32_t sr[] = {SDHC_CMDRSP0, SDHC_CMDRSP1, SDHC_CMDRSP2, SDHC_CMDRSP3}; - for (int i = 0; i < 15; i++) { - d[14 - i] = sr[i/4] >> 8*(i%4); - } - d[15] = 0; - return true; -} -//----------------------------------------------------------------------------- -static void setSdclk(uint32_t kHzMax) { - const uint32_t DVS_LIMIT = 0X10; - const uint32_t SDCLKFS_LIMIT = 0X100; - uint32_t dvs = 1; - uint32_t sdclkfs = 1; - uint32_t maxSdclk = 1000*kHzMax; - - while ((F_CPU/(sdclkfs*DVS_LIMIT) > maxSdclk) && (sdclkfs < SDCLKFS_LIMIT)) { - sdclkfs <<= 1; - } - while ((F_CPU/(sdclkfs*dvs) > maxSdclk) && (dvs < DVS_LIMIT)) { - dvs++; - } - m_sdClkKhz = F_CPU/(1000*sdclkfs*dvs); - sdclkfs >>= 1; - dvs--; - - // Disable SDHC clock. - SDHC_SYSCTL &= ~SDHC_SYSCTL_SDCLKEN; - - // Change dividers. - uint32_t sysctl = SDHC_SYSCTL & ~(SDHC_SYSCTL_DTOCV_MASK - | SDHC_SYSCTL_DVS_MASK | SDHC_SYSCTL_SDCLKFS_MASK); - - SDHC_SYSCTL = sysctl | SDHC_SYSCTL_DTOCV(0x0E) | SDHC_SYSCTL_DVS(dvs) - | SDHC_SYSCTL_SDCLKFS(sdclkfs); - - // Wait until the SDHC clock is stable. - while (!(SDHC_PRSSTAT & SDHC_PRSSTAT_SDSTB)) { - } - // Enable the SDHC clock. - SDHC_SYSCTL |= SDHC_SYSCTL_SDCLKEN; -} -//----------------------------------------------------------------------------- -static bool transferStop() { - DBG_IRQSTAT(); - - if (!cardCommand(CMD12_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD12); - } - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - // Save registers before reset DAT lines. - uint32_t irqsststen = SDHC_IRQSTATEN; - uint32_t proctl = SDHC_PROCTL & ~SDHC_PROCTL_SABGREQ; - - // Do reset to clear CDIHB. Should be a better way! - SDHC_SYSCTL |= SDHC_SYSCTL_RSTD; - - // Restore registers. - SDHC_IRQSTATEN = irqsststen; - SDHC_PROCTL = proctl; - - return true; -} -//----------------------------------------------------------------------------- -// Return true if timeout occurs. -static bool yieldTimeout(bool (*fcn)()) { - m_busyFcn = fcn; - uint32_t m = micros(); - while (fcn()) { - if ((micros() - m) > BUSY_TIMEOUT_MICROS) { - m_busyFcn = 0; - return true; - } - yield(); - } - m_busyFcn = 0; - return false; // Caller will set errorCode. -} -//----------------------------------------------------------------------------- -static bool waitDmaStatus() { - if (yieldTimeout(isBusyDMA)) { - return false; // Caller will set errorCode. - } - return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); -} -//----------------------------------------------------------------------------- -// Return true if timeout occurs. -static bool waitTimeout(bool (*fcn)()) { - uint32_t m = micros(); - while (fcn()) { - if ((micros() - m) > BUSY_TIMEOUT_MICROS) { - return true; - } - } - return false; // Caller will set errorCode. -} -//============================================================================= -bool SdioCard::begin() { - uint32_t kHzSdClk; - uint32_t arg; - m_initDone = false; - m_errorCode = SD_CARD_ERROR_NONE; - m_highCapacity = false; - m_version2 = false; - - // initialize controller. - initSDHC(); - - if (!cardCommand(CMD0_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD0); - } - // Try several times for case of reset delay. - for (uint32_t i = 0; i < CMD8_RETRIES; i++) { - if (cardCommand(CMD8_XFERTYP, 0X1AA)) { - if (SDHC_CMDRSP0 != 0X1AA) { - return sdError(SD_CARD_ERROR_CMD8); - } - m_version2 = true; - break; - } - } - arg = m_version2 ? 0X40300000 : 0x00300000; - uint32_t m = micros(); - do { - if (!cardAcmd(0, ACMD41_XFERTYP, arg) || - ((micros() - m) > BUSY_TIMEOUT_MICROS)) { - return sdError(SD_CARD_ERROR_ACMD41); - } - } while ((SDHC_CMDRSP0 & 0x80000000) == 0); - - m_ocr = SDHC_CMDRSP0; - if (SDHC_CMDRSP0 & 0x40000000) { - // Is high capacity. - m_highCapacity = true; - } - if (!cardCommand(CMD2_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD2); - } - if (!cardCommand(CMD3_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD3); - } - m_rca = SDHC_CMDRSP0 & 0xFFFF0000; - - if (!readReg16(CMD9_XFERTYP, &m_csd)) { - return sdError(SD_CARD_ERROR_CMD9); - } - if (!readReg16(CMD10_XFERTYP, &m_cid)) { - return sdError(SD_CARD_ERROR_CMD10); - } - if (!cardCommand(CMD7_XFERTYP, m_rca)) { - return sdError(SD_CARD_ERROR_CMD7); - } - // Set card to bus width four. - if (!cardAcmd(m_rca, ACMD6_XFERTYP, 2)) { - return sdError(SD_CARD_ERROR_ACMD6); - } - // Set SDHC to bus width four. - SDHC_PROCTL &= ~SDHC_PROCTL_DTW_MASK; - SDHC_PROCTL |= SDHC_PROCTL_DTW(SDHC_PROCTL_DTW_4BIT); - - SDHC_WML = SDHC_WML_RDWML(FIFO_WML) | SDHC_WML_WRWML(FIFO_WML); - - // Determine if High Speed mode is supported and set frequency. - uint8_t status[64]; - if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && - cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { - kHzSdClk = 50000; - } else { - kHzSdClk = 25000; - } - // disable GPIO - enableGPIO(false); - - // Set the SDHC SCK frequency. - setSdclk(kHzSdClk); - - // enable GPIO - enableGPIO(true); - m_initDone = true; - return true; -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::cardCapacity() { - return sdCardCapacity(&m_csd); -} -//----------------------------------------------------------------------------- -bool SdioCard::erase(uint32_t firstBlock, uint32_t lastBlock) { - // check for single block erase - if (!m_csd.v1.erase_blk_en) { - // erase size mask - uint8_t m = (m_csd.v1.sector_size_high << 1) | m_csd.v1.sector_size_low; - if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) { - // error card can't erase specified area - return sdError(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); - } - } - if (!m_highCapacity) { - firstBlock <<= 9; - lastBlock <<= 9; - } - if (!cardCommand(CMD32_XFERTYP, firstBlock)) { - return sdError(SD_CARD_ERROR_CMD32); - } - if (!cardCommand(CMD33_XFERTYP, lastBlock)) { - return sdError(SD_CARD_ERROR_CMD33); - } - if (!cardCommand(CMD38_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD38); - } - if (waitTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_ERASE_TIMEOUT); - } - return true; -} -//----------------------------------------------------------------------------- -uint8_t SdioCard::errorCode() { - return m_errorCode; -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::errorData() { - return m_irqstat; -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::errorLine() { - return m_errorLine; -} -//----------------------------------------------------------------------------- -bool SdioCard::isBusy() { - return m_busyFcn ? m_busyFcn() : m_initDone && isBusyCMD13(); -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::kHzSdClk() { - return m_sdClkKhz; -} -//----------------------------------------------------------------------------- -bool SdioCard::readBlock(uint32_t lba, uint8_t* buf) { - uint8_t aligned[512]; - - uint8_t* ptr = (uint32_t)buf & 3 ? aligned : buf; - - if (!rdWrBlocks(CMD17_DMA_XFERTYP, lba, ptr, 1)) { - return sdError(SD_CARD_ERROR_CMD18); - } - if (ptr != buf) { - memcpy(buf, aligned, 512); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readBlocks(uint32_t lba, uint8_t* buf, size_t n) { - if ((uint32_t)buf & 3) { - for (size_t i = 0; i < n; i++, lba++, buf += 512) { - if (!readBlock(lba, buf)) { - return false; // readBlock will set errorCode. - } - } - return true; - } - if (!rdWrBlocks(CMD18_DMA_XFERTYP, lba, buf, n)) { - return sdError(SD_CARD_ERROR_CMD18); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readCID(void* cid) { - memcpy(cid, &m_cid, 16); - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readCSD(void* csd) { - memcpy(csd, &m_csd, 16); - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readData(uint8_t *dst) { - DBG_IRQSTAT(); - uint32_t *p32 = reinterpret_cast(dst); - - if (!(SDHC_PRSSTAT & SDHC_PRSSTAT_RTA)) { - SDHC_PROCTL &= ~SDHC_PROCTL_SABGREQ; - if ((SDHC_BLKATTR & 0XFFFF0000) == 0X10000) { - // Don't stop at block gap if last block. Allows auto CMD12. - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - } else { - noInterrupts(); - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - interrupts(); - } - } - if (waitTimeout(isBusyFifoRead)) { - return sdError(SD_CARD_ERROR_READ_FIFO); - } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { - while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BREN)) { - } - for (uint32_t i = 0; i < FIFO_WML; i++) { - p32[i] = SDHC_DATPORT; - } - p32 += FIFO_WML; - } - if (waitTimeout(isBusyTransferComplete)) { - return sdError(SD_CARD_ERROR_READ_TIMEOUT); - } - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); -} -//----------------------------------------------------------------------------- -bool SdioCard::readOCR(uint32_t* ocr) { - *ocr = m_ocr; - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readStart(uint32_t lba) { - // K66/K65 Errata - SDHC: Does not support Infinite Block Transfer Mode. - return sdError(SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED); -} -//----------------------------------------------------------------------------- -// SDHC will do Auto CMD12 after count blocks. -bool SdioCard::readStart(uint32_t lba, uint32_t count) { - DBG_IRQSTAT(); - if (count > 0XFFFF) { - return sdError(SD_CARD_ERROR_READ_START); - } - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - if (count > 1) { - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - } - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(count) | SDHC_BLKATTR_BLKSIZE(512); - if (!cardCommand(CMD18_PGM_XFERTYP, m_highCapacity ? lba : 512*lba)) { - return sdError(SD_CARD_ERROR_CMD18); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readStop() { - return transferStop(); -} -//----------------------------------------------------------------------------- -bool SdioCard::syncBlocks() { - return true; -} -//----------------------------------------------------------------------------- -uint8_t SdioCard::type() { - return m_version2 ? m_highCapacity ? - SD_CARD_TYPE_SDHC : SD_CARD_TYPE_SD2 : SD_CARD_TYPE_SD1; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf) { - uint8_t *ptr; - uint8_t aligned[512]; - if (3 & (uint32_t)buf) { - ptr = aligned; - memcpy(aligned, buf, 512); - } else { - ptr = const_cast(buf); - } - if (!rdWrBlocks(CMD24_DMA_XFERTYP, lba, ptr, 1)) { - return sdError(SD_CARD_ERROR_CMD24); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) { - uint8_t* ptr = const_cast(buf); - if (3 & (uint32_t)ptr) { - for (size_t i = 0; i < n; i++, lba++, ptr += 512) { - if (!writeBlock(lba, ptr)) { - return false; // writeBlock will set errorCode. - } - } - return true; - } - if (!rdWrBlocks(CMD25_DMA_XFERTYP, lba, ptr, n)) { - return sdError(SD_CARD_ERROR_CMD25); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeData(const uint8_t* src) { - DBG_IRQSTAT(); - const uint32_t* p32 = reinterpret_cast(src); - - if (!(SDHC_PRSSTAT & SDHC_PRSSTAT_WTA)) { - SDHC_PROCTL &= ~SDHC_PROCTL_SABGREQ; - // Don't stop at block gap if last block. Allows auto CMD12. - if ((SDHC_BLKATTR & 0XFFFF0000) == 0X10000) { - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - } else { - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - } - } - if (waitTimeout(isBusyFifoWrite)) { - return sdError(SD_CARD_ERROR_WRITE_FIFO); - } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { - while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN)) { - } - for (uint32_t i = 0; i < FIFO_WML; i++) { - SDHC_DATPORT = p32[i]; - } - p32 += FIFO_WML; - } - if (waitTimeout(isBusyTransferComplete)) { - return sdError(SD_CARD_ERROR_WRITE_TIMEOUT); - } - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); -} -//----------------------------------------------------------------------------- -bool SdioCard::writeStart(uint32_t lba) { - // K66/K65 Errata - SDHC: Does not support Infinite Block Transfer Mode. - return sdError(SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED); -} -//----------------------------------------------------------------------------- -// SDHC will do Auto CMD12 after count blocks. -bool SdioCard::writeStart(uint32_t lba, uint32_t count) { - if (count > 0XFFFF) { - return sdError(SD_CARD_ERROR_WRITE_START); - } - DBG_IRQSTAT(); - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - if (count > 1) { - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - } - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(count) | SDHC_BLKATTR_BLKSIZE(512); - - if (!cardCommand(CMD25_PGM_XFERTYP, m_highCapacity ? lba : 512*lba)) { - return sdError(SD_CARD_ERROR_CMD25); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeStop() { - return transferStop(); -} - -}; // namespace sdfat - -#endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdFat.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdFat.h deleted file mode 100644 index 41f8f93e..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdFat.h +++ /dev/null @@ -1,519 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdFat_h -#define SdFat_h -/** - * \file - * \brief SdFat class - */ -#include "SysCall.h" -#include "BlockDriver.h" -#include "FatLib/FatLib.h" -#include "SdCard/SdioCard.h" -#if INCLUDE_SDIOS -#include "sdios.h" -#endif // INCLUDE_SDIOS - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** SdFat version 1.1.0 */ -#define SD_FAT_VERSION 10100 -#define SD_FAT_VERSION_STR "1.1.0" -//============================================================================== -/** - * \class SdBaseFile - * \brief Class for backward compatibility. - */ -class SdBaseFile : public FatFile { - public: - SdBaseFile() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - SdBaseFile(const char* path, oflag_t oflag) : FatFile(path, oflag) {} -}; -//----------------------------------------------------------------------------- -#if ENABLE_ARDUINO_FEATURES -/** - * \class SdFile - * \brief Class for backward compatibility. - */ -class SdFile : public PrintFile { - public: - SdFile() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - SdFile(const char* path, oflag_t oflag) : PrintFile(path, oflag) {} -}; -#endif // #if ENABLE_ARDUINO_FEATURES -//----------------------------------------------------------------------------- -/** - * \class SdFileSystem - * \brief Virtual base class for %SdFat library. - */ -template -class SdFileSystem : public FatFileSystem { - public: - /** Initialize file system. - * \return true for success else false. - */ - bool begin() { - return FatFileSystem::begin(&m_card); - } - /** \return Pointer to SD card object */ - SdDriverClass *card() { - m_card.syncBlocks(); - return &m_card; - } - /** %Print any SD error code to Serial and halt. */ - void errorHalt() { - errorHalt(&Serial); - } - /** %Print any SD error code and halt. - * - * \param[in] pr Print destination. - */ - void errorHalt(Print* pr) { - errorPrint(pr); - SysCall::halt(); - } - /** %Print msg, any SD error code and halt. - * - * \param[in] msg Message to print. - */ - void errorHalt(char const* msg) { - errorHalt(&Serial, msg); - } - /** %Print msg, any SD error code, and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorHalt(Print* pr, char const* msg) { - errorPrint(pr, msg); - SysCall::halt(); - } - /** %Print any SD error code to Serial */ - void errorPrint() { - errorPrint(&Serial); - } - /** %Print any SD error code. - * \param[in] pr Print device. - */ - void errorPrint(Print* pr) { - if (!cardErrorCode()) { - return; - } - pr->print(F("SD errorCode: 0X")); - pr->print(cardErrorCode(), HEX); - pr->print(F(",0X")); - pr->println(cardErrorData(), HEX); - } - /** %Print msg, any SD error code. - * - * \param[in] msg Message to print. - */ - void errorPrint(const char* msg) { - errorPrint(&Serial, msg); - } - /** %Print msg, any SD error code. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorPrint(Print* pr, char const* msg) { - pr->print(F("error: ")); - pr->println(msg); - errorPrint(pr); - } - /** %Print any SD error code and halt. */ - void initErrorHalt() { - initErrorHalt(&Serial); - } - /** %Print error details and halt after begin fails. - * - * \param[in] pr Print destination. - */ - void initErrorHalt(Print* pr) { - initErrorPrint(pr); - SysCall::halt(); - } - /**Print message, error details, and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorHalt(char const *msg) { - initErrorHalt(&Serial, msg); - } - /**Print message, error details, and halt after begin() fails. - * \param[in] pr Print device. - * \param[in] msg Message to print. - */ - void initErrorHalt(Print* pr, char const *msg) { - pr->println(msg); - initErrorHalt(pr); - } - - /** Print error details after begin() fails. */ - void initErrorPrint() { - initErrorPrint(&Serial); - } - /** Print error details after begin() fails. - * - * \param[in] pr Print destination. - */ - void initErrorPrint(Print* pr) { - if (cardErrorCode()) { - pr->println(F("Can't access SD card. Do not reformat.")); - if (cardErrorCode() == SD_CARD_ERROR_CMD0) { - pr->println(F("No card, wrong chip select pin, or SPI problem?")); - } - errorPrint(pr); - } else if (vol()->fatType() == 0) { - pr->println(F("Invalid format, reformat SD.")); - } else if (!vwd()->isOpen()) { - pr->println(F("Can't open root directory.")); - } else { - pr->println(F("No error found.")); - } - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorPrint(char const *msg) { - initErrorPrint(&Serial, msg); - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void initErrorPrint(Print* pr, char const *msg) { - pr->println(msg); - initErrorPrint(pr); - } -#if defined(ARDUINO) || defined(DOXYGEN) - /** %Print msg, any SD error code, and halt. - * - * \param[in] msg Message to print. - */ - void errorHalt(const __FlashStringHelper* msg) { - errorHalt(&Serial, msg); - } - /** %Print msg, any SD error code, and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorHalt(Print* pr, const __FlashStringHelper* msg) { - errorPrint(pr, msg); - SysCall::halt(); - } - - /** %Print msg, any SD error code. - * - * \param[in] msg Message to print. - */ - void errorPrint(const __FlashStringHelper* msg) { - errorPrint(&Serial, msg); - } - /** %Print msg, any SD error code. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorPrint(Print* pr, const __FlashStringHelper* msg) { - pr->print(F("error: ")); - pr->println(msg); - errorPrint(pr); - } - /**Print message, error details, and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorHalt(const __FlashStringHelper* msg) { - initErrorHalt(&Serial, msg); - } - /**Print message, error details, and halt after begin() fails. - * \param[in] pr Print device for message. - * \param[in] msg Message to print. - */ - void initErrorHalt(Print* pr, const __FlashStringHelper* msg) { - pr->println(msg); - initErrorHalt(pr); - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorPrint(const __FlashStringHelper* msg) { - initErrorPrint(&Serial, msg); - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void initErrorPrint(Print* pr, const __FlashStringHelper* msg) { - pr->println(msg); - initErrorPrint(pr); - } -#endif // defined(ARDUINO) || defined(DOXYGEN) - /** \return The card error code */ - uint8_t cardErrorCode() { - return m_card.errorCode(); - } - /** \return the card error data */ - uint32_t cardErrorData() { - return m_card.errorData(); - } - - protected: - SdDriverClass m_card; -}; -//============================================================================== -/** - * \class SdFat - * \brief Main file system class for %SdFat library. - */ -class SdFat : public SdFileSystem { - public: -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - SdFat() { - m_spi.setPort(nullptr); - } - /** Constructor with SPI port selection. - * \param[in] spiPort SPI port number. - */ - explicit SdFat(SPIClass* spiPort) { - m_spi.setPort(spiPort); - } -#endif // IMPLEMENT_SPI_PORT_SELECTION - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - /** Initialize SD card for diagnostic use only. - * - * \param[in] csPin SD card chip select pin. - * \param[in] settings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool cardBegin(uint8_t csPin = SS, SPISettings settings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, settings); - } - /** Initialize file system for diagnostic use only. - * \return true for success else false. - */ - bool fsBegin() { - return FatFileSystem::begin(card()); - } - - private: - SdFatSpiDriver m_spi; -}; -//============================================================================== -#if ENABLE_SDIO_CLASS || defined(DOXYGEN) -/** - * \class SdFatSdio - * \brief SdFat class using SDIO. - */ -class SdFatSdio : public SdFileSystem { - public: - /** Initialize SD card and file system. - * \return true for success else false. - */ - bool begin() { - return m_card.begin() && SdFileSystem::begin(); - } - /** Initialize SD card for diagnostic use only. - * - * \return true for success else false. - */ - bool cardBegin() { - return m_card.begin(); - } - /** Initialize file system for diagnostic use only. - * \return true for success else false. - */ - bool fsBegin() { - return SdFileSystem::begin(); - } -}; -#if ENABLE_SDIOEX_CLASS || defined(DOXYGEN) -//----------------------------------------------------------------------------- -/** - * \class SdFatSdioEX - * \brief SdFat class using SDIO. - */ -class SdFatSdioEX : public SdFileSystem { - public: - /** Initialize SD card and file system. - * \return true for success else false. - */ - bool begin() { - return m_card.begin() && SdFileSystem::begin(); - } - /** \return Pointer to SD card object */ - SdioCardEX* card() { - return &m_card; - } - /** Initialize SD card for diagnostic use only. - * - * \return true for success else false. - */ - bool cardBegin() { - return m_card.begin(); - } - /** Initialize file system for diagnostic use only. - * \return true for success else false. - */ - bool fsBegin() { - return SdFileSystem::begin(); - } -}; -#endif // ENABLE_SDIOEX_CLASS || defined(DOXYGEN) -#endif // ENABLE_SDIO_CLASS || defined(DOXYGEN) -//============================================================================= -#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -/** - * \class SdFatSoftSpi - * \brief SdFat class using software SPI. - */ -template -class SdFatSoftSpi : public SdFileSystem { - public: - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings ignored for software SPI.. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - private: - SdSpiSoftDriver m_spi; -}; -#endif // #if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -//============================================================================== -#if ENABLE_EXTENDED_TRANSFER_CLASS || defined(DOXYGEN) -/** - * \class SdFatEX - * \brief SdFat class with extended SD I/O. - */ -class SdFatEX : public SdFileSystem { - public: -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - SdFatEX() { - m_spi.setPort(nullptr); - } - /** Constructor with SPI port selection. - * \param[in] spiPort SPI port number. - */ - explicit SdFatEX(SPIClass* spiPort) { - m_spi.setPort(spiPort); - } -#endif // IMPLEMENT_SPI_PORT_SELECTION - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - - private: - SdFatSpiDriver m_spi; -}; -//============================================================================== -#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -/** - * \class SdFatSoftSpiEX - * \brief SdFat class using software SPI and extended SD I/O. - */ -template -class SdFatSoftSpiEX : public SdFileSystem { - public: - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings ignored for software SPI. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - private: - SdSpiSoftDriver m_spi; -}; -#endif // #if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -#endif // ENABLE_EXTENDED_TRANSFER_CLASS || defined(DOXYGEN) -//============================================================================= -/** - * \class Sd2Card - * \brief Raw access to SD and SDHC card using default SPI library. - */ -class Sd2Card : public SdSpiCard { - public: - /** Initialize the SD card. - * \param[in] csPin SD chip select pin. - * \param[in] settings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings settings = SD_SCK_MHZ(50)) { - return SdSpiCard::begin(&m_spi, csPin, settings); - } - private: - SdFatSpiDriver m_spi; -}; - -}; // namespace sdfat - -#endif // SdFat_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdFatConfig.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdFatConfig.h deleted file mode 100644 index d1a9fd2c..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SdFatConfig.h +++ /dev/null @@ -1,262 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief configuration definitions - */ -#ifndef SdFatConfig_h -#define SdFatConfig_h -#include -#include -#ifdef __AVR__ -#include -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** - * Set INCLUDE_SDIOS nonzero to include sdios.h in SdFat.h. - * sdios.h provides C++ style IO Streams. - */ -#ifndef INCLUDE_SDIOS - #define INCLUDE_SDIOS 0 -#endif - -//------------------------------------------------------------------------------ -/** - * Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). - * Long File Name are limited to a maximum length of 255 characters. - * - * This implementation allows 7-bit characters in the range - * 0X20 to 0X7E except the following characters are not allowed: - * - * < (less than) - * > (greater than) - * : (colon) - * " (double quote) - * / (forward slash) - * \ (backslash) - * | (vertical bar or pipe) - * ? (question mark) - * * (asterisk) - * - */ -#ifndef USE_LONG_FILE_NAMES - #define USE_LONG_FILE_NAMES 1 -#endif -//------------------------------------------------------------------------------ -/** - * If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX - * will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, - * the class SdFatSoftSpiEX will be defined. - * - * These classes used extended multi-block SD I/O for better performance. - * the SPI bus may not be shared with other devices in this mode. - */ -#ifndef ENABLE_EXTENDED_TRANSFER_CLASS - #define ENABLE_EXTENDED_TRANSFER_CLASS 0 -#endif -//------------------------------------------------------------------------------ -/** - * If the symbol USE_STANDARD_SPI_LIBRARY is zero, an optimized custom SPI - * driver is used if it exists. If the symbol USE_STANDARD_SPI_LIBRARY is - * one, the standard Arduino SPI.h library is used with SPI. If the symbol - * USE_STANDARD_SPI_LIBRARY is two, the SPI port can be selected with the - * constructors SdFat(SPIClass* spiPort) and SdFatEX(SPIClass* spiPort). - */ -#ifndef USE_STANDARD_SPI_LIBRARY - #define USE_STANDARD_SPI_LIBRARY 0 -#endif -//------------------------------------------------------------------------------ -/** - * If the symbol ENABLE_SOFTWARE_SPI_CLASS is nonzero, the class SdFatSoftSpi - * will be defined. If ENABLE_EXTENDED_TRANSFER_CLASS is also nonzero, - * the class SdFatSoftSpiEX will be defined. - */ -#ifndef ENABLE_SOFTWARE_SPI_CLASS - #define ENABLE_SOFTWARE_SPI_CLASS 0 -#endif -//------------------------------------------------------------------------------ -/** If the symbol USE_FCNTL_H is nonzero, open flags for access modes O_RDONLY, - * O_WRONLY, O_RDWR and the open modifiers O_APPEND, O_CREAT, O_EXCL, O_SYNC - * will be defined by including the system file fcntl.h. - */ -#if defined(__AVR__) -// AVR fcntl.h does not define open flags. -#define USE_FCNTL_H 0 -#elif defined(PLATFORM_ID) -// Particle boards - use fcntl.h. -#define USE_FCNTL_H 1 -#elif defined(__arm__) -// ARM gcc defines open flags. -#define USE_FCNTL_H 1 -#else // defined(__AVR__) -#define USE_FCNTL_H 0 -#endif // defined(__AVR__) -//------------------------------------------------------------------------------ -/** - * If CHECK_FLASH_PROGRAMMING is zero, overlap of single sector flash - * programming and other operations will be allowed for faster write - * performance. - * - * Some cards will not sleep in low power mode unless CHECK_FLASH_PROGRAMMING - * is non-zero. - */ -#ifndef CHECK_FLASH_PROGRAMMING - #define CHECK_FLASH_PROGRAMMING 1 -#endif -//------------------------------------------------------------------------------ -/** - * Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters - * updated. This will increase the speed of the freeClusterCount() call - * after the first call. Extra flash will be required. - */ -#ifndef MAINTAIN_FREE_CLUSTER_COUNT - #define MAINTAIN_FREE_CLUSTER_COUNT 0 -#endif -//------------------------------------------------------------------------------ -/** - * To enable SD card CRC checking set USE_SD_CRC nonzero. - * - * Set USE_SD_CRC to 1 to use a smaller CRC-CCITT function. This function - * is slower for AVR but may be fast for ARM and other processors. - * - * Set USE_SD_CRC to 2 to used a larger table driven CRC-CCITT function. This - * function is faster for AVR but may be slower for ARM and other processors. - */ -#ifndef USE_SD_CRC - #define USE_SD_CRC 0 -#endif -//------------------------------------------------------------------------------ -/** - * Handle Watchdog Timer for WiFi modules. - * - * Yield will be called before accessing the SPI bus if it has been more - * than WDT_YIELD_TIME_MICROS microseconds since the last yield call by SdFat. - */ -#if defined(PLATFORM_ID) || defined(ESP8266) -// If Particle device or ESP8266 call yield. -#define WDT_YIELD_TIME_MICROS 100000 -#else -#define WDT_YIELD_TIME_MICROS 0 -#endif -//------------------------------------------------------------------------------ -/** - * Set FAT12_SUPPORT nonzero to enable use if FAT12 volumes. - * FAT12 has not been well tested and requires additional flash. - */ -#define FAT12_SUPPORT 0 -//------------------------------------------------------------------------------ -/** - * Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor. - * - * Causes use of lots of heap in ARM. - */ -#ifndef DESTRUCTOR_CLOSES_FILE - #define DESTRUCTOR_CLOSES_FILE 0 -#endif -//------------------------------------------------------------------------------ -/** - * Call flush for endl if ENDL_CALLS_FLUSH is nonzero - * - * The standard for iostreams is to call flush. This is very costly for - * SdFat. Each call to flush causes 2048 bytes of I/O to the SD. - * - * SdFat has a single 512 byte buffer for SD I/O so it must write the current - * data block to the SD, read the directory block from the SD, update the - * directory entry, write the directory block to the SD and read the data - * block back into the buffer. - * - * The SD flash memory controller is not designed for this many rewrites - * so performance may be reduced by more than a factor of 100. - * - * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force - * all data to be written to the SD. - */ -#ifndef ENDL_CALLS_FLUSH - #define ENDL_CALLS_FLUSH 0 -#endif -//------------------------------------------------------------------------------ -/** - * Set USE_SEPARATE_FAT_CACHE nonzero to use a second 512 byte cache - * for FAT table entries. This improves performance for large writes - * that are not a multiple of 512 bytes. - */ -#ifdef __arm__ -#define USE_SEPARATE_FAT_CACHE 1 -#else // __arm__ -#define USE_SEPARATE_FAT_CACHE 0 -#endif // __arm__ -//------------------------------------------------------------------------------ -/** - * Set USE_MULTI_BLOCK_IO nonzero to use multi-block SD read/write. - * - * Don't use mult-block read/write on small AVR boards. - */ -#if defined(RAMEND) && RAMEND < 3000 -#define USE_MULTI_BLOCK_IO 0 -#else // RAMEND -#define USE_MULTI_BLOCK_IO 1 -#endif // RAMEND -//----------------------------------------------------------------------------- -/** Enable SDIO driver if available. */ -#if defined(__MK64FX512__) || defined(__MK66FX1M0__) -#define ENABLE_SDIO_CLASS 1 -#define ENABLE_SDIOEX_CLASS 1 -#else // ENABLE_SDIO_CLASS -#define ENABLE_SDIO_CLASS 0 -#endif // ENABLE_SDIO_CLASS -//------------------------------------------------------------------------------ -/** - * Determine the default SPI configuration. - */ -#if defined(__STM32F1__) || defined(__STM32F4__) || defined(PLATFORM_ID) -// has multiple SPI ports -#define SD_HAS_CUSTOM_SPI 2 -#elif defined(__AVR__)\ - || defined(__SAM3X8E__) || defined(__SAM3X8H__)\ - || (defined(__arm__) && defined(CORE_TEENSY))\ - || defined(ESP8266) -#define SD_HAS_CUSTOM_SPI 1 -#else // SD_HAS_CUSTOM_SPI -// Use standard SPI library. -#define SD_HAS_CUSTOM_SPI 0 -#endif // SD_HAS_CUSTOM_SPI -//------------------------------------------------------------------------------ -/** - * Check if API to select HW SPI port is needed. - */ -#if USE_STANDARD_SPI_LIBRARY > 1 || SD_HAS_CUSTOM_SPI > 1 -#define IMPLEMENT_SPI_PORT_SELECTION 1 -#else // IMPLEMENT_SPI_PORT_SELECTION -#define IMPLEMENT_SPI_PORT_SELECTION 0 -#endif // IMPLEMENT_SPI_PORT_SELECTION - -#ifdef HOST_MOCK -#undef INCLUDE_SDIOS -#define INCLUDE_SDIOS 0 -#undef SS -#define SS 0 -#endif - -#endif // SdFatConfig_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/DigitalPin.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/DigitalPin.h deleted file mode 100644 index 0b050010..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/DigitalPin.h +++ /dev/null @@ -1,398 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * @file - * @brief Fast Digital Pin functions - * - * @defgroup digitalPin Fast Pin I/O - * @details Fast Digital I/O functions and template class. - * @{ - */ -#ifndef DigitalPin_h -#define DigitalPin_h -#if defined(__AVR__) || defined(DOXYGEN) -#include -/** GpioPinMap type */ -struct GpioPinMap_t { - volatile uint8_t* pin; /**< address of PIN for this pin */ - volatile uint8_t* ddr; /**< address of DDR for this pin */ - volatile uint8_t* port; /**< address of PORT for this pin */ - uint8_t mask; /**< bit mask for this pin */ -}; - -/** Initializer macro. */ -#define GPIO_PIN(reg, bit) {&PIN##reg, &DDR##reg, &PORT##reg, 1 << bit} - -// Include pin map for current board. -#include "boards/GpioPinMap.h" -//------------------------------------------------------------------------------ -/** generate bad pin number error */ -void badPinNumber(void) - __attribute__((error("Pin number is too large or not a constant"))); -//------------------------------------------------------------------------------ -/** Check for valid pin number - * @param[in] pin Number of pin to be checked. - */ -static inline __attribute__((always_inline)) -void badPinCheck(uint8_t pin) { - if (!__builtin_constant_p(pin) || pin >= NUM_DIGITAL_PINS) { - badPinNumber(); - } -} -//------------------------------------------------------------------------------ -/** DDR register address - * @param[in] pin Arduino pin number - * @return register address - */ -static inline __attribute__((always_inline)) -volatile uint8_t* ddrReg(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].ddr; -} -//------------------------------------------------------------------------------ -/** Bit mask for pin - * @param[in] pin Arduino pin number - * @return mask - */ -static inline __attribute__((always_inline)) -uint8_t pinMask(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].mask; -} -//------------------------------------------------------------------------------ -/** PIN register address - * @param[in] pin Arduino pin number - * @return register address - */ -static inline __attribute__((always_inline)) -volatile uint8_t* pinReg(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].pin; -} -//------------------------------------------------------------------------------ -/** PORT register address - * @param[in] pin Arduino pin number - * @return register address - */ -static inline __attribute__((always_inline)) -volatile uint8_t* portReg(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].port; -} -//------------------------------------------------------------------------------ -/** Fast write helper. - * @param[in] address I/O register address - * @param[in] mask bit mask for pin - * @param[in] level value for bit - */ -static inline __attribute__((always_inline)) -void fastBitWriteSafe(volatile uint8_t* address, uint8_t mask, bool level) { - uint8_t s; - if (address > reinterpret_cast(0X3F)) { - s = SREG; - cli(); - } - if (level) { - *address |= mask; - } else { - *address &= ~mask; - } - if (address > reinterpret_cast(0X3F)) { - SREG = s; - } -} -//------------------------------------------------------------------------------ -/** Read pin value. - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - return *pinReg(pin) & pinMask(pin); -} -//------------------------------------------------------------------------------ -/** Toggle a pin. - * @param[in] pin Arduino pin number - * - * If the pin is in output mode toggle the pin level. - * If the pin is in input mode toggle the state of the 20K pullup. - */ -static inline __attribute__((always_inline)) -void fastDigitalToggle(uint8_t pin) { - if (pinReg(pin) > reinterpret_cast(0X3F)) { - // must write bit to high address port - *pinReg(pin) = pinMask(pin); - } else { - // will compile to sbi and PIN register will not be read. - *pinReg(pin) |= pinMask(pin); - } -} -//------------------------------------------------------------------------------ -/** Set pin value. - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, bool level) { - fastBitWriteSafe(portReg(pin), pinMask(pin), level); -} -//------------------------------------------------------------------------------ -/** Write the DDR register. - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDdrWrite(uint8_t pin, bool level) { - fastBitWriteSafe(ddrReg(pin), pinMask(pin), level); -} -//------------------------------------------------------------------------------ -/** Set pin mode. - * @param[in] pin Arduino pin number - * @param[in] mode INPUT, OUTPUT, or INPUT_PULLUP. - * - * The internal pullup resistors will be enabled if mode is INPUT_PULLUP - * and disabled if the mode is INPUT. - */ -static inline __attribute__((always_inline)) -void fastPinMode(uint8_t pin, uint8_t mode) { - fastDdrWrite(pin, mode == OUTPUT); - if (mode != OUTPUT) { - fastDigitalWrite(pin, mode == INPUT_PULLUP); - } -} -#else // defined(__AVR__) -#if defined(CORE_TEENSY) -//------------------------------------------------------------------------------ -/** read pin value - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - return *portInputRegister(pin); -} -//------------------------------------------------------------------------------ -/** Set pin value - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, bool value) { - if (value) { - *portSetRegister(pin) = 1; - } else { - *portClearRegister(pin) = 1; - } -} -#elif defined(__SAM3X8E__) || defined(__SAM3X8H__) -//------------------------------------------------------------------------------ -/** read pin value - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - return g_APinDescription[pin].pPort->PIO_PDSR & g_APinDescription[pin].ulPin; -} -//------------------------------------------------------------------------------ -/** Set pin value - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, bool value) { - if (value) { - g_APinDescription[pin].pPort->PIO_SODR = g_APinDescription[pin].ulPin; - } else { - g_APinDescription[pin].pPort->PIO_CODR = g_APinDescription[pin].ulPin; - } -} -#elif defined(ESP8266) - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** Set pin value - * @param[in] pin Arduino pin number - * @param[in] val value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, uint8_t val) { - if (pin < 16) { - if (val) { - GPOS = (1 << pin); - } else { - GPOC = (1 << pin); - } - } else if (pin == 16) { - if (val) { - GP16O |= 1; - } else { - GP16O &= ~1; - } - } -} -//------------------------------------------------------------------------------ -/** Read pin value - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - if (pin < 16) { - return GPIP(pin); - } else if (pin == 16) { - return GP16I & 0x01; - } - return 0; -} - -}; // namespace sdfat - -#else // CORE_TEENSY -//------------------------------------------------------------------------------ -inline void fastDigitalWrite(uint8_t pin, bool value) { - digitalWrite(pin, value); -} -//------------------------------------------------------------------------------ -inline bool fastDigitalRead(uint8_t pin) { - return digitalRead(pin); -} -#endif // CORE_TEENSY -//------------------------------------------------------------------------------ -inline void fastDigitalToggle(uint8_t pin) { - fastDigitalWrite(pin, !fastDigitalRead(pin)); -} -//------------------------------------------------------------------------------ -inline void fastPinMode(uint8_t pin, uint8_t mode) { - pinMode(pin, mode); -} -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** set pin configuration - * @param[in] pin Arduino pin number - * @param[in] mode mode INPUT or OUTPUT. - * @param[in] level If mode is output, set level high/low. - * If mode is input, enable or disable the pin's 20K pullup. - */ -#define fastPinConfig(pin, mode, level)\ - {fastPinMode(pin, mode); fastDigitalWrite(pin, level);} -//============================================================================== -/** - * @class DigitalPin - * @brief Fast digital port I/O - */ - -namespace sdfat { - -template -class DigitalPin { - public: - //---------------------------------------------------------------------------- - /** Constructor */ - DigitalPin() {} - //---------------------------------------------------------------------------- - /** Asignment operator. - * @param[in] value If true set the pin's level high else set the - * pin's level low. - * - * @return This DigitalPin instance. - */ - inline DigitalPin & operator = (bool value) __attribute__((always_inline)) { - write(value); - return *this; - } - //---------------------------------------------------------------------------- - /** Parenthesis operator. - * @return Pin's level - */ - inline operator bool () const __attribute__((always_inline)) { - return read(); - } - //---------------------------------------------------------------------------- - /** Set pin configuration. - * @param[in] mode: INPUT or OUTPUT. - * @param[in] level If mode is OUTPUT, set level high/low. - * If mode is INPUT, enable or disable the pin's 20K pullup. - */ - inline __attribute__((always_inline)) - void config(uint8_t mode, bool level) { - fastPinConfig(PinNumber, mode, level); - } - //---------------------------------------------------------------------------- - /** - * Set pin level high if output mode or enable 20K pullup if input mode. - */ - inline __attribute__((always_inline)) - void high() {write(true);} - //---------------------------------------------------------------------------- - /** - * Set pin level low if output mode or disable 20K pullup if input mode. - */ - inline __attribute__((always_inline)) - void low() {write(false);} - //---------------------------------------------------------------------------- - /** - * Set pin mode. - * @param[in] mode: INPUT, OUTPUT, or INPUT_PULLUP. - * - * The internal pullup resistors will be enabled if mode is INPUT_PULLUP - * and disabled if the mode is INPUT. - */ - inline __attribute__((always_inline)) - void mode(uint8_t mode) { - fastPinMode(PinNumber, mode); - } - //---------------------------------------------------------------------------- - /** @return Pin's level. */ - inline __attribute__((always_inline)) - bool read() const { - return fastDigitalRead(PinNumber); - } - //---------------------------------------------------------------------------- - /** Toggle a pin. - * - * If the pin is in output mode toggle the pin's level. - * If the pin is in input mode toggle the state of the 20K pullup. - */ - inline __attribute__((always_inline)) - void toggle() { - fastDigitalToggle(PinNumber); - } - //---------------------------------------------------------------------------- - /** Write the pin's level. - * @param[in] value If true set the pin's level high else set the - * pin's level low. - */ - inline __attribute__((always_inline)) - void write(bool value) { - fastDigitalWrite(PinNumber, value); - } -}; - -}; // namespace sdfat - -#endif // DigitalPin_h -/** @} */ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiBaseDriver.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiBaseDriver.h deleted file mode 100644 index 62909815..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiBaseDriver.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdSpiBaseDriver_h -#define SdSpiBaseDriver_h - -namespace sdfat { - -/** - * \class SdSpiBaseDriver - * \brief SPI base driver. - */ -class SdSpiBaseDriver { - public: - /** Set SPI options for access to SD/SDHC cards. - * - */ - virtual void activate() = 0; - /** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ - virtual void begin(uint8_t chipSelectPin) = 0; - /** - * End SPI transaction. - */ - virtual void deactivate() = 0; - /** Receive a byte. - * - * \return The byte. - */ - virtual uint8_t receive() = 0; - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - virtual uint8_t receive(uint8_t* buf, size_t n) = 0; - /** Send a byte. - * - * \param[in] data Byte to send - */ - virtual void send(uint8_t data) = 0; - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - virtual void send(const uint8_t* buf, size_t n) = 0; - /** Set CS low. */ - virtual void select() = 0; - /** Save SPI settings. - * \param[in] spiSettings SPI speed, mode, and bit order. - */ - virtual void setSpiSettings(SPISettings spiSettings) = 0; - /** Set CS high. */ - virtual void unselect() = 0; -}; - -}; // namespace sdfat - -#endif // SdSpiBaseDriver_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiDriver.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiDriver.h deleted file mode 100644 index 3801aba1..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiDriver.h +++ /dev/null @@ -1,456 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief SpiDriver classes - */ -#ifndef SdSpiDriver_h -#define SdSpiDriver_h -#include -#include "SPI.h" -#include "SdSpiBaseDriver.h" -#include "SdFatConfig.h" -//------------------------------------------------------------------------------ -/** SDCARD_SPI is defined if board has built-in SD card socket */ -#ifndef SDCARD_SPI -#define SDCARD_SPI SPI -#endif // SDCARD_SPI - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** - * \class SdSpiLibDriver - * \brief SdSpiLibDriver - use standard SPI library. - */ -#if ENABLE_SOFTWARE_SPI_CLASS -class SdSpiLibDriver : public SdSpiBaseDriver { -#else // ENABLE_SOFTWARE_SPI_CLASS -class SdSpiLibDriver { -#endif // ENABLE_SOFTWARE_SPI_CLASS - public: -#if IMPLEMENT_SPI_PORT_SELECTION - /** Activate SPI hardware. */ - void activate() { - m_spi->beginTransaction(m_spiSettings); - } - /** Deactivate SPI hardware. */ - void deactivate() { - m_spi->endTransaction(); - } - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin) { - m_csPin = csPin; - digitalWrite(csPin, HIGH); - pinMode(csPin, OUTPUT); - m_spi->begin(); - } - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive() { - return m_spi->transfer( 0XFF); - } - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = m_spi->transfer(0XFF); - } - return 0; - } - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data) { - m_spi->transfer(data); - } - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - m_spi->transfer(buf[i]); - } - } -#else // IMPLEMENT_SPI_PORT_SELECTION - /** Activate SPI hardware. */ - void activate() { - SDCARD_SPI.beginTransaction(m_spiSettings); - } - /** Deactivate SPI hardware. */ - void deactivate() { - SDCARD_SPI.endTransaction(); - } - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin) { - m_csPin = csPin; - digitalWrite(csPin, HIGH); - pinMode(csPin, OUTPUT); - SDCARD_SPI.begin(); - } - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive() { - return SDCARD_SPI.transfer( 0XFF); - } - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = SDCARD_SPI.transfer(0XFF); - } - return 0; - } - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data) { - SDCARD_SPI.transfer(data); - } - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - SDCARD_SPI.transfer(buf[i]); - } - } -#endif // IMPLEMENT_SPI_PORT_SELECTION - /** Set CS low. */ - void select() { - digitalWrite(m_csPin, LOW); - } - /** Save SPISettings. - * - * \param[in] spiSettings SPI speed, mode, and byte order. - */ - void setSpiSettings(SPISettings spiSettings) { - m_spiSettings = spiSettings; - } - /** Set CS high. */ - void unselect() { - digitalWrite(m_csPin, HIGH); - } -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - /** Set SPI port. - * \param[in] spiPort Hardware SPI port. - */ - void setPort(SPIClass* spiPort) { - m_spi = spiPort ? spiPort : &SDCARD_SPI; - } - private: - SPIClass* m_spi; -#else // IMPLEMENT_SPI_PORT_SELECTION - private: -#endif // IMPLEMENT_SPI_PORT_SELECTION - SPISettings m_spiSettings; - uint8_t m_csPin; -}; -//------------------------------------------------------------------------------ -/** - * \class SdSpiAltDriver - * \brief Optimized SPI class for access to SD and SDHC flash memory cards. - */ -#if ENABLE_SOFTWARE_SPI_CLASS -class SdSpiAltDriver : public SdSpiBaseDriver { -#else // ENABLE_SOFTWARE_SPI_CLASS -class SdSpiAltDriver { -#endif // ENABLE_SOFTWARE_SPI_CLASS - public: - /** Activate SPI hardware. */ - void activate(); - /** Deactivate SPI hardware. */ - void deactivate(); - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin); - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive(); - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n); - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data); - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf, size_t n); - /** Set CS low. */ - void select() { - digitalWrite(m_csPin, LOW); - } - /** Save SPISettings. - * - * \param[in] spiSettings SPI speed, mode, and byte order. - */ - void setSpiSettings(SPISettings spiSettings) { - m_spiSettings = spiSettings; - } - /** Set CS high. */ - void unselect() { - digitalWrite(m_csPin, HIGH); - } -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - /** Set SPI port number. - * \param[in] spiPort Hardware SPI port. - */ - void setPort(SPIClass* spiPort) { - m_spi = spiPort ? spiPort : &SDCARD_SPI; - } - private: - SPIClass* m_spi; -#else // IMPLEMENT_SPI_PORT_SELECTION - private: -#endif // IMPLEMENT_SPI_PORT_SELECTION - SPISettings m_spiSettings; - uint8_t m_csPin; -}; - -}; // namespace sdfat - -//------------------------------------------------------------------------------ -#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -#ifdef ARDUINO -#include "SoftSPI.h" -#elif defined(PLATFORM_ID) // Only defined if a Particle device -#include "SoftSPIParticle.h" -#endif // ARDUINO - -namespace sdfat { - -/** - * \class SdSpiSoftDriver - * \brief Software SPI class for access to SD and SDHC flash memory cards. - */ -template -class SdSpiSoftDriver : public SdSpiBaseDriver { - public: - /** Dummy activate SPI hardware for software SPI */ - void activate() {} - /** Dummy deactivate SPI hardware for software SPI */ - void deactivate() {} - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - m_spi.begin(); - } - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive() { - return m_spi.receive(); - } - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = receive(); - } - return 0; - } - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data) { - m_spi.send(data); - } - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf , size_t n) { - for (size_t i = 0; i < n; i++) { - send(buf[i]); - } - } - /** Set CS low. */ - void select() { - digitalWrite(m_csPin, LOW); - } - /** Save SPISettings. - * - * \param[in] spiSettings SPI speed, mode, and byte order. - */ - void setSpiSettings(SPISettings spiSettings) { - (void)spiSettings; - } - /** Set CS high. */ - void unselect() { - digitalWrite(m_csPin, HIGH); - } - - private: - uint8_t m_csPin; - SoftSPI m_spi; -}; - -}; // namespace sdfat - -#endif // ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) - -namespace sdfat { - -//------------------------------------------------------------------------------ -// Choose SPI driver for SdFat and SdFatEX classes. -#if USE_STANDARD_SPI_LIBRARY || !SD_HAS_CUSTOM_SPI -/** SdFat uses Arduino library SPI. */ -typedef SdSpiLibDriver SdFatSpiDriver; -#else // USE_STANDARD_SPI_LIBRARY || !SD_HAS_CUSTOM_SPI -/** SdFat uses custom fast SPI. */ -typedef SdSpiAltDriver SdFatSpiDriver; -#endif // USE_STANDARD_SPI_LIBRARY || !SD_HAS_CUSTOM_SPI - -/** typedef for for SdSpiCard class. */ -#if ENABLE_SOFTWARE_SPI_CLASS -// Need virtual driver. -typedef SdSpiBaseDriver SdSpiDriver; -#else // ENABLE_SOFTWARE_SPI_CLASS -// Don't need virtual driver. -typedef SdFatSpiDriver SdSpiDriver; -#endif // ENABLE_SOFTWARE_SPI_CLASS -//============================================================================== -// Use of in-line for AVR to save flash. -#ifdef __AVR__ -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - SPI.begin(); -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::deactivate() { - SPI.endTransaction(); -} -//------------------------------------------------------------------------------ -inline uint8_t SdSpiAltDriver::receive() { - SPDR = 0XFF; - while (!(SPSR & (1 << SPIF))) {} - return SPDR; -} -//------------------------------------------------------------------------------ -inline uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - if (n-- == 0) { - return 0; - } - SPDR = 0XFF; - for (size_t i = 0; i < n; i++) { - while (!(SPSR & (1 << SPIF))) {} - uint8_t b = SPDR; - SPDR = 0XFF; - buf[i] = b; - } - while (!(SPSR & (1 << SPIF))) {} - buf[n] = SPDR; - return 0; -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::send(uint8_t data) { - SPDR = data; - while (!(SPSR & (1 << SPIF))) {} -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - if (n == 0) { - return; - } - SPDR = buf[0]; - if (n > 1) { - uint8_t b = buf[1]; - size_t i = 2; - while (1) { - while (!(SPSR & (1 << SPIF))) {} - SPDR = b; - if (i == n) { - break; - } - b = buf[i++]; - } - } - while (!(SPSR & (1 << SPIF))) {} -} -#endif // __AVR__ - -}; // namespace sdfat - -#endif // SdSpiDriver_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiESP8266.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiESP8266.cpp deleted file mode 100644 index bf741623..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiESP8266.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(ESP8266) -#include "SdSpiDriver.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - SPI.begin(); -} -//------------------------------------------------------------------------------ -/** Set SPI options for access to SD/SDHC cards. - * - */ -void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::deactivate() { - // Note: endTransaction is an empty function on ESP8266. - SPI.endTransaction(); -} -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return SPI.transfer(0XFF); -} -//------------------------------------------------------------------------------ -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - // Adjust to 32-bit alignment. - while ((reinterpret_cast(buf) & 0X3) && n) { - *buf++ = SPI.transfer(0xff); - n--; - } - // Do multiple of four byte transfers. - size_t n4 = 4*(n/4); - SPI.transferBytes(0, buf, n4); - - // Transfer up to three remaining bytes. - for (buf += n4, n -= n4; n; n--) { - *buf++ = SPI.transfer(0xff); - } - return 0; -} -//------------------------------------------------------------------------------ -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - SPI.transfer(b); -} -//------------------------------------------------------------------------------ -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - // Adjust to 32-bit alignment. - while ((reinterpret_cast(buf) & 0X3) && n) { - SPI.transfer(*buf++); - n--; - } - SPI.transferBytes(const_cast(buf), 0, n); -} - -}; // namespace sdfat - -#endif // defined(ESP8266) diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiParticle.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiParticle.cpp deleted file mode 100644 index ee75bbfb..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiParticle.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(PLATFORM_ID) -#include "SdSpiDriver.h" -static volatile bool SPI_DMA_TransferCompleted = false; -//----------------------------------------------------------------------------- -static void SD_SPI_DMA_TransferComplete_Callback(void) { - SPI_DMA_TransferCompleted = true; -} -//------------------------------------------------------------------------------ -/** Set SPI options for access to SD/SDHC cards. - * - * \param[in] divisor SCK clock divider relative to the APB1 or APB2 clock. - */ -void SdSpiAltDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -/** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - m_spi->begin(); - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); -} -//------------------------------------------------------------------------------ -/** - * End SPI transaction. - */ -void SdSpiAltDriver::deactivate() { - m_spi->endTransaction(); -} -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return m_spi->transfer(0XFF); -} -//------------------------------------------------------------------------------ -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - SPI_DMA_TransferCompleted = false; - m_spi->transfer(nullptr, buf, n, SD_SPI_DMA_TransferComplete_Callback); - while (!SPI_DMA_TransferCompleted) {} - return 0; -} -//------------------------------------------------------------------------------ -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - m_spi->transfer(b); -} -//------------------------------------------------------------------------------ -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - SPI_DMA_TransferCompleted = false; - - m_spi->transfer(const_cast(buf), nullptr, n, - SD_SPI_DMA_TransferComplete_Callback); - - while (!SPI_DMA_TransferCompleted) {} -} -#endif // defined(PLATFORM_ID) diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiSAM3X.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiSAM3X.cpp deleted file mode 100644 index b3064535..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiSAM3X.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiDriver.h" -#if defined(__SAM3X8E__) || defined(__SAM3X8H__) -/** Use SAM3X DMAC if nonzero */ -#define USE_SAM3X_DMAC 1 -/** Use extra Bus Matrix arbitration fix if nonzero */ -#define USE_SAM3X_BUS_MATRIX_FIX 0 -/** Time in ms for DMA receive timeout */ -#define SAM3X_DMA_TIMEOUT 100 -/** chip select register number */ -#define SPI_CHIP_SEL 3 -/** DMAC receive channel */ -#define SPI_DMAC_RX_CH 1 -/** DMAC transmit channel */ -#define SPI_DMAC_TX_CH 0 -/** DMAC Channel HW Interface Number for SPI TX. */ -#define SPI_TX_IDX 1 -/** DMAC Channel HW Interface Number for SPI RX. */ -#define SPI_RX_IDX 2 - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** Disable DMA Controller. */ -static void dmac_disable() { - DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); -} -/** Enable DMA Controller. */ -static void dmac_enable() { - DMAC->DMAC_EN = DMAC_EN_ENABLE; -} -/** Disable DMA Channel. */ -static void dmac_channel_disable(uint32_t ul_num) { - DMAC->DMAC_CHDR = DMAC_CHDR_DIS0 << ul_num; -} -/** Enable DMA Channel. */ -static void dmac_channel_enable(uint32_t ul_num) { - DMAC->DMAC_CHER = DMAC_CHER_ENA0 << ul_num; -} -/** Poll for transfer complete. */ -static bool dmac_channel_transfer_done(uint32_t ul_num) { - return (DMAC->DMAC_CHSR & (DMAC_CHSR_ENA0 << ul_num)) ? false : true; -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); -SPI.begin(); -#if USE_SAM3X_DMAC - pmc_enable_periph_clk(ID_DMAC); - dmac_disable(); - DMAC->DMAC_GCFG = DMAC_GCFG_ARB_CFG_FIXED; - dmac_enable(); -#if USE_SAM3X_BUS_MATRIX_FIX - MATRIX->MATRIX_WPMR = 0x4d415400; - MATRIX->MATRIX_MCFG[1] = 1; - MATRIX->MATRIX_MCFG[2] = 1; - MATRIX->MATRIX_SCFG[0] = 0x01000010; - MATRIX->MATRIX_SCFG[1] = 0x01000010; - MATRIX->MATRIX_SCFG[7] = 0x01000010; -#endif // USE_SAM3X_BUS_MATRIX_FIX -#endif // USE_SAM3X_DMAC -} -//------------------------------------------------------------------------------ -// start RX DMA -static void spiDmaRX(uint8_t* dst, uint16_t count) { - dmac_channel_disable(SPI_DMAC_RX_CH); - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_SADDR = (uint32_t)&SPI0->SPI_RDR; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DADDR = (uint32_t)dst; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | - DMAC_CTRLB_SRC_INCR_FIXED | DMAC_CTRLB_DST_INCR_INCREMENTING; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CFG = DMAC_CFG_SRC_PER(SPI_RX_IDX) | - DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ASAP_CFG; - dmac_channel_enable(SPI_DMAC_RX_CH); -} -//------------------------------------------------------------------------------ -// start TX DMA -static void spiDmaTX(const uint8_t* src, uint16_t count) { - static uint8_t ff = 0XFF; - uint32_t src_incr = DMAC_CTRLB_SRC_INCR_INCREMENTING; - if (!src) { - src = &ff; - src_incr = DMAC_CTRLB_SRC_INCR_FIXED; - } - dmac_channel_disable(SPI_DMAC_TX_CH); - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | - src_incr | DMAC_CTRLB_DST_INCR_FIXED; - - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(SPI_TX_IDX) | - DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; - - dmac_channel_enable(SPI_DMAC_TX_CH); -} -//------------------------------------------------------------------------------ -// initialize SPI controller -void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); - - Spi* pSpi = SPI0; - // Save the divisor - uint32_t scbr = pSpi->SPI_CSR[SPI_CHIP_SEL] & 0XFF00; - // Disable SPI - pSpi->SPI_CR = SPI_CR_SPIDIS; - // reset SPI - pSpi->SPI_CR = SPI_CR_SWRST; - // no mode fault detection, set master mode - pSpi->SPI_MR = SPI_PCS(SPI_CHIP_SEL) | SPI_MR_MODFDIS | SPI_MR_MSTR; - // mode 0, 8-bit, - pSpi->SPI_CSR[SPI_CHIP_SEL] = scbr | SPI_CSR_CSAAT | SPI_CSR_NCPHA; - // enable SPI - pSpi->SPI_CR |= SPI_CR_SPIEN; -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::deactivate() { - SPI.endTransaction(); -} -//------------------------------------------------------------------------------ -static inline uint8_t spiTransfer(uint8_t b) { - Spi* pSpi = SPI0; - - pSpi->SPI_TDR = b; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} - b = pSpi->SPI_RDR; - return b; -} -//------------------------------------------------------------------------------ -/** SPI receive a byte */ -uint8_t SdSpiAltDriver::receive() { - return spiTransfer(0XFF); -} -//------------------------------------------------------------------------------ -/** SPI receive multiple bytes */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - Spi* pSpi = SPI0; - int rtn = 0; -#if USE_SAM3X_DMAC - // clear overrun error - pSpi->SPI_SR; - - spiDmaRX(buf, n); - spiDmaTX(0, n); - - uint32_t m = millis(); - while (!dmac_channel_transfer_done(SPI_DMAC_RX_CH)) { - if ((millis() - m) > SAM3X_DMA_TIMEOUT) { - dmac_channel_disable(SPI_DMAC_RX_CH); - dmac_channel_disable(SPI_DMAC_TX_CH); - rtn = 2; - break; - } - } - if (pSpi->SPI_SR & SPI_SR_OVRES) { - rtn |= 1; - } -#else // USE_SAM3X_DMAC - for (size_t i = 0; i < n; i++) { - pSpi->SPI_TDR = 0XFF; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} - buf[i] = pSpi->SPI_RDR; - } -#endif // USE_SAM3X_DMAC - return rtn; -} -//------------------------------------------------------------------------------ -/** SPI send a byte */ -void SdSpiAltDriver::send(uint8_t b) { - spiTransfer(b); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - Spi* pSpi = SPI0; -#if USE_SAM3X_DMAC - spiDmaTX(buf, n); - while (!dmac_channel_transfer_done(SPI_DMAC_TX_CH)) {} -#else // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} - for (size_t i = 0; i < n; i++) { - pSpi->SPI_TDR = buf[i]; - while ((pSpi->SPI_SR & SPI_SR_TDRE) == 0) {} - } -#endif // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} - // leave RDR empty - pSpi->SPI_RDR; -} - -}; // namespace sdfat - -#endif // defined(__SAM3X8E__) || defined(__SAM3X8H__) diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp deleted file mode 100644 index ee5a4005..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiSTM32.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(__STM32F1__) || defined(__STM32F4__) -#include "SdSpiDriver.h" -#if defined(__STM32F1__) -#define USE_STM32_DMA 1 -#elif defined(__STM32F4__) -#define USE_STM32_DMA 1 -#else // defined(__STM32F1__) -#error Unknown STM32 type -#endif // defined(__STM32F1__) - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** Set SPI options for access to SD/SDHC cards. - * - * \param[in] divisor SCK clock divider relative to the APB1 or APB2 clock. - */ -void SdSpiAltDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -/** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - m_spi->begin(); -} -//------------------------------------------------------------------------------ -/** - * End SPI transaction. - */ -void SdSpiAltDriver::deactivate() { - m_spi->endTransaction(); -} -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return m_spi->transfer(0XFF); -} -//------------------------------------------------------------------------------ -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { -#if USE_STM32_DMA - return m_spi->dmaTransfer(nullptr, buf, n); -#else // USE_STM32_DMA - m_spi->read(buf, n); - return 0; -#endif // USE_STM32_DMA -} -//------------------------------------------------------------------------------ -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - m_spi->transfer(b); -} -//------------------------------------------------------------------------------ -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { -#if USE_STM32_DMA - m_spi->dmaTransfer(const_cast(buf), nullptr, n); -#else // USE_STM32_DMA - m_spi->write(const_cast(buf), n); -#endif // USE_STM32_DMA -} - -}; // namespace sdfat - -#endif // defined(__STM32F1__) || defined(__STM32F4__) diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiTeensy3.cpp b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiTeensy3.cpp deleted file mode 100644 index cff80773..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SdSpiTeensy3.cpp +++ /dev/null @@ -1,238 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiDriver.h" -#if defined(__arm__) && defined(CORE_TEENSY) -// SPI definitions -#include "kinetis.h" - -namespace sdfat { - -//------------------------------------------------------------------------------ -void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::begin(uint8_t chipSelectPin) { - m_csPin = chipSelectPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - SPI.begin(); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::deactivate() { - SPI.endTransaction(); -} -//============================================================================== -#ifdef KINETISK - -// use 16-bit frame if SPI_USE_8BIT_FRAME is zero -#define SPI_USE_8BIT_FRAME 0 -// Limit initial fifo to three entries to avoid fifo overrun -#define SPI_INITIAL_FIFO_DEPTH 3 -// define some symbols that are not in mk20dx128.h -#ifndef SPI_SR_RXCTR -#define SPI_SR_RXCTR 0XF0 -#endif // SPI_SR_RXCTR -#ifndef SPI_PUSHR_CONT -#define SPI_PUSHR_CONT 0X80000000 -#endif // SPI_PUSHR_CONT -#ifndef SPI_PUSHR_CTAS -#define SPI_PUSHR_CTAS(n) (((n) & 7) << 28) -#endif // SPI_PUSHR_CTAS -//------------------------------------------------------------------------------ -/** SPI receive a byte */ -uint8_t SdSpiAltDriver::receive() { - SPI0_MCR |= SPI_MCR_CLR_RXF; - SPI0_SR = SPI_SR_TCF; - SPI0_PUSHR = 0xFF; - while (!(SPI0_SR & SPI_SR_TCF)) {} - return SPI0_POPR; -} -//------------------------------------------------------------------------------ -/** SPI receive multiple bytes */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - // clear any data in RX FIFO - SPI0_MCR = SPI_MCR_MSTR | SPI_MCR_CLR_RXF | SPI_MCR_PCSIS(0x1F); -#if SPI_USE_8BIT_FRAME - // initial number of bytes to push into TX FIFO - int nf = n < SPI_INITIAL_FIFO_DEPTH ? n : SPI_INITIAL_FIFO_DEPTH; - for (int i = 0; i < nf; i++) { - SPI0_PUSHR = 0XFF; - } - // limit for pushing dummy data into TX FIFO - uint8_t* limit = buf + n - nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = 0XFF; - *buf++ = SPI0_POPR; - } - // limit for rest of RX data - limit += nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - *buf++ = SPI0_POPR; - } -#else // SPI_USE_8BIT_FRAME - // use 16 bit frame to avoid TD delay between frames - // get one byte if n is odd - if (n & 1) { - *buf++ = receive(); - n--; - } - // initial number of words to push into TX FIFO - int nf = n/2 < SPI_INITIAL_FIFO_DEPTH ? n/2 : SPI_INITIAL_FIFO_DEPTH; - for (int i = 0; i < nf; i++) { - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | 0XFFFF; - } - uint8_t* limit = buf + n - 2*nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | 0XFFFF; - uint16_t w = SPI0_POPR; - *buf++ = w >> 8; - *buf++ = w & 0XFF; - } - // limit for rest of RX data - limit += 2*nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - uint16_t w = SPI0_POPR; - *buf++ = w >> 8; - *buf++ = w & 0XFF; - } -#endif // SPI_USE_8BIT_FRAME - return 0; -} -//------------------------------------------------------------------------------ -/** SPI send a byte */ -void SdSpiAltDriver::send(uint8_t b) { - SPI0_MCR |= SPI_MCR_CLR_RXF; - SPI0_SR = SPI_SR_TCF; - SPI0_PUSHR = b; - while (!(SPI0_SR & SPI_SR_TCF)) {} -} -//------------------------------------------------------------------------------ -/** SPI send multiple bytes */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - // clear any data in RX FIFO - SPI0_MCR = SPI_MCR_MSTR | SPI_MCR_CLR_RXF | SPI_MCR_PCSIS(0x1F); -#if SPI_USE_8BIT_FRAME - // initial number of bytes to push into TX FIFO - int nf = n < SPI_INITIAL_FIFO_DEPTH ? n : SPI_INITIAL_FIFO_DEPTH; - // limit for pushing data into TX fifo - const uint8_t* limit = buf + n; - for (int i = 0; i < nf; i++) { - SPI0_PUSHR = *buf++; - } - // write data to TX FIFO - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = *buf++; - SPI0_POPR; - } - // wait for data to be sent - while (nf) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_POPR; - nf--; - } -#else // SPI_USE_8BIT_FRAME - // use 16 bit frame to avoid TD delay between frames - // send one byte if n is odd - if (n & 1) { - send(*buf++); - n--; - } - // initial number of words to push into TX FIFO - int nf = n/2 < SPI_INITIAL_FIFO_DEPTH ? n/2 : SPI_INITIAL_FIFO_DEPTH; - // limit for pushing data into TX fifo - const uint8_t* limit = buf + n; - for (int i = 0; i < nf; i++) { - uint16_t w = (*buf++) << 8; - w |= *buf++; - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | w; - } - // write data to TX FIFO - while (buf < limit) { - uint16_t w = *buf++ << 8; - w |= *buf++; - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | w; - SPI0_POPR; - } - // wait for data to be sent - while (nf) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_POPR; - nf--; - } -#endif // SPI_USE_8BIT_FRAME -} -#else // KINETISK -//============================================================================== -// Use standard SPI library if not KINETISK -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return SPI.transfer(0XFF); -} -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = SPI.transfer(0XFF); - } - return 0; -} -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - SPI.transfer(b); -} -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - for (size_t i = 0; i < n; i++) { - SPI.transfer(buf[i]); - } -} -#endif // KINETISK - -}; // namespace sdfat - -#endif // defined(__arm__) && defined(CORE_TEENSY) diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SoftSPI.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SoftSPI.h deleted file mode 100644 index 4cb56174..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/SoftSPI.h +++ /dev/null @@ -1,173 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * @file - * @brief Software SPI. - * - * @defgroup softSPI Software SPI - * @details Software SPI Template Class. - * @{ - */ - -#ifndef SoftSPI_h -#define SoftSPI_h -#include "DigitalPin.h" -//------------------------------------------------------------------------------ -/** Nop for timing. */ -#define nop asm volatile ("nop\n\t") -//------------------------------------------------------------------------------ -/** Pin Mode for MISO is input.*/ -#define MISO_MODE INPUT -/** Pullups disabled for MISO are disabled. */ -#define MISO_LEVEL false -/** Pin Mode for MOSI is output.*/ -#define MOSI_MODE OUTPUT -/** Pin Mode for SCK is output. */ -#define SCK_MODE OUTPUT - -namespace sdfat { - -//------------------------------------------------------------------------------ -/** - * @class SoftSPI - * @brief Fast software SPI. - */ -template -class SoftSPI { - public: - //---------------------------------------------------------------------------- - /** Initialize SoftSPI pins. */ - void begin() { - fastPinConfig(MisoPin, MISO_MODE, MISO_LEVEL); - fastPinConfig(MosiPin, MOSI_MODE, !MODE_CPHA(Mode)); - fastPinConfig(SckPin, SCK_MODE, MODE_CPOL(Mode)); - } - //---------------------------------------------------------------------------- - /** Soft SPI receive byte. - * @return Data byte received. - */ - inline __attribute__((always_inline)) - uint8_t receive() { - uint8_t data = 0; - receiveBit(7, &data); - receiveBit(6, &data); - receiveBit(5, &data); - receiveBit(4, &data); - receiveBit(3, &data); - receiveBit(2, &data); - receiveBit(1, &data); - receiveBit(0, &data); - return data; - } - //---------------------------------------------------------------------------- - /** Soft SPI send byte. - * @param[in] data Data byte to send. - */ - inline __attribute__((always_inline)) - void send(uint8_t data) { - sendBit(7, data); - sendBit(6, data); - sendBit(5, data); - sendBit(4, data); - sendBit(3, data); - sendBit(2, data); - sendBit(1, data); - sendBit(0, data); - } - //---------------------------------------------------------------------------- - /** Soft SPI transfer byte. - * @param[in] txData Data byte to send. - * @return Data byte received. - */ - inline __attribute__((always_inline)) - uint8_t transfer(uint8_t txData) { - uint8_t rxData = 0; - transferBit(7, &rxData, txData); - transferBit(6, &rxData, txData); - transferBit(5, &rxData, txData); - transferBit(4, &rxData, txData); - transferBit(3, &rxData, txData); - transferBit(2, &rxData, txData); - transferBit(1, &rxData, txData); - transferBit(0, &rxData, txData); - return rxData; - } - - private: - //---------------------------------------------------------------------------- - inline __attribute__((always_inline)) - bool MODE_CPHA(uint8_t mode) {return (mode & 1) != 0;} - inline __attribute__((always_inline)) - bool MODE_CPOL(uint8_t mode) {return (mode & 2) != 0;} - inline __attribute__((always_inline)) - void receiveBit(uint8_t bit, uint8_t* data) { - if (MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); - } - nop; - nop; - fastDigitalWrite(SckPin, - MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); - if (fastDigitalRead(MisoPin)) *data |= 1 << bit; - if (!MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, MODE_CPOL(Mode)); - } - } - //---------------------------------------------------------------------------- - inline __attribute__((always_inline)) - void sendBit(uint8_t bit, uint8_t data) { - if (MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); - } - fastDigitalWrite(MosiPin, data & (1 << bit)); - fastDigitalWrite(SckPin, - MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); - nop; - nop; - if (!MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, MODE_CPOL(Mode)); - } - } - //---------------------------------------------------------------------------- - inline __attribute__((always_inline)) - void transferBit(uint8_t bit, uint8_t* rxData, uint8_t txData) { - if (MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); - } - fastDigitalWrite(MosiPin, txData & (1 << bit)); - fastDigitalWrite(SckPin, - MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); - if (fastDigitalRead(MisoPin)) *rxData |= 1 << bit; - if (!MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, MODE_CPOL(Mode)); - } - } - //---------------------------------------------------------------------------- -}; - -}; // namespace sdfat - -#endif // SoftSPI_h -/** @} */ diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h deleted file mode 100644 index 5fa1e6a3..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef AvrDevelopersGpioPinMap_h -#define AvrDevelopersGpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 4), // D4 - GPIO_PIN(B, 5), // D5 - GPIO_PIN(B, 6), // D6 - GPIO_PIN(B, 7), // D7 - GPIO_PIN(D, 0), // D8 - GPIO_PIN(D, 1), // D9 - GPIO_PIN(D, 2), // D10 - GPIO_PIN(D, 3), // D11 - GPIO_PIN(D, 4), // D12 - GPIO_PIN(D, 5), // D13 - GPIO_PIN(D, 6), // D14 - GPIO_PIN(D, 7), // D15 - GPIO_PIN(C, 0), // D16 - GPIO_PIN(C, 1), // D17 - GPIO_PIN(C, 2), // D18 - GPIO_PIN(C, 3), // D19 - GPIO_PIN(C, 4), // D20 - GPIO_PIN(C, 5), // D21 - GPIO_PIN(C, 6), // D22 - GPIO_PIN(C, 7), // D23 - GPIO_PIN(A, 7), // D24 - GPIO_PIN(A, 6), // D25 - GPIO_PIN(A, 5), // D26 - GPIO_PIN(A, 4), // D27 - GPIO_PIN(A, 3), // D28 - GPIO_PIN(A, 2), // D29 - GPIO_PIN(A, 1), // D30 - GPIO_PIN(A, 0) // D31 -}; - -}; // namespace sdfat - -#endif // AvrDevelopersGpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/BobuinoGpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/BobuinoGpioPinMap.h deleted file mode 100644 index 0a37aa79..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/BobuinoGpioPinMap.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef BobuinoGpioPinMap_h -#define BobuinoGpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 4), // D4 - GPIO_PIN(B, 5), // D5 - GPIO_PIN(B, 6), // D6 - GPIO_PIN(B, 7), // D7 - GPIO_PIN(D, 0), // D8 - GPIO_PIN(D, 1), // D9 - GPIO_PIN(D, 2), // D10 - GPIO_PIN(D, 3), // D11 - GPIO_PIN(D, 4), // D12 - GPIO_PIN(D, 5), // D13 - GPIO_PIN(D, 6), // D14 - GPIO_PIN(D, 7), // D15 - GPIO_PIN(C, 0), // D16 - GPIO_PIN(C, 1), // D17 - GPIO_PIN(C, 2), // D18 - GPIO_PIN(C, 3), // D19 - GPIO_PIN(C, 4), // D20 - GPIO_PIN(C, 5), // D21 - GPIO_PIN(C, 6), // D22 - GPIO_PIN(C, 7), // D23 - GPIO_PIN(A, 0), // D24 - GPIO_PIN(A, 1), // D25 - GPIO_PIN(A, 2), // D26 - GPIO_PIN(A, 3), // D27 - GPIO_PIN(A, 4), // D28 - GPIO_PIN(A, 5), // D29 - GPIO_PIN(A, 6), // D30 - GPIO_PIN(A, 7) // D31 -}; - -}; // namespace sdfat - -#endif // BobuinoGpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/GpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/GpioPinMap.h deleted file mode 100644 index 326b7621..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/GpioPinMap.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef GpioPinMap_h -#define GpioPinMap_h -#if defined(__AVR_ATmega168__)\ -||defined(__AVR_ATmega168P__)\ -||defined(__AVR_ATmega328P__) -// 168 and 328 Arduinos -#include "UnoGpioPinMap.h" -#elif defined(__AVR_ATmega1280__)\ -|| defined(__AVR_ATmega2560__) -// Mega ADK -#include "MegaGpioPinMap.h" -#elif defined(__AVR_ATmega32U4__) -#ifdef CORE_TEENSY -#include "Teensy2GpioPinMap.h" -#else // CORE_TEENSY -// Leonardo or Yun -#include "LeonardoGpioPinMap.h" -#endif // CORE_TEENSY -#elif defined(__AVR_AT90USB646__)\ -|| defined(__AVR_AT90USB1286__) -// Teensy++ 1.0 & 2.0 -#include "Teensy2ppGpioPinMap.h" -#elif defined(__AVR_ATmega1284P__)\ -|| defined(__AVR_ATmega1284__)\ -|| defined(__AVR_ATmega644P__)\ -|| defined(__AVR_ATmega644__)\ -|| defined(__AVR_ATmega64__)\ -|| defined(__AVR_ATmega32__)\ -|| defined(__AVR_ATmega324__)\ -|| defined(__AVR_ATmega16__) -#ifdef ARDUINO_1284P_AVR_DEVELOPERS -#include "AvrDevelopersGpioPinMap.h" -#elif defined(BOBUINO_PINOUT) || defined(ARDUINO_1284P_BOBUINO) -#include "BobuinoGpioPinMap.h" -#elif defined(ARDUINO_1284P_SLEEPINGBEAUTY) -#include "SleepingBeautyGpioPinMap.h" -#elif defined(STANDARD_PINOUT) || defined(ARDUINO_1284P_STANDARD) -#include "Standard1284GpioPinMap.h" -#else // ARDUINO_1284P_AVR_DEVELOPERS -#error Undefined variant 1284, 644, 324 -#endif // ARDUINO_1284P_AVR_DEVELOPERS -#else // 1284P, 1284, 644 -#error Unknown board type. -#endif // end all boards -#endif // GpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/LeonardoGpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/LeonardoGpioPinMap.h deleted file mode 100644 index 2b90788b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/LeonardoGpioPinMap.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef LeonardoGpioPinMap_h -#define LeonardoGpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 2), // D0 - GPIO_PIN(D, 3), // D1 - GPIO_PIN(D, 1), // D2 - GPIO_PIN(D, 0), // D3 - GPIO_PIN(D, 4), // D4 - GPIO_PIN(C, 6), // D5 - GPIO_PIN(D, 7), // D6 - GPIO_PIN(E, 6), // D7 - GPIO_PIN(B, 4), // D8 - GPIO_PIN(B, 5), // D9 - GPIO_PIN(B, 6), // D10 - GPIO_PIN(B, 7), // D11 - GPIO_PIN(D, 6), // D12 - GPIO_PIN(C, 7), // D13 - GPIO_PIN(B, 3), // D14 - GPIO_PIN(B, 1), // D15 - GPIO_PIN(B, 2), // D16 - GPIO_PIN(B, 0), // D17 - GPIO_PIN(F, 7), // D18 - GPIO_PIN(F, 6), // D19 - GPIO_PIN(F, 5), // D20 - GPIO_PIN(F, 4), // D21 - GPIO_PIN(F, 1), // D22 - GPIO_PIN(F, 0), // D23 - GPIO_PIN(D, 4), // D24 - GPIO_PIN(D, 7), // D25 - GPIO_PIN(B, 4), // D26 - GPIO_PIN(B, 5), // D27 - GPIO_PIN(B, 6), // D28 - GPIO_PIN(D, 6) // D29 -}; - -}; // namespace sdfat - -#endif // LeonardoGpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/MegaGpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/MegaGpioPinMap.h deleted file mode 100644 index ae9eed55..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/MegaGpioPinMap.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef MegaGpioPinMap_h -#define MegaGpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(E, 0), // D0 - GPIO_PIN(E, 1), // D1 - GPIO_PIN(E, 4), // D2 - GPIO_PIN(E, 5), // D3 - GPIO_PIN(G, 5), // D4 - GPIO_PIN(E, 3), // D5 - GPIO_PIN(H, 3), // D6 - GPIO_PIN(H, 4), // D7 - GPIO_PIN(H, 5), // D8 - GPIO_PIN(H, 6), // D9 - GPIO_PIN(B, 4), // D10 - GPIO_PIN(B, 5), // D11 - GPIO_PIN(B, 6), // D12 - GPIO_PIN(B, 7), // D13 - GPIO_PIN(J, 1), // D14 - GPIO_PIN(J, 0), // D15 - GPIO_PIN(H, 1), // D16 - GPIO_PIN(H, 0), // D17 - GPIO_PIN(D, 3), // D18 - GPIO_PIN(D, 2), // D19 - GPIO_PIN(D, 1), // D20 - GPIO_PIN(D, 0), // D21 - GPIO_PIN(A, 0), // D22 - GPIO_PIN(A, 1), // D23 - GPIO_PIN(A, 2), // D24 - GPIO_PIN(A, 3), // D25 - GPIO_PIN(A, 4), // D26 - GPIO_PIN(A, 5), // D27 - GPIO_PIN(A, 6), // D28 - GPIO_PIN(A, 7), // D29 - GPIO_PIN(C, 7), // D30 - GPIO_PIN(C, 6), // D31 - GPIO_PIN(C, 5), // D32 - GPIO_PIN(C, 4), // D33 - GPIO_PIN(C, 3), // D34 - GPIO_PIN(C, 2), // D35 - GPIO_PIN(C, 1), // D36 - GPIO_PIN(C, 0), // D37 - GPIO_PIN(D, 7), // D38 - GPIO_PIN(G, 2), // D39 - GPIO_PIN(G, 1), // D40 - GPIO_PIN(G, 0), // D41 - GPIO_PIN(L, 7), // D42 - GPIO_PIN(L, 6), // D43 - GPIO_PIN(L, 5), // D44 - GPIO_PIN(L, 4), // D45 - GPIO_PIN(L, 3), // D46 - GPIO_PIN(L, 2), // D47 - GPIO_PIN(L, 1), // D48 - GPIO_PIN(L, 0), // D49 - GPIO_PIN(B, 3), // D50 - GPIO_PIN(B, 2), // D51 - GPIO_PIN(B, 1), // D52 - GPIO_PIN(B, 0), // D53 - GPIO_PIN(F, 0), // D54 - GPIO_PIN(F, 1), // D55 - GPIO_PIN(F, 2), // D56 - GPIO_PIN(F, 3), // D57 - GPIO_PIN(F, 4), // D58 - GPIO_PIN(F, 5), // D59 - GPIO_PIN(F, 6), // D60 - GPIO_PIN(F, 7), // D61 - GPIO_PIN(K, 0), // D62 - GPIO_PIN(K, 1), // D63 - GPIO_PIN(K, 2), // D64 - GPIO_PIN(K, 3), // D65 - GPIO_PIN(K, 4), // D66 - GPIO_PIN(K, 5), // D67 - GPIO_PIN(K, 6), // D68 - GPIO_PIN(K, 7) // D69 -}; - -}; // namespace sdfat - -#endif // MegaGpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h deleted file mode 100644 index ecd5fae2..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef SleepingBeautyGpioPinMap_h -#define SleepingBeautyGpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 0), // D0 - GPIO_PIN(D, 1), // D1 - GPIO_PIN(D, 2), // D2 - GPIO_PIN(D, 3), // D3 - GPIO_PIN(B, 0), // D4 - GPIO_PIN(B, 1), // D5 - GPIO_PIN(B, 2), // D6 - GPIO_PIN(B, 3), // D7 - GPIO_PIN(D, 6), // D8 - GPIO_PIN(D, 5), // D9 - GPIO_PIN(B, 4), // D10 - GPIO_PIN(B, 5), // D11 - GPIO_PIN(B, 6), // D12 - GPIO_PIN(B, 7), // D13 - GPIO_PIN(C, 7), // D14 - GPIO_PIN(C, 6), // D15 - GPIO_PIN(A, 5), // D16 - GPIO_PIN(A, 4), // D17 - GPIO_PIN(A, 3), // D18 - GPIO_PIN(A, 2), // D19 - GPIO_PIN(A, 1), // D20 - GPIO_PIN(A, 0), // D21 - GPIO_PIN(D, 4), // D22 - GPIO_PIN(D, 7), // D23 - GPIO_PIN(C, 2), // D24 - GPIO_PIN(C, 3), // D25 - GPIO_PIN(C, 4), // D26 - GPIO_PIN(C, 5), // D27 - GPIO_PIN(C, 1), // D28 - GPIO_PIN(C, 0), // D29 - GPIO_PIN(A, 6), // D30 - GPIO_PIN(A, 7) // D31 -}; - -}; // namespace sdfat - -#endif // SleepingBeautyGpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Standard1284GpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Standard1284GpioPinMap.h deleted file mode 100644 index b76d275b..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Standard1284GpioPinMap.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef Standard1284GpioPinMap_h -#define Standard1284GpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 4), // D4 - GPIO_PIN(B, 5), // D5 - GPIO_PIN(B, 6), // D6 - GPIO_PIN(B, 7), // D7 - GPIO_PIN(D, 0), // D8 - GPIO_PIN(D, 1), // D9 - GPIO_PIN(D, 2), // D10 - GPIO_PIN(D, 3), // D11 - GPIO_PIN(D, 4), // D12 - GPIO_PIN(D, 5), // D13 - GPIO_PIN(D, 6), // D14 - GPIO_PIN(D, 7), // D15 - GPIO_PIN(C, 0), // D16 - GPIO_PIN(C, 1), // D17 - GPIO_PIN(C, 2), // D18 - GPIO_PIN(C, 3), // D19 - GPIO_PIN(C, 4), // D20 - GPIO_PIN(C, 5), // D21 - GPIO_PIN(C, 6), // D22 - GPIO_PIN(C, 7), // D23 - GPIO_PIN(A, 0), // D24 - GPIO_PIN(A, 1), // D25 - GPIO_PIN(A, 2), // D26 - GPIO_PIN(A, 3), // D27 - GPIO_PIN(A, 4), // D28 - GPIO_PIN(A, 5), // D29 - GPIO_PIN(A, 6), // D30 - GPIO_PIN(A, 7) // D31 -}; - -}; // namespace sdfat - -#endif // Standard1284GpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Teensy2GpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Teensy2GpioPinMap.h deleted file mode 100644 index 3a46e369..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Teensy2GpioPinMap.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef Teensy2GpioPinMap_h -#define Teensy2GpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 7), // D4 - GPIO_PIN(D, 0), // D5 - GPIO_PIN(D, 1), // D6 - GPIO_PIN(D, 2), // D7 - GPIO_PIN(D, 3), // D8 - GPIO_PIN(C, 6), // D9 - GPIO_PIN(C, 7), // D10 - GPIO_PIN(D, 6), // D11 - GPIO_PIN(D, 7), // D12 - GPIO_PIN(B, 4), // D13 - GPIO_PIN(B, 5), // D14 - GPIO_PIN(B, 6), // D15 - GPIO_PIN(F, 7), // D16 - GPIO_PIN(F, 6), // D17 - GPIO_PIN(F, 5), // D18 - GPIO_PIN(F, 4), // D19 - GPIO_PIN(F, 1), // D20 - GPIO_PIN(F, 0), // D21 - GPIO_PIN(D, 4), // D22 - GPIO_PIN(D, 5), // D23 - GPIO_PIN(E, 6), // D24 -}; - -}; // namespace sdfat - -#endif // Teensy2GpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Teensy2ppGpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Teensy2ppGpioPinMap.h deleted file mode 100644 index d7b766fa..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/Teensy2ppGpioPinMap.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef Teensypp2GpioPinMap_h -#define Teensypp2GpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 0), // D0 - GPIO_PIN(D, 1), // D1 - GPIO_PIN(D, 2), // D2 - GPIO_PIN(D, 3), // D3 - GPIO_PIN(D, 4), // D4 - GPIO_PIN(D, 5), // D5 - GPIO_PIN(D, 6), // D6 - GPIO_PIN(D, 7), // D7 - GPIO_PIN(E, 0), // D8 - GPIO_PIN(E, 1), // D9 - GPIO_PIN(C, 0), // D10 - GPIO_PIN(C, 1), // D11 - GPIO_PIN(C, 2), // D12 - GPIO_PIN(C, 3), // D13 - GPIO_PIN(C, 4), // D14 - GPIO_PIN(C, 5), // D15 - GPIO_PIN(C, 6), // D16 - GPIO_PIN(C, 7), // D17 - GPIO_PIN(E, 6), // D18 - GPIO_PIN(E, 7), // D19 - GPIO_PIN(B, 0), // D20 - GPIO_PIN(B, 1), // D21 - GPIO_PIN(B, 2), // D22 - GPIO_PIN(B, 3), // D23 - GPIO_PIN(B, 4), // D24 - GPIO_PIN(B, 5), // D25 - GPIO_PIN(B, 6), // D26 - GPIO_PIN(B, 7), // D27 - GPIO_PIN(A, 0), // D28 - GPIO_PIN(A, 1), // D29 - GPIO_PIN(A, 2), // D30 - GPIO_PIN(A, 3), // D31 - GPIO_PIN(A, 4), // D32 - GPIO_PIN(A, 5), // D33 - GPIO_PIN(A, 6), // D34 - GPIO_PIN(A, 7), // D35 - GPIO_PIN(E, 4), // D36 - GPIO_PIN(E, 5), // D37 - GPIO_PIN(F, 0), // D38 - GPIO_PIN(F, 1), // D39 - GPIO_PIN(F, 2), // D40 - GPIO_PIN(F, 3), // D41 - GPIO_PIN(F, 4), // D42 - GPIO_PIN(F, 5), // D43 - GPIO_PIN(F, 6), // D44 - GPIO_PIN(F, 7), // D45 -}; - -}; // namespace sdfat - -#endif // Teensypp2GpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/UnoGpioPinMap.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/UnoGpioPinMap.h deleted file mode 100644 index 1b87013d..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SpiDriver/boards/UnoGpioPinMap.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef UnoGpioPinMap_h -#define UnoGpioPinMap_h - -namespace sdfat { - -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 0), // D0 - GPIO_PIN(D, 1), // D1 - GPIO_PIN(D, 2), // D2 - GPIO_PIN(D, 3), // D3 - GPIO_PIN(D, 4), // D4 - GPIO_PIN(D, 5), // D5 - GPIO_PIN(D, 6), // D6 - GPIO_PIN(D, 7), // D7 - GPIO_PIN(B, 0), // D8 - GPIO_PIN(B, 1), // D9 - GPIO_PIN(B, 2), // D10 - GPIO_PIN(B, 3), // D11 - GPIO_PIN(B, 4), // D12 - GPIO_PIN(B, 5), // D13 - GPIO_PIN(C, 0), // D14 - GPIO_PIN(C, 1), // D15 - GPIO_PIN(C, 2), // D16 - GPIO_PIN(C, 3), // D17 - GPIO_PIN(C, 4), // D18 - GPIO_PIN(C, 5) // D19 -}; - -}; // namespace sdfat - -#endif // UnoGpioPinMap_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SysCall.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SysCall.h deleted file mode 100644 index 08d5bb56..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/SysCall.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SysCall_h -#define SysCall_h - -/** - * \file - * \brief SysCall class - */ -#if defined(ARDUINO) -#include -#include -#elif defined(PLATFORM_ID) // Only defined if a Particle device -#include "application.h" -#else // defined(ARDUINO) -#error "Unknown system" -#endif // defined(ARDUINO) - -namespace sdfat { - -//------------------------------------------------------------------------------ -#ifdef ESP8266 -#include -#endif // F -//------------------------------------------------------------------------------ -/** \return the time in milliseconds. */ -inline uint16_t curTimeMS() { - return millis(); -} -//------------------------------------------------------------------------------ -/** - * \class SysCall - * \brief SysCall - Class to wrap system calls. - */ -class SysCall { - public: - /** Halt execution of this thread. */ - static void halt() { - while (1) { - yield(); - } - } - /** Yield to other threads. */ - static void yield(); -}; - -#if defined(ESP8266) -inline void SysCall::yield() { - // Avoid ESP8266 bug - delay(0); -} -#elif defined(ARDUINO) -inline void SysCall::yield() { - // Use the external Arduino yield() function. - ::yield(); -} -#elif defined(PLATFORM_ID) // Only defined if a Particle device -inline void SysCall::yield() { - Particle.process(); -} -#else // ESP8266 -inline void SysCall::yield() {} -#endif // ESP8266 - -}; // namespace sdfat - -#endif // SysCall_h diff --git a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/sdios.h b/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/sdios.h deleted file mode 100644 index 6054623a..00000000 --- a/extra-libraries/ESP8266SDFat/ESP8266SdFat/src/sdios.h +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef sdios_h -#define sdios_h -/** - * \file - * \brief C++ IO Streams features. - */ -#include "FatLib/fstream.h" -#include "FatLib/ArduinoStream.h" -#endif // sdios_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/.gitattributes b/extra-libraries/SDFat/SdFat-1.1.0/.gitattributes deleted file mode 100644 index 412eeda7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/extra-libraries/SDFat/SdFat-1.1.0/.gitignore b/extra-libraries/SDFat/SdFat-1.1.0/.gitignore deleted file mode 100644 index b9d6bd92..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/.gitignore +++ /dev/null @@ -1,215 +0,0 @@ -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap -.DS_Store - - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg diff --git a/extra-libraries/SDFat/SdFat-1.1.0/LICENSE.md b/extra-libraries/SDFat/SdFat-1.1.0/LICENSE.md deleted file mode 100644 index ab36c873..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2011..2017 Bill Greiman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/README.md b/extra-libraries/SDFat/SdFat-1.1.0/README.md deleted file mode 100644 index ef752f0c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/README.md +++ /dev/null @@ -1,42 +0,0 @@ -The Arduino SdFat library provides read/write access to FAT16/FAT32 -file systems on SD/SDHC flash cards. - -SdFat requires Arduino 1.6x or greater. - -Key changes: - -Support for multiple SPI ports now uses a pointer to a SPIClass object. - -See the STM32Test example. -``` -explicit SdFat(SPIClass* spiPort); -\\ or -explicit SdFatEX(SPIClass* spiPort); -``` - -Open flags now follow POSIX conventions. O_RDONLY is the same as O_READ and O_WRONLY is the -same as O_WRITE. One and only one of of the mode flags, O_RDONLY, O_RDWR, or -O_WRONLY is required. - -Open flags for Particle Gen3 and ARM boards are now defined by fcntl.h. -See SdFatConfig.h for options. - -Support for particle Gen3 devices. - -New cluster allocation algorithm. - -Please read changes.txt and the html documentation in the extras folder for more information. - -Please report problems as issues. - -A number of configuration options can be set by editing SdFatConfig.h -define macros. See the html documentation for details - -Please read the html documentation for this library. Start with -html/index.html and read the Main Page. Next go to the Classes tab and -read the documentation for the classes SdFat, SdFatEX, SdBaseFile, -SdFile, File, StdioStream, ifstream, ofstream, and others. - -Please continue by reading the html documentation in SdFat/extras/html - -Updated 28 Dec 2018 diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/AnalogLogger/AnalogLogger.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/AnalogLogger/AnalogLogger.ino deleted file mode 100644 index 5e1f9654..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/AnalogLogger/AnalogLogger.ino +++ /dev/null @@ -1,197 +0,0 @@ -// A simple data logger for the Arduino analog pins with optional DS1307 -// uses RTClib from https://github.com/adafruit/RTClib -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -#define SD_CHIP_SELECT SS // SD chip select pin -#define USE_DS1307 0 // set nonzero to use DS1307 RTC -#define LOG_INTERVAL 1000 // mills between entries -#define SENSOR_COUNT 3 // number of analog pins to log -#define ECHO_TO_SERIAL 1 // echo data to serial port if nonzero -#define WAIT_TO_START 1 // Wait for serial input in setup() -#define ADC_DELAY 10 // ADC delay for high impedence sensors - -// file system object -SdFat sd; - -// text file for logging -ofstream logfile; - -// Serial print stream -ArduinoOutStream cout(Serial); - -// buffer to format data - makes it eaiser to echo to Serial -char buf[80]; -//------------------------------------------------------------------------------ -#if SENSOR_COUNT > 6 -#error SENSOR_COUNT too large -#endif // SENSOR_COUNT -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -#if USE_DS1307 -// use RTClib from Adafruit -// https://github.com/adafruit/RTClib - -// The Arduino IDE has a bug that causes Wire and RTClib to be loaded even -// if USE_DS1307 is false. - -#error remove this line and uncomment the next two lines. -//#include -//#include -RTC_DS1307 RTC; // define the Real Time Clock object -//------------------------------------------------------------------------------ -// call back for file timestamps -void dateTime(uint16_t* date, uint16_t* time) { - DateTime now = RTC.now(); - - // return date using FAT_DATE macro to format fields - *date = FAT_DATE(now.year(), now.month(), now.day()); - - // return time using FAT_TIME macro to format fields - *time = FAT_TIME(now.hour(), now.minute(), now.second()); -} -//------------------------------------------------------------------------------ -// format date/time -ostream& operator << (ostream& os, DateTime& dt) { - os << dt.year() << '/' << int(dt.month()) << '/' << int(dt.day()) << ','; - os << int(dt.hour()) << ':' << setfill('0') << setw(2) << int(dt.minute()); - os << ':' << setw(2) << int(dt.second()) << setfill(' '); - return os; -} -#endif // USE_DS1307 -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial. - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << endl << F("FreeStack: ") << FreeStack() << endl; - -#if WAIT_TO_START - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Discard input. - do { - delay(10); - } while(Serial.available() && Serial.read() >= 0); -#endif // WAIT_TO_START - -#if USE_DS1307 - // connect to RTC - Wire.begin(); - if (!RTC.begin()) { - error("RTC failed"); - } - - // set date time callback function - SdFile::dateTimeCallback(dateTime); - DateTime now = RTC.now(); - cout << now << endl; -#endif // USE_DS1307 - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CHIP_SELECT, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // create a new file in root, the current working directory - char name[] = "logger00.csv"; - - for (uint8_t i = 0; i < 100; i++) { - name[6] = i/10 + '0'; - name[7] = i%10 + '0'; - if (sd.exists(name)) { - continue; - } - logfile.open(name); - break; - } - if (!logfile.is_open()) { - error("file.open"); - } - - cout << F("Logging to: ") << name << endl; - cout << F("Type any character to stop\n\n"); - - // format header in buffer - obufstream bout(buf, sizeof(buf)); - - bout << F("millis"); - -#if USE_DS1307 - bout << F(",date,time"); -#endif // USE_DS1307 - - for (uint8_t i = 0; i < SENSOR_COUNT; i++) { - bout << F(",sens") << int(i); - } - logfile << buf << endl; - -#if ECHO_TO_SERIAL - cout << buf << endl; -#endif // ECHO_TO_SERIAL -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t m; - - // wait for time to be a multiple of interval - do { - m = millis(); - } while (m % LOG_INTERVAL); - - // use buffer stream to format line - obufstream bout(buf, sizeof(buf)); - - // start with time in millis - bout << m; - -#if USE_DS1307 - DateTime now = RTC.now(); - bout << ',' << now; -#endif // USE_DS1307 - - // read analog pins and format data - for (uint8_t ia = 0; ia < SENSOR_COUNT; ia++) { -#if ADC_DELAY - analogRead(ia); - delay(ADC_DELAY); -#endif // ADC_DELAY - bout << ',' << analogRead(ia); - } - bout << endl; - - // log data and flush to SD - logfile << buf << flush; - - // check for error - if (!logfile) { - error("write data failed"); - } - -#if ECHO_TO_SERIAL - cout << buf; -#endif // ECHO_TO_SERIAL - - // don't log two points in the same millis - if (m == millis()) { - delay(1); - } - - if (!Serial.available()) { - return; - } - logfile.close(); - cout << F("Done!"); - SysCall::halt(); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/BaseExtCaseTest/BaseExtCaseTest.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/BaseExtCaseTest/BaseExtCaseTest.ino deleted file mode 100644 index 0212d3ba..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/BaseExtCaseTest/BaseExtCaseTest.ino +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Program to test Short File Name character case flags. - */ -#include -#include "SdFat.h" - -const uint8_t chipSelect = SS; - -SdFat sd; - -SdFile file; -const char* name[] = { - "low.low", "low.Mix", "low.UP", - "Mix.low", "Mix.Mix", "Mix.UP", - "UP.low", "UP.Mix", "UP.UP" -}; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - Serial.println("begin failed"); - return; - } - for (uint8_t i = 0; i < 9; i++) { - sd.remove(name[i]); - if (!file.open(name[i], O_RDWR | O_CREAT | O_EXCL)) { - sd.errorHalt(name[i]); - } - file.println(name[i]); - - file.close(); - } - sd.ls(LS_DATE|LS_SIZE); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/HelloWorld/HelloWorld.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/HelloWorld/HelloWorld.ino deleted file mode 100644 index 2f168036..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/HelloWorld/HelloWorld.ino +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include "SdFat.h" -#include "sdios.h" - -// create a serial output stream -ArduinoOutStream cout(Serial); - -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(2000); - - cout << "Hello, World!\n"; -} - -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/MiniSerial/MiniSerial.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/MiniSerial/MiniSerial.ino deleted file mode 100644 index 46931ab4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/MiniSerial/MiniSerial.ino +++ /dev/null @@ -1,29 +0,0 @@ -// This example illustrates use of SdFat's -// minimal unbuffered AVR Serial support. -// -// This is useful for debug and saves RAM -// Will not work on Due, Leonardo, or Teensy - -#include -#include "SdFat.h" -#include "FreeStack.h" -#ifdef UDR0 // Must be AVR with serial port zero. -#include "MinimumSerial.h" - -MinimumSerial MiniSerial; - -void setup() { - MiniSerial.begin(9600); - MiniSerial.println(FreeStack()); -} -void loop() { - int c; - MiniSerial.println(F("Type any Character")); - while ((c = MiniSerial.read()) < 0) {} - MiniSerial.print(F("Read: ")); - MiniSerial.println((char)c); - while (MiniSerial.read() >= 0) {} -} -#else // UDR0 -#error no AVR serial port 0 -#endif // UDR0 \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino deleted file mode 100644 index f727d2d4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/PrintBenchmarkSD/PrintBenchmarkSD.ino +++ /dev/null @@ -1,125 +0,0 @@ -/* - * This program is a simple Print benchmark. - */ -#include -#include - -// SD chip select pin -const uint8_t chipSelect = SS; - -// number of lines to print -const uint16_t N_PRINT = 20000; - - -// test file -File file; - -//------------------------------------------------------------------------------ -void error(const char* s) { - Serial.println(s); - while (1) { - yield(); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F() stores strings in flash to save RAM - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - yield(); - } - - // initialize the SD card - if (!SD.begin(chipSelect)) { - error("begin"); - } - - Serial.println(F("Starting print test. Please wait.\n")); - - // do write test - for (int test = 0; test < 2; test++) { - file = SD.open("bench.txt", FILE_WRITE); - - if (!file) { - error("open failed"); - } - switch(test) { - case 0: - Serial.println(F("Test of println(uint16_t)")); - break; - - case 1: - Serial.println(F("Test of println(double)")); - break; - } - maxLatency = 0; - minLatency = 999999; - totalLatency = 0; - uint32_t t = millis(); - for (uint16_t i = 0; i < N_PRINT; i++) { - uint32_t m = micros(); - - switch(test) { - case 0: - file.println(i); - break; - - case 1: - file.println((double)0.01*i); - break; - } - - if (file.getWriteError()) { - error("write failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - } - file.flush(); - t = millis() - t; - double s = file.size(); - Serial.print(F("Time ")); - Serial.print(0.001*t); - Serial.println(F(" sec")); - Serial.print(F("File size ")); - Serial.print(0.001*s); - Serial.print(F(" KB\n")); - Serial.print(F("Write ")); - Serial.print(s/t); - Serial.print(F(" KB/sec\n")); - Serial.print(F("Maximum latency: ")); - Serial.print(maxLatency); - Serial.print(F(" usec, Minimum Latency: ")); - Serial.print(minLatency); - Serial.print(F(" usec, Avg Latency: ")); - Serial.print(totalLatency/N_PRINT); - Serial.println(F(" usec\n")); - SD.remove("bench.txt"); - } - file.close(); - Serial.println(F("Done!\n")); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/SD_Size/SD_Size.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/SD_Size/SD_Size.ino deleted file mode 100644 index b021d276..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/SD_Size/SD_Size.ino +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Program to compare size of Arduino SD library with SdFat. - * See SdFatSize.ino for SdFat program. - */ -#include -#include - -File file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - - if (!SD.begin()) { - Serial.println("begin failed"); - return; - } - file = SD.open("TEST_SD.TXT", FILE_WRITE); - - file.println("Hello"); - - file.close(); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/SdFatSize/SdFatSize.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/SdFatSize/SdFatSize.ino deleted file mode 100644 index 3c37d306..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/SdFatSize/SdFatSize.ino +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Program to compare size of SdFat with Arduino SD library. - * See SD_Size.ino for Arduino SD program. - * - */ -#include -#include "SdFat.h" - -SdFat sd; - -SdFile file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - if (!sd.begin()) { - Serial.println("begin failed"); - return; - } - file.open("SizeTest.txt", O_RDWR | O_CREAT | O_AT_END); - - file.println("Hello"); - - file.close(); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/StreamParseInt/StreamParseInt.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/StreamParseInt/StreamParseInt.ino deleted file mode 100644 index 2da1f7c6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/StreamParseInt/StreamParseInt.ino +++ /dev/null @@ -1,44 +0,0 @@ -// Simple demo of the Stream parsInt() member function. -#include -// The next two lines replace #include . -#include "SdFat.h" -SdFat SD; - -// SD card chip select pin - Modify the value of csPin for your SD module. -const uint8_t csPin = SS; - -File file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial. - while(!Serial) { - SysCall::yield(); - } - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize the SD. - if (!SD.begin(csPin)) { - Serial.println(F("begin error")); - return; - } - // Create and open the file. Use flag to truncate an existing file. - file = SD.open("stream.txt", O_RDWR|O_CREAT|O_TRUNC); - if (!file) { - Serial.println(F("open error")); - return; - } - // Write a test number to the file. - file.println("12345"); - - // Rewind the file and read the number with parseInt(). - file.seek(0); - int i = file.parseInt(); - Serial.print(F("parseInt: ")); - Serial.println(i); - file.close(); -} - -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/append/append.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/append/append.ino deleted file mode 100644 index cd2915d9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/append/append.ino +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Append Example - * - * This program shows how to use open for append. - * The program will append 100 line each time it opens the file. - * The program will open and close the file 100 times. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// create Serial stream -ArduinoOutStream cout(Serial); - -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - // filename for this example - char name[] = "append.txt"; - - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << endl << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - cout << F("Appending to: ") << name; - - for (uint8_t i = 0; i < 100; i++) { - // open stream for append - ofstream sdout(name, ios::out | ios::app); - if (!sdout) { - error("open failed"); - } - - // append 100 lines to the file - for (uint8_t j = 0; j < 100; j++) { - // use int() so byte will print as decimal number - sdout << "line " << int(j) << " of pass " << int(i); - sdout << " millis = " << millis() << endl; - } - // close the stream - sdout.close(); - - if (!sdout) { - error("append data failed"); - } - - // output progress indicator - if (i % 25 == 0) { - cout << endl; - } - cout << '.'; - } - cout << endl << "Done" << endl; -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/average/average.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/average/average.ino deleted file mode 100644 index 22126b46..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/average/average.ino +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Calculate the sum and average of a list of floating point numbers - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// object for the SD file system -SdFat sd; - -// define a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void writeTestFile() { - // open the output file - ofstream sdout("AvgTest.txt"); - - // write a series of float numbers - for (int16_t i = -1001; i < 2000; i += 13) { - sdout << 0.1 * i << endl; - } - if (!sdout) { - sd.errorHalt("sdout failed"); - } - - sdout.close(); -} -//------------------------------------------------------------------------------ -void calcAverage() { - uint16_t n = 0; // count of input numbers - double num; // current input number - double sum = 0; // sum of input numbers - - // open the input file - ifstream sdin("AvgTest.txt"); - - // check for an open failure - if (!sdin) { - sd.errorHalt("sdin failed"); - } - - // read and sum the numbers - while (sdin >> num) { - n++; - sum += num; - } - - // print the results - cout << "sum of " << n << " numbers = " << sum << endl; - cout << "average = " << sum/n << endl; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // write the test file - writeTestFile(); - - // read the test file and calculate the average - calcAverage(); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/benchSD/benchSD.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/benchSD/benchSD.ino deleted file mode 100644 index 5adfd578..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/benchSD/benchSD.ino +++ /dev/null @@ -1,149 +0,0 @@ -/* - * This program is a simple binary write/read benchmark - * for the standard Arduino SD.h library. - */ -#include -#include - -// SD chip select pin -const uint8_t chipSelect = SS; - -#define FILE_SIZE_MB 5 -#define FILE_SIZE (1000000UL*FILE_SIZE_MB) -#define BUF_SIZE 100 - -uint8_t buf[BUF_SIZE]; - -// test file -File file; - -//------------------------------------------------------------------------------ -void error(const char* s) { - Serial.println(s); - while (1) { - yield(); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Discard any input. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F() stores strings in flash to save RAM - Serial.println(F("Type any character to start")); - - while (!Serial.available()) { - yield(); - } - if (!SD.begin(chipSelect)) { - error("begin"); - } - - // open or create file - truncate existing file. - file = SD.open("Bench.dat", O_RDWR | O_TRUNC | O_CREAT); - if (!file) { - error("open failed"); - } - - // fill buf with known data - for (uint16_t i = 0; i < (BUF_SIZE-2); i++) { - buf[i] = 'A' + (i % 26); - } - buf[BUF_SIZE-2] = '\r'; - buf[BUF_SIZE-1] = '\n'; - - Serial.print(F("File size ")); - Serial.print(FILE_SIZE_MB); - Serial.println(F("MB")); - Serial.print(F("Buffer size ")); - Serial.print(BUF_SIZE); - Serial.println(F(" bytes")); - Serial.println(F("Starting write test. Please wait up to a minute")); - - // do write test - uint32_t n = FILE_SIZE/sizeof(buf); - maxLatency = 0; - minLatency = 999999; - totalLatency = 0; - uint32_t t = millis(); - for (uint32_t i = 0; i < n; i++) { - uint32_t m = micros(); - if (file.write(buf, sizeof(buf)) != sizeof(buf)) { - error("write failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - } - file.flush(); - t = millis() - t; - double s = file.size(); - Serial.print(F("Write ")); - Serial.print(s/t); - Serial.print(F(" KB/sec\n")); - Serial.print(F("Maximum latency: ")); - Serial.print(maxLatency); - Serial.print(F(" usec, Minimum Latency: ")); - Serial.print(minLatency); - Serial.print(F(" usec, Avg Latency: ")); - Serial.print(totalLatency/n); - Serial.print(F(" usec\n\n")); - Serial.println(F("Starting read test. Please wait up to a minute")); - // do read test - file.seek(0); - maxLatency = 0; - minLatency = 99999; - totalLatency = 0; - t = millis(); - for (uint32_t i = 0; i < n; i++) { - buf[BUF_SIZE-1] = 0; - uint32_t m = micros(); - if (file.read(buf, sizeof(buf)) != sizeof(buf)) { - error("read failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - if (buf[BUF_SIZE-1] != '\n') { - error("data check"); - } - } - t = millis() - t; - Serial.print(F("Read ")); - Serial.print(s/t); - Serial.print(F(" KB/sec\n")); - Serial.print(F("Maximum latency: ")); - Serial.print(maxLatency); - Serial.print(F(" usec, Minimum Latency: ")); - Serial.print(minLatency); - Serial.print(F(" usec, Avg Latency: ")); - Serial.print(totalLatency/n); - Serial.print(F(" usec\n\n")); - Serial.print(F("Done\n\n")); - file.close(); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/bufstream/bufstream.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/bufstream/bufstream.ino deleted file mode 100644 index eb029d82..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/bufstream/bufstream.ino +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Use of ibufsteam to parse a line and obufstream to format a line - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// create a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void setup() { - char buf[20]; // buffer for formatted line - int i, j, k; // values from parsed line - - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(2000); - - // initialize input string - ibufstream bin("123 456 789"); - - // parse the string "123 456 789" - bin >> i >> j >> k; - - // initialize output buffer - obufstream bout(buf, sizeof(buf)); - - // format the output string - bout << k << ',' << j << ',' << i << endl; - - // write the string to serial - cout << buf; -} - -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/cin_cout/cin_cout.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/cin_cout/cin_cout.ino deleted file mode 100644 index 466895b4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/cin_cout/cin_cout.ino +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Demo of ArduinoInStream and ArduinoOutStream - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// create serial output stream -ArduinoOutStream cout(Serial); - -// input line buffer -char cinBuf[40]; - -// create serial input stream -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - int32_t n = 0; - - cout << "\nenter an integer\n"; - - cin.readline(); - - if (cin >> n) { - cout << "The number is: " << n; - } else { - // will fail if no digits or not in range [-2147483648, 2147483647] - cout << "Invalid input: " << cinBuf; - } - cout << endl; -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/eventlog/eventlog.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/eventlog/eventlog.ino deleted file mode 100644 index 9065f315..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/eventlog/eventlog.ino +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Append a line to a file - demo of pathnames and streams - */ -#include -#include "SdFat.h" -#include "sdios.h" -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// define a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -/* - * Append a line to logfile.txt - */ -void logEvent(const char *msg) { - // create dir if needed - sd.mkdir("logs/2014/Jan"); - - // create or open a file for append - ofstream sdlog("logs/2014/Jan/logfile.txt", ios::out | ios::app); - - // append a line to the file - sdlog << msg << endl; - - // check for errors - if (!sdlog) { - sd.errorHalt("append failed"); - } - - sdlog.close(); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // F() stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - delay(400); // catch Due reset problem - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // append a line to the logfile - logEvent("Another line for the logfile"); - - cout << F("Done - check /logs/2014/Jan/logfile.txt on the SD") << endl; -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/fgetsRewrite/fgetsRewrite.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/fgetsRewrite/fgetsRewrite.ino deleted file mode 100644 index 159445e0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/fgetsRewrite/fgetsRewrite.ino +++ /dev/null @@ -1,111 +0,0 @@ -// Demo of rewriting a line read by fgets -#include -#include "SdFat.h" -#include "sdios.h" - -// SD card chip select pin -const uint8_t chipSelect = SS; - -// file system -SdFat sd; - -// print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash memory -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void demoFgets() { - char line[25]; - int c; - uint32_t pos; - - // open test file - SdFile rdfile("fgets.txt", O_RDWR); - - // check for open error - if (!rdfile.isOpen()) { - error("demoFgets"); - } - - // list file - cout << F("-----Before Rewrite\r\n"); - while ((c = rdfile.read()) >= 0) { - Serial.write(c); - } - - rdfile.rewind(); - // read lines from the file to get position - while (1) { - pos = rdfile.curPosition(); - if (rdfile.fgets(line, sizeof(line)) < 0) { - error("Line not found"); - } - // find line that contains "Line C" - if (strstr(line, "Line C")) { - break; - } - } - - // rewrite line with 'C' - if (!rdfile.seekSet(pos)) { - error("seekSet"); - } - rdfile.println("Line R"); - rdfile.rewind(); - - // list file - cout << F("\r\n-----After Rewrite\r\n"); - while ((c = rdfile.read()) >= 0) { - Serial.write(c); - } - - // close so rewrite is not lost - rdfile.close(); -} -//------------------------------------------------------------------------------ -void makeTestFile() { - // create or open test file - SdFile wrfile("fgets.txt", O_WRONLY | O_CREAT | O_TRUNC); - - // check for open error - if (!wrfile.isOpen()) { - error("MakeTestFile"); - } - - // write test file - wrfile.print(F( - "Line A\r\n" - "Line B\r\n" - "Line C\r\n" - "Line D\r\n" - "Line E\r\n" - )); - wrfile.close(); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - makeTestFile(); - - demoFgets(); - - cout << F("\nDone\n"); -} -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/readlog/readlog.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/readlog/readlog.ino deleted file mode 100644 index b5eb8384..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/readlog/readlog.ino +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Read the logfile created by the eventlog.ino example. - * Demo of pathnames and working directories - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// define a serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void setup() { - int c; - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // set current working directory - if (!sd.chdir("logs/2014/Jan/")) { - sd.errorHalt("chdir failed. Did you run eventlog.ino?"); - } - // open file in current working directory - ifstream file("logfile.txt"); - - if (!file.is_open()) { - sd.errorHalt("open failed"); - } - - // copy the file to Serial - while ((c = file.get()) >= 0) { - cout << (char)c; - } - - cout << "Done" << endl; -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/readme.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/readme.txt deleted file mode 100644 index fe0742e2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/#attic/readme.txt +++ /dev/null @@ -1,34 +0,0 @@ -Old and debug examples. - -AnalogLogger - A simple data logger for one or more analog pins. - -append - This sketch creates a large file by successive - open/write/close operations. - -average - A demonstration of parsing floating point numbers. - -BaseExtCaseTest - Long file name test. - -benchSD - A read/write benchmark for the standard Arduino SD.h library. - -bufstream - ibufsteam to parse a line and obufstream to format a line. - -cin_cout - Demo of ArduinoInStream and ArduinoOutStream. - -eventlog - Append a line to a file - demo of pathnames and streams. - -fgetsRewrite - Demo of rewriting a line read by fgets. - -HelloWorld - Create a serial output stream. - -MiniSerial - SdFat minimal serial support for debug. - -PrintBenchmarkSD - Bench mark SD.h print. - -readlog - Read file. Demo of pathnames and current working directory. - -SD_Size - Determine flash used by SD.h example. - -SdFatSize - Determine flash used by SdFat. - -StreamParseInt - Simple demo of the Stream parsInt() member function. diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/AnalogBinLogger/AnalogBinLogger.h b/extra-libraries/SDFat/SdFat-1.1.0/examples/AnalogBinLogger/AnalogBinLogger.h deleted file mode 100644 index 35a34e54..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/AnalogBinLogger/AnalogBinLogger.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef AnalogBinLogger_h -#define AnalogBinLogger_h -//------------------------------------------------------------------------------ -// First block of file. -struct metadata_t { - unsigned long adcFrequency; // ADC clock frequency - unsigned long cpuFrequency; // CPU clock frequency - unsigned long sampleInterval; // Sample interval in CPU cycles. - unsigned long recordEightBits; // Size of ADC values, nonzero for 8-bits. - unsigned long pinCount; // Number of analog pins in a sample. - unsigned long pinNumber[123]; // List of pin numbers in a sample. -}; -//------------------------------------------------------------------------------ -// Data block for 8-bit ADC mode. -const size_t DATA_DIM8 = 508; -struct block8_t { - unsigned short count; // count of data values - unsigned short overrun; // count of overruns since last block - unsigned char data[DATA_DIM8]; -}; -//------------------------------------------------------------------------------ -// Data block for 10-bit ADC mode. -const size_t DATA_DIM16 = 254; -struct block16_t { - unsigned short count; // count of data values - unsigned short overrun; // count of overruns since last block - unsigned short data[DATA_DIM16]; -}; -//------------------------------------------------------------------------------ -// Data block for PC use -struct adcdata_t { - unsigned short count; // count of data values - unsigned short overrun; // count of overruns since last block - union { - unsigned char u8[DATA_DIM8]; - unsigned short u16[DATA_DIM16]; - } data; -}; -#endif // AnalogBinLogger_h \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/AnalogBinLogger/AnalogBinLogger.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/AnalogBinLogger/AnalogBinLogger.ino deleted file mode 100644 index 67cf62b6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/AnalogBinLogger/AnalogBinLogger.ino +++ /dev/null @@ -1,826 +0,0 @@ -/** - * This program logs data from the Arduino ADC to a binary file. - * - * Samples are logged at regular intervals. Each Sample consists of the ADC - * values for the analog pins defined in the PIN_LIST array. The pins numbers - * may be in any order. - * - * Edit the configuration constants below to set the sample pins, sample rate, - * and other configuration values. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 13 512 byte buffers will be used. - * - * Each 512 byte data block in the file has a four byte header followed by up - * to 508 bytes of data. (508 values in 8-bit mode or 254 values in 10-bit mode) - * Each block contains an integral number of samples with unused space at the - * end of the block. - * - * Data is written to the file using a SD multiple block write command. - */ -#ifdef __AVR__ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "AnalogBinLogger.h" -//------------------------------------------------------------------------------ -// Analog pin number list for a sample. Pins may be in any order and pin -// numbers may be repeated. -const uint8_t PIN_LIST[] = {0, 1, 2, 3, 4}; -//------------------------------------------------------------------------------ -// Sample rate in samples per second. -const float SAMPLE_RATE = 5000; // Must be 0.25 or greater. - -// The interval between samples in seconds, SAMPLE_INTERVAL, may be set to a -// constant instead of being calculated from SAMPLE_RATE. SAMPLE_RATE is not -// used in the code below. For example, setting SAMPLE_INTERVAL = 2.0e-4 -// will result in a 200 microsecond sample interval. -const float SAMPLE_INTERVAL = 1.0/SAMPLE_RATE; - -// Setting ROUND_SAMPLE_INTERVAL non-zero will cause the sample interval to -// be rounded to a a multiple of the ADC clock period and will reduce sample -// time jitter. -#define ROUND_SAMPLE_INTERVAL 1 -//------------------------------------------------------------------------------ -// ADC clock rate. -// The ADC clock rate is normally calculated from the pin count and sample -// interval. The calculation attempts to use the lowest possible ADC clock -// rate. -// -// You can select an ADC clock rate by defining the symbol ADC_PRESCALER to -// one of these values. You must choose an appropriate ADC clock rate for -// your sample interval. -// #define ADC_PRESCALER 7 // F_CPU/128 125 kHz on an Uno -// #define ADC_PRESCALER 6 // F_CPU/64 250 kHz on an Uno -// #define ADC_PRESCALER 5 // F_CPU/32 500 kHz on an Uno -// #define ADC_PRESCALER 4 // F_CPU/16 1000 kHz on an Uno -// #define ADC_PRESCALER 3 // F_CPU/8 2000 kHz on an Uno (8-bit mode only) -//------------------------------------------------------------------------------ -// Reference voltage. See the processor data-sheet for reference details. -// uint8_t const ADC_REF = 0; // External Reference AREF pin. -uint8_t const ADC_REF = (1 << REFS0); // Vcc Reference. -// uint8_t const ADC_REF = (1 << REFS1); // Internal 1.1 (only 644 1284P Mega) -// uint8_t const ADC_REF = (1 << REFS1) | (1 << REFS0); // Internal 1.1 or 2.56 -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; - -// log file base name. Must be six characters or less. -#define FILE_BASE_NAME "analog" - -// Set RECORD_EIGHT_BITS non-zero to record only the high 8-bits of the ADC. -#define RECORD_EIGHT_BITS 0 -//------------------------------------------------------------------------------ -// Pin definitions. -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for SD write -// overrun errors and logging continues. -const int8_t ERROR_LED_PIN = 3; - -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT additional -// buffers. QUEUE_DIM must be a power of two larger than -//(BUFFER_BLOCK_COUNT + 1). -// -#if RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 1; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 4; // Must be a power of two! -// -#elif RAMEND < 0X20FF -// Use total of five 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 8; // Must be a power of two! -// -#elif RAMEND < 0X40FF -// Use total of 13 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 16; // Must be a power of two! -// -#else // RAMEND -// Use total of 29 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 28; -// Dimension for queues of 512 byte SD blocks. -const uint8_t QUEUE_DIM = 32; // Must be a power of two! -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME "tmp_log.bin" - -// Size of file base name. Must not be larger than six. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; - -// Number of analog pins to log. -const uint8_t PIN_COUNT = sizeof(PIN_LIST)/sizeof(PIN_LIST[0]); - -// Minimum ADC clock cycles per sample interval -const uint16_t MIN_ADC_CYCLES = 15; - -// Extra cpu cycles to setup ADC with more than one pin per sample. -const uint16_t ISR_SETUP_ADC = PIN_COUNT > 1 ? 100 : 0; - -// Maximum cycles for timer0 system interrupt, millis, micros. -const uint16_t ISR_TIMER0 = 160; -//============================================================================== -SdFat sd; - -SdBaseFile binFile; - -char binName[13] = FILE_BASE_NAME "00.bin"; - -#if RECORD_EIGHT_BITS -const size_t SAMPLES_PER_BLOCK = DATA_DIM8/PIN_COUNT; -typedef block8_t block_t; -#else // RECORD_EIGHT_BITS -const size_t SAMPLES_PER_BLOCK = DATA_DIM16/PIN_COUNT; -typedef block16_t block_t; -#endif // RECORD_EIGHT_BITS - -block_t* emptyQueue[QUEUE_DIM]; -uint8_t emptyHead; -uint8_t emptyTail; - -block_t* fullQueue[QUEUE_DIM]; -volatile uint8_t fullHead; // volatile insures non-interrupt code sees changes. -uint8_t fullTail; - -// queueNext assumes QUEUE_DIM is a power of two -inline uint8_t queueNext(uint8_t ht) { - return (ht + 1) & (QUEUE_DIM -1); -} -//============================================================================== -// Interrupt Service Routines - -// Pointer to current buffer. -block_t* isrBuf; - -// Need new buffer if true. -bool isrBufNeeded = true; - -// overrun count -uint16_t isrOver = 0; - -// ADC configuration for each pin. -uint8_t adcmux[PIN_COUNT]; -uint8_t adcsra[PIN_COUNT]; -uint8_t adcsrb[PIN_COUNT]; -uint8_t adcindex = 1; - -// Insure no timer events are missed. -volatile bool timerError = false; -volatile bool timerFlag = false; -//------------------------------------------------------------------------------ -// ADC done interrupt. -ISR(ADC_vect) { - // Read ADC data. -#if RECORD_EIGHT_BITS - uint8_t d = ADCH; -#else // RECORD_EIGHT_BITS - // This will access ADCL first. - uint16_t d = ADC; -#endif // RECORD_EIGHT_BITS - - if (isrBufNeeded && emptyHead == emptyTail) { - // no buffers - count overrun - if (isrOver < 0XFFFF) { - isrOver++; - } - - // Avoid missed timer error. - timerFlag = false; - return; - } - // Start ADC - if (PIN_COUNT > 1) { - ADMUX = adcmux[adcindex]; - ADCSRB = adcsrb[adcindex]; - ADCSRA = adcsra[adcindex]; - if (adcindex == 0) { - timerFlag = false; - } - adcindex = adcindex < (PIN_COUNT - 1) ? adcindex + 1 : 0; - } else { - timerFlag = false; - } - // Check for buffer needed. - if (isrBufNeeded) { - // Remove buffer from empty queue. - isrBuf = emptyQueue[emptyTail]; - emptyTail = queueNext(emptyTail); - isrBuf->count = 0; - isrBuf->overrun = isrOver; - isrBufNeeded = false; - } - // Store ADC data. - isrBuf->data[isrBuf->count++] = d; - - // Check for buffer full. - if (isrBuf->count >= PIN_COUNT*SAMPLES_PER_BLOCK) { - // Put buffer isrIn full queue. - uint8_t tmp = fullHead; // Avoid extra fetch of volatile fullHead. - fullQueue[tmp] = (block_t*)isrBuf; - fullHead = queueNext(tmp); - - // Set buffer needed and clear overruns. - isrBufNeeded = true; - isrOver = 0; - } -} -//------------------------------------------------------------------------------ -// timer1 interrupt to clear OCF1B -ISR(TIMER1_COMPB_vect) { - // Make sure ADC ISR responded to timer event. - if (timerFlag) { - timerError = true; - } - timerFlag = true; -} -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//============================================================================== -#if ADPS0 != 0 || ADPS1 != 1 || ADPS2 != 2 -#error unexpected ADC prescaler bits -#endif -//------------------------------------------------------------------------------ -// initialize ADC and timer1 -void adcInit(metadata_t* meta) { - uint8_t adps; // prescaler bits for ADCSRA - uint32_t ticks = F_CPU*SAMPLE_INTERVAL + 0.5; // Sample interval cpu cycles. - - if (ADC_REF & ~((1 << REFS0) | (1 << REFS1))) { - error("Invalid ADC reference"); - } -#ifdef ADC_PRESCALER - if (ADC_PRESCALER > 7 || ADC_PRESCALER < 2) { - error("Invalid ADC prescaler"); - } - adps = ADC_PRESCALER; -#else // ADC_PRESCALER - // Allow extra cpu cycles to change ADC settings if more than one pin. - int32_t adcCycles = (ticks - ISR_TIMER0)/PIN_COUNT - ISR_SETUP_ADC; - - for (adps = 7; adps > 0; adps--) { - if (adcCycles >= (MIN_ADC_CYCLES << adps)) { - break; - } - } -#endif // ADC_PRESCALER - meta->adcFrequency = F_CPU >> adps; - if (meta->adcFrequency > (RECORD_EIGHT_BITS ? 2000000 : 1000000)) { - error("Sample Rate Too High"); - } -#if ROUND_SAMPLE_INTERVAL - // Round so interval is multiple of ADC clock. - ticks += 1 << (adps - 1); - ticks >>= adps; - ticks <<= adps; -#endif // ROUND_SAMPLE_INTERVAL - - if (PIN_COUNT > sizeof(meta->pinNumber)/sizeof(meta->pinNumber[0])) { - error("Too many pins"); - } - meta->pinCount = PIN_COUNT; - meta->recordEightBits = RECORD_EIGHT_BITS; - - for (int i = 0; i < PIN_COUNT; i++) { - uint8_t pin = PIN_LIST[i]; - if (pin >= NUM_ANALOG_INPUTS) { - error("Invalid Analog pin number"); - } - meta->pinNumber[i] = pin; - - // Set ADC reference and low three bits of analog pin number. - adcmux[i] = (pin & 7) | ADC_REF; - if (RECORD_EIGHT_BITS) { - adcmux[i] |= 1 << ADLAR; - } - - // If this is the first pin, trigger on timer/counter 1 compare match B. - adcsrb[i] = i == 0 ? (1 << ADTS2) | (1 << ADTS0) : 0; -#ifdef MUX5 - if (pin > 7) { - adcsrb[i] |= (1 << MUX5); - } -#endif // MUX5 - adcsra[i] = (1 << ADEN) | (1 << ADIE) | adps; - adcsra[i] |= i == 0 ? 1 << ADATE : 1 << ADSC; - } - - // Setup timer1 - TCCR1A = 0; - uint8_t tshift; - if (ticks < 0X10000) { - // no prescale, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10); - tshift = 0; - } else if (ticks < 0X10000*8) { - // prescale 8, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11); - tshift = 3; - } else if (ticks < 0X10000*64) { - // prescale 64, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10); - tshift = 6; - } else if (ticks < 0X10000*256) { - // prescale 256, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12); - tshift = 8; - } else if (ticks < 0X10000*1024) { - // prescale 1024, CTC mode - TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS12) | (1 << CS10); - tshift = 10; - } else { - error("Sample Rate Too Slow"); - } - // divide by prescaler - ticks >>= tshift; - // set TOP for timer reset - ICR1 = ticks - 1; - // compare for ADC start - OCR1B = 0; - - // multiply by prescaler - ticks <<= tshift; - - // Sample interval in CPU clock ticks. - meta->sampleInterval = ticks; - meta->cpuFrequency = F_CPU; - float sampleRate = (float)meta->cpuFrequency/meta->sampleInterval; - Serial.print(F("Sample pins:")); - for (uint8_t i = 0; i < meta->pinCount; i++) { - Serial.print(' '); - Serial.print(meta->pinNumber[i], DEC); - } - Serial.println(); - Serial.print(F("ADC bits: ")); - Serial.println(meta->recordEightBits ? 8 : 10); - Serial.print(F("ADC clock kHz: ")); - Serial.println(meta->adcFrequency/1000); - Serial.print(F("Sample Rate: ")); - Serial.println(sampleRate); - Serial.print(F("Sample interval usec: ")); - Serial.println(1000000.0/sampleRate, 4); -} -//------------------------------------------------------------------------------ -// enable ADC and timer1 interrupts -void adcStart() { - // initialize ISR - isrBufNeeded = true; - isrOver = 0; - adcindex = 1; - - // Clear any pending interrupt. - ADCSRA |= 1 << ADIF; - - // Setup for first pin. - ADMUX = adcmux[0]; - ADCSRB = adcsrb[0]; - ADCSRA = adcsra[0]; - - // Enable timer1 interrupts. - timerError = false; - timerFlag = false; - TCNT1 = 0; - TIFR1 = 1 << OCF1B; - TIMSK1 = 1 << OCIE1B; -} -//------------------------------------------------------------------------------ -void adcStop() { - TIMSK1 = 0; - ADCSRA = 0; -} -//------------------------------------------------------------------------------ -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t buf; - metadata_t* pm; - uint32_t t0 = millis(); - char csvName[13]; - StdioStream csvStream; - - if (!binFile.isOpen()) { - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - if (binFile.read(&buf , 512) != 512) { - error("Read metadata failed"); - } - // Create a new csv file. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvStream.fopen(csvName, "w")) { - error("open csvStream failed"); - } - Serial.println(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - pm = (metadata_t*)&buf; - csvStream.print(F("Interval,")); - float intervalMicros = 1.0e6*pm->sampleInterval/(float)pm->cpuFrequency; - csvStream.print(intervalMicros, 4); - csvStream.println(F(",usec")); - for (uint8_t i = 0; i < pm->pinCount; i++) { - if (i) { - csvStream.putc(','); - } - csvStream.print(F("pin")); - csvStream.print(pm->pinNumber[i]); - } - csvStream.println(); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&buf, 512) == 512) { - if (buf.count == 0) { - break; - } - if (buf.overrun) { - csvStream.print(F("OVERRUN,")); - csvStream.println(buf.overrun); - } - for (uint16_t j = 0; j < buf.count; j += PIN_COUNT) { - for (uint16_t i = 0; i < PIN_COUNT; i++) { - if (i) { - csvStream.putc(','); - } - csvStream.print(buf.data[i + j]); - } - csvStream.println(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvStream.fclose(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t buf; - uint32_t bgnBlock, endBlock; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(F("No current binary file")); - return; - } - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Checking overrun errors - type any character to stop")); - if (binFile.read(&buf , 512) != 512) { - error("Read metadata failed"); - } - bn++; - while (binFile.read(&buf, 512) == 512) { - if (buf.count == 0) { - break; - } - if (buf.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(bgnBlock + bn); - Serial.print(','); - Serial.println(buf.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t buf; - if (!binFile.isOpen()) { - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - if (binFile.read(&buf , 512) != 512) { - error("Read metadata failed"); - } - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - while (!Serial.available() && binFile.read(&buf , 512) == 512) { - if (buf.count == 0) { - break; - } - if (buf.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(buf.overrun); - } - for (uint16_t i = 0; i < buf.count; i++) { - Serial.print(buf.data[i], DEC); - if ((i+1)%PIN_COUNT) { - Serial.print(','); - } else { - Serial.println(); - } - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -// max number of blocks to erase per erase call -uint32_t const ERASE_SIZE = 262144L; -void logData() { - uint32_t bgnBlock, endBlock; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT]; - - Serial.println(); - - // Initialize ADC and timer1. - adcInit((metadata_t*) &block[0]); - - // Find unused file name. - if (BASE_NAME_SIZE > 6) { - error("FILE_BASE_NAME too long"); - } - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file")); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("Creating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Use SdFat's internal buffer. - uint8_t* cache = (uint8_t*)sd.vol()->cacheClear(); - if (cache == 0) { - error("cacheClear failed"); - } - - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } - // Start a multiple block write. - if (!sd.card()->writeStart(bgnBlock, FILE_BLOCK_COUNT)) { - error("writeBegin failed"); - } - // Write metadata. - if (!sd.card()->writeData((uint8_t*)&block[0])) { - error("Write metadata failed"); - } - // Initialize queues. - emptyHead = emptyTail = 0; - fullHead = fullTail = 0; - - // Use SdFat buffer for one block. - emptyQueue[emptyHead] = (block_t*)cache; - emptyHead = queueNext(emptyHead); - - // Put rest of buffers in the empty queue. - for (uint8_t i = 0; i < BUFFER_BLOCK_COUNT; i++) { - emptyQueue[emptyHead] = &block[i]; - emptyHead = queueNext(emptyHead); - } - // Give SD time to prepare for big write. - delay(1000); - Serial.println(F("Logging - type any character to stop")); - // Wait for Serial Idle. - Serial.flush(); - delay(10); - uint32_t bn = 1; - uint32_t t0 = millis(); - uint32_t t1 = t0; - uint32_t overruns = 0; - uint32_t count = 0; - uint32_t maxLatency = 0; - - // Start logging interrupts. - adcStart(); - while (1) { - if (fullHead != fullTail) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - t1 = millis(); - if (usec > maxLatency) { - maxLatency = usec; - } - count += pBlock->count; - - // Add overruns and possibly light LED. - if (pBlock->overrun) { - overruns += pBlock->overrun; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } - } - // Move block to empty queue. - emptyQueue[emptyHead] = pBlock; - emptyHead = queueNext(emptyHead); - fullTail = queueNext(fullTail); - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop ISR calls. - adcStop(); - break; - } - } - if (timerError) { - error("Missed timer event - rate too high"); - } - if (Serial.available()) { - // Stop ISR calls. - adcStop(); - if (isrBuf != 0 && isrBuf->count >= PIN_COUNT) { - // Truncate to last complete sample. - isrBuf->count = PIN_COUNT*(isrBuf->count/PIN_COUNT); - // Put buffer in full queue. - fullQueue[fullHead] = isrBuf; - fullHead = queueNext(fullHead); - isrBuf = 0; - } - if (fullHead == fullTail) { - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Record time sec: ")); - Serial.println(0.001*(t1 - t0), 3); - Serial.print(F("Sample count: ")); - Serial.println(count/PIN_COUNT); - Serial.print(F("Samples/sec: ")); - Serial.println((1000.0/PIN_COUNT)*count/(t1-t0)); - Serial.print(F("Overruns: ")); - Serial.println(overruns); - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Read the first sample pin to init the ADC. - analogRead(PIN_LIST[0]); - - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(); - fatalBlink(); - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("r - record ADC data")); - - while(!Serial.available()) { - SysCall::yield(); - } - char c = tolower(Serial.read()); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'r') { - logData(); - } else { - Serial.println(F("Invalid entry")); - } -} -#else // __AVR__ -#error This program is only for AVR. -#endif // __AVR__ \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/DirectoryFunctions/DirectoryFunctions.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/DirectoryFunctions/DirectoryFunctions.ino deleted file mode 100644 index 2d669f9b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/DirectoryFunctions/DirectoryFunctions.ino +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Example use of chdir(), ls(), mkdir(), and rmdir(). - */ -#include -#include "SdFat.h" -#include "sdios.h" -// SD card chip select pin. -const uint8_t chipSelect = SS; -//------------------------------------------------------------------------------ - -// File system object. -SdFat sd; - -// Directory file. -SdFile root; - -// Use for file creation in folders. -SdFile file; - -// Create a Serial output stream. -ArduinoOutStream cout(Serial); - -// Buffer for Serial input. -char cinBuf[40]; - -// Create a serial input stream. -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//============================================================================== -// Error messages stored in flash. -#define error(msg) sd.errorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - - cout << F("Type any character to start\n"); - // Wait for input line and discard. - cin.readline(); - cout << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (sd.exists("Folder1") - || sd.exists("Folder1/file1.txt") - || sd.exists("Folder1/File2.txt")) { - error("Please remove existing Folder1, file1.txt, and File2.txt"); - } - - int rootFileCount = 0; - if (!root.open("/")) { - error("open root failed"); - } - while (file.openNext(&root, O_RDONLY)) { - if (!file.isHidden()) { - rootFileCount++; - } - file.close(); - if (rootFileCount > 10) { - error("Too many files in root. Please use an empty SD."); - } - } - if (rootFileCount) { - cout << F("\nPlease use an empty SD for best results.\n\n"); - delay(1000); - } - // Create a new folder. - if (!sd.mkdir("Folder1")) { - error("Create Folder1 failed"); - } - cout << F("Created Folder1\n"); - - // Create a file in Folder1 using a path. - if (!file.open("Folder1/file1.txt", O_WRONLY | O_CREAT)) { - error("create Folder1/file1.txt failed"); - } - file.close(); - cout << F("Created Folder1/file1.txt\n"); - - // Change volume working directory to Folder1. - if (!sd.chdir("Folder1")) { - error("chdir failed for Folder1.\n"); - } - cout << F("chdir to Folder1\n"); - - // Create File2.txt in current directory. - if (!file.open("File2.txt", O_WRONLY | O_CREAT)) { - error("create File2.txt failed"); - } - file.close(); - cout << F("Created File2.txt in current directory\n"); - - cout << F("\nList of files on the SD.\n"); - sd.ls("/", LS_R); - - // Remove files from current directory. - if (!sd.remove("file1.txt") || !sd.remove("File2.txt")) { - error("remove failed"); - } - cout << F("\nfile1.txt and File2.txt removed.\n"); - - // Change current directory to root. - if (!sd.chdir()) { - error("chdir to root failed.\n"); - } - - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - - // Remove Folder1. - if (!sd.rmdir("Folder1")) { - error("rmdir for Folder1 failed\n"); - } - - cout << F("\nFolder1 removed.\n"); - cout << F("\nList of files on the SD.\n"); - sd.ls(LS_R); - cout << F("Done!\n"); -} -//------------------------------------------------------------------------------ -// Nothing happens in loop. -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/LongFileName.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/LongFileName.ino deleted file mode 100644 index 92d04a05..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/LongFileName.ino +++ /dev/null @@ -1,102 +0,0 @@ -// Example use of lfnOpenNext and open by index. -// You can use test files located in -// SdFat/examples/LongFileName/testFiles. -#include -#include "SdFat.h" -#include "FreeStack.h" - -// SD card chip select pin. -const uint8_t SD_CS_PIN = SS; - -SdFat sd; -SdFile file; -SdFile dirFile; - -// Number of files found. -uint16_t n = 0; - -// Max of ten files since files are selected with a single digit. -const uint16_t nMax = 10; - -// Position of file's directory entry. -uint16_t dirIndex[nMax]; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - while (!Serial) {} - delay(1000); - - // Print the location of some test files. - Serial.println(F("\r\n" - "You can use test files located in\r\n" - "SdFat/examples/LongFileName/testFiles")); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(); - - // List files in root directory. - if (!dirFile.open("/", O_RDONLY)) { - sd.errorHalt("open root failed"); - } - while (n < nMax && file.openNext(&dirFile, O_RDONLY)) { - - // Skip directories and hidden files. - if (!file.isSubDir() && !file.isHidden()) { - - // Save dirIndex of file in directory. - dirIndex[n] = file.dirIndex(); - - // Print the file number and name. - Serial.print(n++); - Serial.write(' '); - file.printName(&Serial); - Serial.println(); - } - file.close(); - } -} -//------------------------------------------------------------------------------ -void loop() { - int c; - - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.print(F("\r\nEnter File Number: ")); - - while (!Serial.available()) { - SysCall::yield(); - } - c = Serial.read(); - uint8_t i = c - '0'; - if (!isdigit(c) || i >= n) { - Serial.println(F("Invald number")); - return; - } - Serial.println(i); - if (!file.open(&dirFile, dirIndex[i], O_RDONLY)) { - sd.errorHalt(F("open")); - } - Serial.println(); - - char last = 0; - - // Copy up to 500 characters to Serial. - for (int k = 0; k < 500 && (c = file.read()) > 0; k++) { - Serial.write(last = (char)c); - } - // Add new line if missing from last line. - if (last != '\n') { - Serial.println(); - } - file.close(); - Serial.flush(); - delay(100); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/A long name can be 255 characters.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/A long name can be 255 characters.txt deleted file mode 100644 index 62c7a7b4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/A long name can be 255 characters.txt +++ /dev/null @@ -1,4 +0,0 @@ -This is "A long name can be 255 characters.txt" -This file has a typical Long File Name. - -The maximum length of a Long File Name is 255 characters. diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/LFN,NAME.TXT b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/LFN,NAME.TXT deleted file mode 100644 index 3fc38d6f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/LFN,NAME.TXT +++ /dev/null @@ -1 +0,0 @@ -LFN,NAME.TXT is not 8.3 since it has a comma. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/MIXCASE.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/MIXCASE.txt deleted file mode 100644 index ce661428..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/MIXCASE.txt +++ /dev/null @@ -1,5 +0,0 @@ -MIXCASE.txt does not have a Long File Name. - -Starting with NT, file names of this form, -have the basename and extension character case -encoded in two bits of the 8.3 directory entry. diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/Not_8_3.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/Not_8_3.txt deleted file mode 100644 index 701a34f7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/Not_8_3.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not_8_3.txt has a Long File Name -since the basename is mixed case. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/OK%83.TXT b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/OK%83.TXT deleted file mode 100644 index 6935e783..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/OK%83.TXT +++ /dev/null @@ -1 +0,0 @@ -OK%83.TXT is a valid 8.3 name. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/STD_8_3.TXT b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/STD_8_3.TXT deleted file mode 100644 index e0d2234b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/STD_8_3.TXT +++ /dev/null @@ -1 +0,0 @@ -STD_8_3.TXT - a vanilla 8.3 name. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/With Blank.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/With Blank.txt deleted file mode 100644 index ef37e070..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/With Blank.txt +++ /dev/null @@ -1,2 +0,0 @@ -With Blank.txt -Just another example of a Long File Name. diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/With.Two dots.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/With.Two dots.txt deleted file mode 100644 index 1739391c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/With.Two dots.txt +++ /dev/null @@ -1,2 +0,0 @@ -"With Two.dots.txt" -Lots of reasons this is a Long File Name. diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/lower.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/lower.txt deleted file mode 100644 index 43a6bd0b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/lower.txt +++ /dev/null @@ -1,5 +0,0 @@ -lower.txt does not have a Long File Name. - -Starting with NT, file names of this form, -have the basename and extension character case -encoded in two bits of the 8.3 directory entry. diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/mixed.TXT b/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/mixed.TXT deleted file mode 100644 index 03d9bd0a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LongFileName/testFiles/mixed.TXT +++ /dev/null @@ -1,5 +0,0 @@ -mixed.TXT does not have a Long File Name. - -Starting with NT, file names of this form, -have the basename and extension character case -encoded in two bits of the 8.3 directory entry. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/LowLatencyLogger.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/LowLatencyLogger.ino deleted file mode 100644 index 40aa40d3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/LowLatencyLogger.ino +++ /dev/null @@ -1,655 +0,0 @@ -/** - * This program logs data to a binary file. Functions are included - * to convert the binary file to a csv text file. - * - * Samples are logged at regular intervals. The maximum logging rate - * depends on the quality of your SD card and the time required to - * read sensor data. This example has been tested at 500 Hz with - * good SD card on an Uno. 4000 HZ is possible on a Due. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 12 512 byte buffers will be used. - * - * Data is written to the file using a SD multiple block write command. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "UserTypes.h" - -#ifdef __AVR_ATmega328P__ -#include "MinimumSerial.h" -MinimumSerial MinSerial; -#define Serial MinSerial -#endif // __AVR_ATmega328P__ -//============================================================================== -// Start of configuration constants. -//============================================================================== -// Abort run on an overrun. Data before the overrun will be saved. -#define ABORT_ON_OVERRUN 1 -//------------------------------------------------------------------------------ -//Interval between data records in microseconds. -const uint32_t LOG_INTERVAL_USEC = 2000; -//------------------------------------------------------------------------------ -// Set USE_SHARED_SPI non-zero for use of an SPI sensor. -// May not work for some cards. -#ifndef USE_SHARED_SPI -#define USE_SHARED_SPI 0 -#endif // USE_SHARED_SPI -//------------------------------------------------------------------------------ -// Pin definitions. -// -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for -// overrun errors and logging continues unless ABORT_ON_OVERRUN -// is non-zero. -#ifdef ERROR_LED_PIN -#undef ERROR_LED_PIN -#endif // ERROR_LED_PIN -const int8_t ERROR_LED_PIN = -1; -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; -// -// log file base name if not defined in UserTypes.h -#ifndef FILE_BASE_NAME -#define FILE_BASE_NAME "data" -#endif // FILE_BASE_NAME -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT-1 additional -// buffers. -// -#ifndef RAMEND -// Assume ARM. Use total of ten 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 10; -// -#elif RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 2; -// -#elif RAMEND < 0X20FF -// Use total of four 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// -#else // RAMEND -// Use total of 12 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME FILE_BASE_NAME "##.bin" - -// Size of file base name. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; -const uint8_t FILE_NAME_DIM = BASE_NAME_SIZE + 7; -char binName[FILE_NAME_DIM] = FILE_BASE_NAME "00.bin"; - -SdFat sd; - -SdBaseFile binFile; - -// Number of data records in a block. -const uint16_t DATA_DIM = (512 - 4)/sizeof(data_t); - -//Compute fill so block size is 512 bytes. FILL_DIM may be zero. -const uint16_t FILL_DIM = 512 - 4 - DATA_DIM*sizeof(data_t); - -struct block_t { - uint16_t count; - uint16_t overrun; - data_t data[DATA_DIM]; - uint8_t fill[FILL_DIM]; -}; -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(&Serial, F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - SysCall::yield(); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t block; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Checking overrun errors - type any character to stop")); - while (binFile.read(&block, 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(binFile.firstBlock() + bn); - Serial.print(','); - Serial.println(block.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//----------------------------------------------------------------------------- -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t block; - uint32_t t0 = millis(); - uint32_t syncCluster = 0; - SdFile csvFile; - char csvName[FILE_NAME_DIM]; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Create a new csvFile. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { - error("open csvFile failed"); - } - binFile.rewind(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - printHeader(&csvFile); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&block, 512) == 512) { - uint16_t i; - if (block.count == 0 || block.count > DATA_DIM) { - break; - } - if (block.overrun) { - csvFile.print(F("OVERRUN,")); - csvFile.println(block.overrun); - } - for (i = 0; i < block.count; i++) { - printData(&csvFile, &block.data[i]); - } - if (csvFile.curCluster() != syncCluster) { - csvFile.sync(); - syncCluster = csvFile.curCluster(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvFile.close(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//----------------------------------------------------------------------------- -void createBinFile() { - // max number of blocks to erase per erase call - const uint32_t ERASE_SIZE = 262144L; - uint32_t bgnBlock, endBlock; - - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file " TMP_FILE_NAME)); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("\nCreating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t block; - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - printHeader(&Serial); - while (!Serial.available() && binFile.read(&block , 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(block.overrun); - } - for (uint16_t i = 0; i < block.count; i++) { - printData(&Serial, &block.data[i]); - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -void logData() { - createBinFile(); - recordBinFile(); - renameBinFile(); -} -//------------------------------------------------------------------------------ -void openBinFile() { - char name[FILE_NAME_DIM]; - strcpy(name, binName); - Serial.println(F("\nEnter two digit version")); - Serial.write(name, BASE_NAME_SIZE); - for (int i = 0; i < 2; i++) { - while (!Serial.available()) { - SysCall::yield(); - } - char c = Serial.read(); - Serial.write(c); - if (c < '0' || c > '9') { - Serial.println(F("\nInvalid digit")); - return; - } - name[BASE_NAME_SIZE + i] = c; - } - Serial.println(&name[BASE_NAME_SIZE+2]); - if (!sd.exists(name)) { - Serial.println(F("File does not exist")); - return; - } - binFile.close(); - strcpy(binName, name); - if (!binFile.open(binName, O_RDONLY)) { - Serial.println(F("open failed")); - return; - } - Serial.println(F("File opened")); -} -//------------------------------------------------------------------------------ -void recordBinFile() { - const uint8_t QUEUE_DIM = BUFFER_BLOCK_COUNT + 1; - // Index of last queue location. - const uint8_t QUEUE_LAST = QUEUE_DIM - 1; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT - 1]; - - block_t* curBlock = 0; - - block_t* emptyStack[BUFFER_BLOCK_COUNT]; - uint8_t emptyTop; - uint8_t minTop; - - block_t* fullQueue[QUEUE_DIM]; - uint8_t fullHead = 0; - uint8_t fullTail = 0; - - // Use SdFat's internal buffer. - emptyStack[0] = (block_t*)sd.vol()->cacheClear(); - if (emptyStack[0] == 0) { - error("cacheClear failed"); - } - // Put rest of buffers on the empty stack. - for (int i = 1; i < BUFFER_BLOCK_COUNT; i++) { - emptyStack[i] = &block[i - 1]; - } - emptyTop = BUFFER_BLOCK_COUNT; - minTop = BUFFER_BLOCK_COUNT; - - // Start a multiple block write. - if (!sd.card()->writeStart(binFile.firstBlock())) { - error("writeStart failed"); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Logging - type any character to stop")); - bool closeFile = false; - uint32_t bn = 0; - uint32_t maxLatency = 0; - uint32_t overrun = 0; - uint32_t overrunTotal = 0; - uint32_t logTime = micros(); - while(1) { - // Time for next data record. - logTime += LOG_INTERVAL_USEC; - if (Serial.available()) { - closeFile = true; - } - if (closeFile) { - if (curBlock != 0) { - // Put buffer in full queue. - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } else { - if (curBlock == 0 && emptyTop != 0) { - curBlock = emptyStack[--emptyTop]; - if (emptyTop < minTop) { - minTop = emptyTop; - } - curBlock->count = 0; - curBlock->overrun = overrun; - overrun = 0; - } - if ((int32_t)(logTime - micros()) < 0) { - error("Rate too fast"); - } - int32_t delta; - do { - delta = micros() - logTime; - } while (delta < 0); - if (curBlock == 0) { - overrun++; - overrunTotal++; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } -#if ABORT_ON_OVERRUN - Serial.println(F("Overrun abort")); - break; - #endif // ABORT_ON_OVERRUN - } else { -#if USE_SHARED_SPI - sd.card()->spiStop(); -#endif // USE_SHARED_SPI - acquireData(&curBlock->data[curBlock->count++]); -#if USE_SHARED_SPI - sd.card()->spiStart(); -#endif // USE_SHARED_SPI - if (curBlock->count == DATA_DIM) { - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } - } - if (fullHead == fullTail) { - // Exit loop if done. - if (closeFile) { - break; - } - } else if (!sd.card()->isBusy()) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - fullTail = fullTail < QUEUE_LAST ? fullTail + 1 : 0; - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - if (usec > maxLatency) { - maxLatency = usec; - } - // Move block to empty queue. - emptyStack[emptyTop++] = pBlock; - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - Serial.print(F("Min Free buffers: ")); - Serial.println(minTop); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Overruns: ")); - Serial.println(overrunTotal); - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } -} -//------------------------------------------------------------------------------ -void recoverTmpFile() { - uint16_t count; - if (!binFile.open(TMP_FILE_NAME, O_RDWR)) { - return; - } - if (binFile.read(&count, 2) != 2 || count != DATA_DIM) { - error("Please delete existing " TMP_FILE_NAME); - } - Serial.println(F("\nRecovering data in tmp file " TMP_FILE_NAME)); - uint32_t bgnBlock = 0; - uint32_t endBlock = binFile.fileSize()/512 - 1; - // find last used block. - while (bgnBlock < endBlock) { - uint32_t midBlock = (bgnBlock + endBlock + 1)/2; - binFile.seekSet(512*midBlock); - if (binFile.read(&count, 2) != 2) error("read"); - if (count == 0 || count > DATA_DIM) { - endBlock = midBlock - 1; - } else { - bgnBlock = midBlock; - } - } - // truncate after last used block. - if (!binFile.truncate(512*(bgnBlock + 1))) { - error("Truncate " TMP_FILE_NAME " failed"); - } - renameBinFile(); -} -//----------------------------------------------------------------------------- -void renameBinFile() { - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("File size: ")); - Serial.print(binFile.fileSize()/512); - Serial.println(F(" blocks")); -} -//------------------------------------------------------------------------------ -void testSensor() { - const uint32_t interval = 200000; - int32_t diff; - data_t data; - Serial.println(F("\nTesting - type any character to stop\n")); - // Wait for Serial Idle. - delay(1000); - printHeader(&Serial); - uint32_t m = micros(); - while (!Serial.available()) { - m += interval; - do { - diff = m - micros(); - } while (diff > 0); - acquireData(&data); - printData(&Serial, &data); - } -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("\nFreeStack: ")); - Serial.println(FreeStack()); - Serial.print(F("Records/block: ")); - Serial.println(DATA_DIM); - if (sizeof(block_t) != 512) { - error("Invalid block size"); - } - // Allow userSetup access to SPI bus. - pinMode(SD_CS_PIN, OUTPUT); - digitalWrite(SD_CS_PIN, HIGH); - - // Setup sensors. - userSetup(); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(&Serial); - fatalBlink(); - } - // recover existing tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); - while (!Serial.available()) { - SysCall::yield(); - } - if (Serial.read() == 'Y') { - recoverTmpFile(); - } else { - error("'Y' not typed, please manually delete " TMP_FILE_NAME); - } - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("b - open existing bin file")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("l - list files")); - Serial.println(F("r - record data")); - Serial.println(F("t - test without logging")); - while(!Serial.available()) { - SysCall::yield(); - } -#if WDT_YIELD_TIME_MICROS - Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); -#endif - - char c = tolower(Serial.read()); - - // Discard extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - if (c == 'b') { - openBinFile(); - } else if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'l') { - Serial.println(F("\nls:")); - sd.ls(&Serial, LS_SIZE); - } else if (c == 'r') { - logData(); - } else if (c == 't') { - testSensor(); - } else { - Serial.println(F("Invalid entry")); - } -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/UserFunctions.cpp b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/UserFunctions.cpp deleted file mode 100644 index 559b11c0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/UserFunctions.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "UserTypes.h" -// User data functions. Modify these functions for your data items. - -// Start time for data -static uint32_t startMicros; - -// Acquire a data record. -void acquireData(data_t* data) { - data->time = micros(); - for (int i = 0; i < ADC_DIM; i++) { - data->adc[i] = analogRead(i); - } -} - -// Print a data record. -void printData(Print* pr, data_t* data) { - if (startMicros == 0) { - startMicros = data->time; - } - pr->print(data->time - startMicros); - for (int i = 0; i < ADC_DIM; i++) { - pr->write(','); - pr->print(data->adc[i]); - } - pr->println(); -} - -// Print data header. -void printHeader(Print* pr) { - startMicros = 0; - pr->print(F("micros")); - for (int i = 0; i < ADC_DIM; i++) { - pr->print(F(",adc")); - pr->print(i); - } - pr->println(); -} - -// Sensor setup -void userSetup() { -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/UserTypes.h b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/UserTypes.h deleted file mode 100644 index 7ccae8fa..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLogger/UserTypes.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef UserTypes_h -#define UserTypes_h -#include "Arduino.h" -// User data types. Modify for your data items. -#define FILE_BASE_NAME "adc4pin" -const uint8_t ADC_DIM = 4; -struct data_t { - uint32_t time; - uint16_t adc[ADC_DIM]; -}; -void acquireData(data_t* data); -void printData(Print* pr, data_t* data); -void printHeader(Print* pr); -void userSetup(); -#endif // UserTypes_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/LowLatencyLogger.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/LowLatencyLogger.ino deleted file mode 100644 index 40aa40d3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/LowLatencyLogger.ino +++ /dev/null @@ -1,655 +0,0 @@ -/** - * This program logs data to a binary file. Functions are included - * to convert the binary file to a csv text file. - * - * Samples are logged at regular intervals. The maximum logging rate - * depends on the quality of your SD card and the time required to - * read sensor data. This example has been tested at 500 Hz with - * good SD card on an Uno. 4000 HZ is possible on a Due. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 12 512 byte buffers will be used. - * - * Data is written to the file using a SD multiple block write command. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "UserTypes.h" - -#ifdef __AVR_ATmega328P__ -#include "MinimumSerial.h" -MinimumSerial MinSerial; -#define Serial MinSerial -#endif // __AVR_ATmega328P__ -//============================================================================== -// Start of configuration constants. -//============================================================================== -// Abort run on an overrun. Data before the overrun will be saved. -#define ABORT_ON_OVERRUN 1 -//------------------------------------------------------------------------------ -//Interval between data records in microseconds. -const uint32_t LOG_INTERVAL_USEC = 2000; -//------------------------------------------------------------------------------ -// Set USE_SHARED_SPI non-zero for use of an SPI sensor. -// May not work for some cards. -#ifndef USE_SHARED_SPI -#define USE_SHARED_SPI 0 -#endif // USE_SHARED_SPI -//------------------------------------------------------------------------------ -// Pin definitions. -// -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for -// overrun errors and logging continues unless ABORT_ON_OVERRUN -// is non-zero. -#ifdef ERROR_LED_PIN -#undef ERROR_LED_PIN -#endif // ERROR_LED_PIN -const int8_t ERROR_LED_PIN = -1; -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; -// -// log file base name if not defined in UserTypes.h -#ifndef FILE_BASE_NAME -#define FILE_BASE_NAME "data" -#endif // FILE_BASE_NAME -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT-1 additional -// buffers. -// -#ifndef RAMEND -// Assume ARM. Use total of ten 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 10; -// -#elif RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 2; -// -#elif RAMEND < 0X20FF -// Use total of four 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// -#else // RAMEND -// Use total of 12 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME FILE_BASE_NAME "##.bin" - -// Size of file base name. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; -const uint8_t FILE_NAME_DIM = BASE_NAME_SIZE + 7; -char binName[FILE_NAME_DIM] = FILE_BASE_NAME "00.bin"; - -SdFat sd; - -SdBaseFile binFile; - -// Number of data records in a block. -const uint16_t DATA_DIM = (512 - 4)/sizeof(data_t); - -//Compute fill so block size is 512 bytes. FILL_DIM may be zero. -const uint16_t FILL_DIM = 512 - 4 - DATA_DIM*sizeof(data_t); - -struct block_t { - uint16_t count; - uint16_t overrun; - data_t data[DATA_DIM]; - uint8_t fill[FILL_DIM]; -}; -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(&Serial, F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - SysCall::yield(); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t block; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Checking overrun errors - type any character to stop")); - while (binFile.read(&block, 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(binFile.firstBlock() + bn); - Serial.print(','); - Serial.println(block.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//----------------------------------------------------------------------------- -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t block; - uint32_t t0 = millis(); - uint32_t syncCluster = 0; - SdFile csvFile; - char csvName[FILE_NAME_DIM]; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Create a new csvFile. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { - error("open csvFile failed"); - } - binFile.rewind(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - printHeader(&csvFile); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&block, 512) == 512) { - uint16_t i; - if (block.count == 0 || block.count > DATA_DIM) { - break; - } - if (block.overrun) { - csvFile.print(F("OVERRUN,")); - csvFile.println(block.overrun); - } - for (i = 0; i < block.count; i++) { - printData(&csvFile, &block.data[i]); - } - if (csvFile.curCluster() != syncCluster) { - csvFile.sync(); - syncCluster = csvFile.curCluster(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvFile.close(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//----------------------------------------------------------------------------- -void createBinFile() { - // max number of blocks to erase per erase call - const uint32_t ERASE_SIZE = 262144L; - uint32_t bgnBlock, endBlock; - - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file " TMP_FILE_NAME)); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("\nCreating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t block; - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - printHeader(&Serial); - while (!Serial.available() && binFile.read(&block , 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(block.overrun); - } - for (uint16_t i = 0; i < block.count; i++) { - printData(&Serial, &block.data[i]); - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -void logData() { - createBinFile(); - recordBinFile(); - renameBinFile(); -} -//------------------------------------------------------------------------------ -void openBinFile() { - char name[FILE_NAME_DIM]; - strcpy(name, binName); - Serial.println(F("\nEnter two digit version")); - Serial.write(name, BASE_NAME_SIZE); - for (int i = 0; i < 2; i++) { - while (!Serial.available()) { - SysCall::yield(); - } - char c = Serial.read(); - Serial.write(c); - if (c < '0' || c > '9') { - Serial.println(F("\nInvalid digit")); - return; - } - name[BASE_NAME_SIZE + i] = c; - } - Serial.println(&name[BASE_NAME_SIZE+2]); - if (!sd.exists(name)) { - Serial.println(F("File does not exist")); - return; - } - binFile.close(); - strcpy(binName, name); - if (!binFile.open(binName, O_RDONLY)) { - Serial.println(F("open failed")); - return; - } - Serial.println(F("File opened")); -} -//------------------------------------------------------------------------------ -void recordBinFile() { - const uint8_t QUEUE_DIM = BUFFER_BLOCK_COUNT + 1; - // Index of last queue location. - const uint8_t QUEUE_LAST = QUEUE_DIM - 1; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT - 1]; - - block_t* curBlock = 0; - - block_t* emptyStack[BUFFER_BLOCK_COUNT]; - uint8_t emptyTop; - uint8_t minTop; - - block_t* fullQueue[QUEUE_DIM]; - uint8_t fullHead = 0; - uint8_t fullTail = 0; - - // Use SdFat's internal buffer. - emptyStack[0] = (block_t*)sd.vol()->cacheClear(); - if (emptyStack[0] == 0) { - error("cacheClear failed"); - } - // Put rest of buffers on the empty stack. - for (int i = 1; i < BUFFER_BLOCK_COUNT; i++) { - emptyStack[i] = &block[i - 1]; - } - emptyTop = BUFFER_BLOCK_COUNT; - minTop = BUFFER_BLOCK_COUNT; - - // Start a multiple block write. - if (!sd.card()->writeStart(binFile.firstBlock())) { - error("writeStart failed"); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Logging - type any character to stop")); - bool closeFile = false; - uint32_t bn = 0; - uint32_t maxLatency = 0; - uint32_t overrun = 0; - uint32_t overrunTotal = 0; - uint32_t logTime = micros(); - while(1) { - // Time for next data record. - logTime += LOG_INTERVAL_USEC; - if (Serial.available()) { - closeFile = true; - } - if (closeFile) { - if (curBlock != 0) { - // Put buffer in full queue. - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } else { - if (curBlock == 0 && emptyTop != 0) { - curBlock = emptyStack[--emptyTop]; - if (emptyTop < minTop) { - minTop = emptyTop; - } - curBlock->count = 0; - curBlock->overrun = overrun; - overrun = 0; - } - if ((int32_t)(logTime - micros()) < 0) { - error("Rate too fast"); - } - int32_t delta; - do { - delta = micros() - logTime; - } while (delta < 0); - if (curBlock == 0) { - overrun++; - overrunTotal++; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } -#if ABORT_ON_OVERRUN - Serial.println(F("Overrun abort")); - break; - #endif // ABORT_ON_OVERRUN - } else { -#if USE_SHARED_SPI - sd.card()->spiStop(); -#endif // USE_SHARED_SPI - acquireData(&curBlock->data[curBlock->count++]); -#if USE_SHARED_SPI - sd.card()->spiStart(); -#endif // USE_SHARED_SPI - if (curBlock->count == DATA_DIM) { - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } - } - if (fullHead == fullTail) { - // Exit loop if done. - if (closeFile) { - break; - } - } else if (!sd.card()->isBusy()) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - fullTail = fullTail < QUEUE_LAST ? fullTail + 1 : 0; - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - if (usec > maxLatency) { - maxLatency = usec; - } - // Move block to empty queue. - emptyStack[emptyTop++] = pBlock; - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - Serial.print(F("Min Free buffers: ")); - Serial.println(minTop); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Overruns: ")); - Serial.println(overrunTotal); - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } -} -//------------------------------------------------------------------------------ -void recoverTmpFile() { - uint16_t count; - if (!binFile.open(TMP_FILE_NAME, O_RDWR)) { - return; - } - if (binFile.read(&count, 2) != 2 || count != DATA_DIM) { - error("Please delete existing " TMP_FILE_NAME); - } - Serial.println(F("\nRecovering data in tmp file " TMP_FILE_NAME)); - uint32_t bgnBlock = 0; - uint32_t endBlock = binFile.fileSize()/512 - 1; - // find last used block. - while (bgnBlock < endBlock) { - uint32_t midBlock = (bgnBlock + endBlock + 1)/2; - binFile.seekSet(512*midBlock); - if (binFile.read(&count, 2) != 2) error("read"); - if (count == 0 || count > DATA_DIM) { - endBlock = midBlock - 1; - } else { - bgnBlock = midBlock; - } - } - // truncate after last used block. - if (!binFile.truncate(512*(bgnBlock + 1))) { - error("Truncate " TMP_FILE_NAME " failed"); - } - renameBinFile(); -} -//----------------------------------------------------------------------------- -void renameBinFile() { - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("File size: ")); - Serial.print(binFile.fileSize()/512); - Serial.println(F(" blocks")); -} -//------------------------------------------------------------------------------ -void testSensor() { - const uint32_t interval = 200000; - int32_t diff; - data_t data; - Serial.println(F("\nTesting - type any character to stop\n")); - // Wait for Serial Idle. - delay(1000); - printHeader(&Serial); - uint32_t m = micros(); - while (!Serial.available()) { - m += interval; - do { - diff = m - micros(); - } while (diff > 0); - acquireData(&data); - printData(&Serial, &data); - } -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("\nFreeStack: ")); - Serial.println(FreeStack()); - Serial.print(F("Records/block: ")); - Serial.println(DATA_DIM); - if (sizeof(block_t) != 512) { - error("Invalid block size"); - } - // Allow userSetup access to SPI bus. - pinMode(SD_CS_PIN, OUTPUT); - digitalWrite(SD_CS_PIN, HIGH); - - // Setup sensors. - userSetup(); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(&Serial); - fatalBlink(); - } - // recover existing tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); - while (!Serial.available()) { - SysCall::yield(); - } - if (Serial.read() == 'Y') { - recoverTmpFile(); - } else { - error("'Y' not typed, please manually delete " TMP_FILE_NAME); - } - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("b - open existing bin file")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("l - list files")); - Serial.println(F("r - record data")); - Serial.println(F("t - test without logging")); - while(!Serial.available()) { - SysCall::yield(); - } -#if WDT_YIELD_TIME_MICROS - Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); -#endif - - char c = tolower(Serial.read()); - - // Discard extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - if (c == 'b') { - openBinFile(); - } else if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'l') { - Serial.println(F("\nls:")); - sd.ls(&Serial, LS_SIZE); - } else if (c == 'r') { - logData(); - } else if (c == 't') { - testSensor(); - } else { - Serial.println(F("Invalid entry")); - } -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino deleted file mode 100644 index 91c8fcc5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/LowLatencyLoggerADXL345.ino +++ /dev/null @@ -1 +0,0 @@ -// Empty file with name LowLatencyLoggerADXL345.ino to make IDE happy. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/UserFunctions.cpp b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/UserFunctions.cpp deleted file mode 100644 index 71d624f6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/UserFunctions.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "UserTypes.h" -// User data functions. Modify these functions for your data items. - -// Start time for data -static uint32_t startMicros; - -const uint8_t ADXL345_CS = 9; - -const uint8_t POWER_CTL = 0x2D; //Power Control Register -const uint8_t DATA_FORMAT = 0x31; -const uint8_t DATAX0 = 0x32; //X-Axis Data 0 -const uint8_t DATAX1 = 0x33; //X-Axis Data 1 -const uint8_t DATAY0 = 0x34; //Y-Axis Data 0 -const uint8_t DATAY1 = 0x35; //Y-Axis Data 1 -const uint8_t DATAZ0 = 0x36; //Z-Axis Data 0 -const uint8_t DATAZ1 = 0x37; //Z-Axis Data 1 - -void writeADXL345Register(const uint8_t registerAddress, const uint8_t value) { - // Max SPI clock frequency is 5 MHz with CPOL = 1 and CPHA = 1. - SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE3)); - digitalWrite(ADXL345_CS, LOW); - SPI.transfer(registerAddress); - SPI.transfer(value); - digitalWrite(ADXL345_CS, HIGH); - SPI.endTransaction(); -} - -void userSetup() { - SPI.begin(); - pinMode(ADXL345_CS, OUTPUT); - digitalWrite(ADXL345_CS, HIGH); - //Put the ADXL345 into +/- 4G range by writing the value 0x01 to the DATA_FORMAT register. - writeADXL345Register(DATA_FORMAT, 0x01); - //Put the ADXL345 into Measurement Mode by writing 0x08 to the POWER_CTL register. - writeADXL345Register(POWER_CTL, 0x08); //Measurement mode -} - -// Acquire a data record. -void acquireData(data_t* data) { - // Max SPI clock frequency is 5 MHz with CPOL = 1 and CPHA = 1. - SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE3)); - data->time = micros(); - digitalWrite(ADXL345_CS, LOW); - // Read multiple bytes so or 0XC0 with address. - SPI.transfer(DATAX0 | 0XC0); - data->accel[0] = SPI.transfer(0) | (SPI.transfer(0) << 8); - data->accel[1] = SPI.transfer(0) | (SPI.transfer(0) << 8); - data->accel[2] = SPI.transfer(0) | (SPI.transfer(0) << 8); - digitalWrite(ADXL345_CS, HIGH); - SPI.endTransaction(); -} - -// Print a data record. -void printData(Print* pr, data_t* data) { - if (startMicros == 0) { - startMicros = data->time; - } - pr->print(data->time - startMicros); - for (int i = 0; i < ACCEL_DIM; i++) { - pr->write(','); - pr->print(data->accel[i]); - } - pr->println(); -} - -// Print data header. -void printHeader(Print* pr) { - startMicros = 0; - pr->println(F("micros,ax,ay,az")); -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/UserTypes.h b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/UserTypes.h deleted file mode 100644 index 56bc8738..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/UserTypes.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef UserTypes_h -#define UserTypes_h -#include "Arduino.h" -#include "SPI.h" -#define USE_SHARED_SPI 1 -#define FILE_BASE_NAME "ADXL4G" -// User data types. Modify for your data items. -const uint8_t ACCEL_DIM = 3; -struct data_t { - uint32_t time; - int16_t accel[ACCEL_DIM]; -}; -void acquireData(data_t* data); -void printData(Print* pr, data_t* data); -void printHeader(Print* pr); -void userSetup(); -#endif // UserTypes_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/readme.txt b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/readme.txt deleted file mode 100644 index a68ba787..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerADXL345/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Test of shared SPI for LowLatencyLogger. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/LowLatencyLogger.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/LowLatencyLogger.ino deleted file mode 100644 index 40aa40d3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/LowLatencyLogger.ino +++ /dev/null @@ -1,655 +0,0 @@ -/** - * This program logs data to a binary file. Functions are included - * to convert the binary file to a csv text file. - * - * Samples are logged at regular intervals. The maximum logging rate - * depends on the quality of your SD card and the time required to - * read sensor data. This example has been tested at 500 Hz with - * good SD card on an Uno. 4000 HZ is possible on a Due. - * - * If your SD card has a long write latency, it may be necessary to use - * slower sample rates. Using a Mega Arduino helps overcome latency - * problems since 12 512 byte buffers will be used. - * - * Data is written to the file using a SD multiple block write command. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" -#include "UserTypes.h" - -#ifdef __AVR_ATmega328P__ -#include "MinimumSerial.h" -MinimumSerial MinSerial; -#define Serial MinSerial -#endif // __AVR_ATmega328P__ -//============================================================================== -// Start of configuration constants. -//============================================================================== -// Abort run on an overrun. Data before the overrun will be saved. -#define ABORT_ON_OVERRUN 1 -//------------------------------------------------------------------------------ -//Interval between data records in microseconds. -const uint32_t LOG_INTERVAL_USEC = 2000; -//------------------------------------------------------------------------------ -// Set USE_SHARED_SPI non-zero for use of an SPI sensor. -// May not work for some cards. -#ifndef USE_SHARED_SPI -#define USE_SHARED_SPI 0 -#endif // USE_SHARED_SPI -//------------------------------------------------------------------------------ -// Pin definitions. -// -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; -// -// Digital pin to indicate an error, set to -1 if not used. -// The led blinks for fatal errors. The led goes on solid for -// overrun errors and logging continues unless ABORT_ON_OVERRUN -// is non-zero. -#ifdef ERROR_LED_PIN -#undef ERROR_LED_PIN -#endif // ERROR_LED_PIN -const int8_t ERROR_LED_PIN = -1; -//------------------------------------------------------------------------------ -// File definitions. -// -// Maximum file size in blocks. -// The program creates a contiguous file with FILE_BLOCK_COUNT 512 byte blocks. -// This file is flash erased using special SD commands. The file will be -// truncated if logging is stopped early. -const uint32_t FILE_BLOCK_COUNT = 256000; -// -// log file base name if not defined in UserTypes.h -#ifndef FILE_BASE_NAME -#define FILE_BASE_NAME "data" -#endif // FILE_BASE_NAME -//------------------------------------------------------------------------------ -// Buffer definitions. -// -// The logger will use SdFat's buffer plus BUFFER_BLOCK_COUNT-1 additional -// buffers. -// -#ifndef RAMEND -// Assume ARM. Use total of ten 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 10; -// -#elif RAMEND < 0X8FF -#error Too little SRAM -// -#elif RAMEND < 0X10FF -// Use total of two 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 2; -// -#elif RAMEND < 0X20FF -// Use total of four 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 4; -// -#else // RAMEND -// Use total of 12 512 byte buffers. -const uint8_t BUFFER_BLOCK_COUNT = 12; -#endif // RAMEND -//============================================================================== -// End of configuration constants. -//============================================================================== -// Temporary log file. Will be deleted if a reset or power failure occurs. -#define TMP_FILE_NAME FILE_BASE_NAME "##.bin" - -// Size of file base name. -const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; -const uint8_t FILE_NAME_DIM = BASE_NAME_SIZE + 7; -char binName[FILE_NAME_DIM] = FILE_BASE_NAME "00.bin"; - -SdFat sd; - -SdBaseFile binFile; - -// Number of data records in a block. -const uint16_t DATA_DIM = (512 - 4)/sizeof(data_t); - -//Compute fill so block size is 512 bytes. FILL_DIM may be zero. -const uint16_t FILL_DIM = 512 - 4 - DATA_DIM*sizeof(data_t); - -struct block_t { - uint16_t count; - uint16_t overrun; - data_t data[DATA_DIM]; - uint8_t fill[FILL_DIM]; -}; -//============================================================================== -// Error messages stored in flash. -#define error(msg) {sd.errorPrint(&Serial, F(msg));fatalBlink();} -//------------------------------------------------------------------------------ -// -void fatalBlink() { - while (true) { - SysCall::yield(); - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - delay(200); - digitalWrite(ERROR_LED_PIN, LOW); - delay(200); - } - } -} -//------------------------------------------------------------------------------ -// read data file and check for overruns -void checkOverrun() { - bool headerPrinted = false; - block_t block; - uint32_t bn = 0; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Checking overrun errors - type any character to stop")); - while (binFile.read(&block, 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - if (!headerPrinted) { - Serial.println(); - Serial.println(F("Overruns:")); - Serial.println(F("fileBlockNumber,sdBlockNumber,overrunCount")); - headerPrinted = true; - } - Serial.print(bn); - Serial.print(','); - Serial.print(binFile.firstBlock() + bn); - Serial.print(','); - Serial.println(block.overrun); - } - bn++; - } - if (!headerPrinted) { - Serial.println(F("No errors found")); - } else { - Serial.println(F("Done")); - } -} -//----------------------------------------------------------------------------- -// Convert binary file to csv file. -void binaryToCsv() { - uint8_t lastPct = 0; - block_t block; - uint32_t t0 = millis(); - uint32_t syncCluster = 0; - SdFile csvFile; - char csvName[FILE_NAME_DIM]; - - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - Serial.println(); - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // Create a new csvFile. - strcpy(csvName, binName); - strcpy(&csvName[BASE_NAME_SIZE + 3], "csv"); - - if (!csvFile.open(csvName, O_WRONLY | O_CREAT | O_TRUNC)) { - error("open csvFile failed"); - } - binFile.rewind(); - Serial.print(F("Writing: ")); - Serial.print(csvName); - Serial.println(F(" - type any character to stop")); - printHeader(&csvFile); - uint32_t tPct = millis(); - while (!Serial.available() && binFile.read(&block, 512) == 512) { - uint16_t i; - if (block.count == 0 || block.count > DATA_DIM) { - break; - } - if (block.overrun) { - csvFile.print(F("OVERRUN,")); - csvFile.println(block.overrun); - } - for (i = 0; i < block.count; i++) { - printData(&csvFile, &block.data[i]); - } - if (csvFile.curCluster() != syncCluster) { - csvFile.sync(); - syncCluster = csvFile.curCluster(); - } - if ((millis() - tPct) > 1000) { - uint8_t pct = binFile.curPosition()/(binFile.fileSize()/100); - if (pct != lastPct) { - tPct = millis(); - lastPct = pct; - Serial.print(pct, DEC); - Serial.println('%'); - } - } - if (Serial.available()) { - break; - } - } - csvFile.close(); - Serial.print(F("Done: ")); - Serial.print(0.001*(millis() - t0)); - Serial.println(F(" Seconds")); -} -//----------------------------------------------------------------------------- -void createBinFile() { - // max number of blocks to erase per erase call - const uint32_t ERASE_SIZE = 262144L; - uint32_t bgnBlock, endBlock; - - // Delete old tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("Deleting tmp file " TMP_FILE_NAME)); - if (!sd.remove(TMP_FILE_NAME)) { - error("Can't remove tmp file"); - } - } - // Create new file. - Serial.println(F("\nCreating new file")); - binFile.close(); - if (!binFile.createContiguous(TMP_FILE_NAME, 512 * FILE_BLOCK_COUNT)) { - error("createContiguous failed"); - } - // Get the address of the file on the SD. - if (!binFile.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - // Flash erase all data in the file. - Serial.println(F("Erasing all data")); - uint32_t bgnErase = bgnBlock; - uint32_t endErase; - while (bgnErase < endBlock) { - endErase = bgnErase + ERASE_SIZE; - if (endErase > endBlock) { - endErase = endBlock; - } - if (!sd.card()->erase(bgnErase, endErase)) { - error("erase failed"); - } - bgnErase = endErase + 1; - } -} -//------------------------------------------------------------------------------ -// dump data file to Serial -void dumpData() { - block_t block; - if (!binFile.isOpen()) { - Serial.println(); - Serial.println(F("No current binary file")); - return; - } - binFile.rewind(); - Serial.println(); - Serial.println(F("Type any character to stop")); - delay(1000); - printHeader(&Serial); - while (!Serial.available() && binFile.read(&block , 512) == 512) { - if (block.count == 0) { - break; - } - if (block.overrun) { - Serial.print(F("OVERRUN,")); - Serial.println(block.overrun); - } - for (uint16_t i = 0; i < block.count; i++) { - printData(&Serial, &block.data[i]); - } - } - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -// log data -void logData() { - createBinFile(); - recordBinFile(); - renameBinFile(); -} -//------------------------------------------------------------------------------ -void openBinFile() { - char name[FILE_NAME_DIM]; - strcpy(name, binName); - Serial.println(F("\nEnter two digit version")); - Serial.write(name, BASE_NAME_SIZE); - for (int i = 0; i < 2; i++) { - while (!Serial.available()) { - SysCall::yield(); - } - char c = Serial.read(); - Serial.write(c); - if (c < '0' || c > '9') { - Serial.println(F("\nInvalid digit")); - return; - } - name[BASE_NAME_SIZE + i] = c; - } - Serial.println(&name[BASE_NAME_SIZE+2]); - if (!sd.exists(name)) { - Serial.println(F("File does not exist")); - return; - } - binFile.close(); - strcpy(binName, name); - if (!binFile.open(binName, O_RDONLY)) { - Serial.println(F("open failed")); - return; - } - Serial.println(F("File opened")); -} -//------------------------------------------------------------------------------ -void recordBinFile() { - const uint8_t QUEUE_DIM = BUFFER_BLOCK_COUNT + 1; - // Index of last queue location. - const uint8_t QUEUE_LAST = QUEUE_DIM - 1; - - // Allocate extra buffer space. - block_t block[BUFFER_BLOCK_COUNT - 1]; - - block_t* curBlock = 0; - - block_t* emptyStack[BUFFER_BLOCK_COUNT]; - uint8_t emptyTop; - uint8_t minTop; - - block_t* fullQueue[QUEUE_DIM]; - uint8_t fullHead = 0; - uint8_t fullTail = 0; - - // Use SdFat's internal buffer. - emptyStack[0] = (block_t*)sd.vol()->cacheClear(); - if (emptyStack[0] == 0) { - error("cacheClear failed"); - } - // Put rest of buffers on the empty stack. - for (int i = 1; i < BUFFER_BLOCK_COUNT; i++) { - emptyStack[i] = &block[i - 1]; - } - emptyTop = BUFFER_BLOCK_COUNT; - minTop = BUFFER_BLOCK_COUNT; - - // Start a multiple block write. - if (!sd.card()->writeStart(binFile.firstBlock())) { - error("writeStart failed"); - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - Serial.println(F("Logging - type any character to stop")); - bool closeFile = false; - uint32_t bn = 0; - uint32_t maxLatency = 0; - uint32_t overrun = 0; - uint32_t overrunTotal = 0; - uint32_t logTime = micros(); - while(1) { - // Time for next data record. - logTime += LOG_INTERVAL_USEC; - if (Serial.available()) { - closeFile = true; - } - if (closeFile) { - if (curBlock != 0) { - // Put buffer in full queue. - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } else { - if (curBlock == 0 && emptyTop != 0) { - curBlock = emptyStack[--emptyTop]; - if (emptyTop < minTop) { - minTop = emptyTop; - } - curBlock->count = 0; - curBlock->overrun = overrun; - overrun = 0; - } - if ((int32_t)(logTime - micros()) < 0) { - error("Rate too fast"); - } - int32_t delta; - do { - delta = micros() - logTime; - } while (delta < 0); - if (curBlock == 0) { - overrun++; - overrunTotal++; - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, HIGH); - } -#if ABORT_ON_OVERRUN - Serial.println(F("Overrun abort")); - break; - #endif // ABORT_ON_OVERRUN - } else { -#if USE_SHARED_SPI - sd.card()->spiStop(); -#endif // USE_SHARED_SPI - acquireData(&curBlock->data[curBlock->count++]); -#if USE_SHARED_SPI - sd.card()->spiStart(); -#endif // USE_SHARED_SPI - if (curBlock->count == DATA_DIM) { - fullQueue[fullHead] = curBlock; - fullHead = fullHead < QUEUE_LAST ? fullHead + 1 : 0; - curBlock = 0; - } - } - } - if (fullHead == fullTail) { - // Exit loop if done. - if (closeFile) { - break; - } - } else if (!sd.card()->isBusy()) { - // Get address of block to write. - block_t* pBlock = fullQueue[fullTail]; - fullTail = fullTail < QUEUE_LAST ? fullTail + 1 : 0; - // Write block to SD. - uint32_t usec = micros(); - if (!sd.card()->writeData((uint8_t*)pBlock)) { - error("write data failed"); - } - usec = micros() - usec; - if (usec > maxLatency) { - maxLatency = usec; - } - // Move block to empty queue. - emptyStack[emptyTop++] = pBlock; - bn++; - if (bn == FILE_BLOCK_COUNT) { - // File full so stop - break; - } - } - } - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - Serial.print(F("Min Free buffers: ")); - Serial.println(minTop); - Serial.print(F("Max block write usec: ")); - Serial.println(maxLatency); - Serial.print(F("Overruns: ")); - Serial.println(overrunTotal); - // Truncate file if recording stopped early. - if (bn != FILE_BLOCK_COUNT) { - Serial.println(F("Truncating file")); - if (!binFile.truncate(512L * bn)) { - error("Can't truncate file"); - } - } -} -//------------------------------------------------------------------------------ -void recoverTmpFile() { - uint16_t count; - if (!binFile.open(TMP_FILE_NAME, O_RDWR)) { - return; - } - if (binFile.read(&count, 2) != 2 || count != DATA_DIM) { - error("Please delete existing " TMP_FILE_NAME); - } - Serial.println(F("\nRecovering data in tmp file " TMP_FILE_NAME)); - uint32_t bgnBlock = 0; - uint32_t endBlock = binFile.fileSize()/512 - 1; - // find last used block. - while (bgnBlock < endBlock) { - uint32_t midBlock = (bgnBlock + endBlock + 1)/2; - binFile.seekSet(512*midBlock); - if (binFile.read(&count, 2) != 2) error("read"); - if (count == 0 || count > DATA_DIM) { - endBlock = midBlock - 1; - } else { - bgnBlock = midBlock; - } - } - // truncate after last used block. - if (!binFile.truncate(512*(bgnBlock + 1))) { - error("Truncate " TMP_FILE_NAME " failed"); - } - renameBinFile(); -} -//----------------------------------------------------------------------------- -void renameBinFile() { - while (sd.exists(binName)) { - if (binName[BASE_NAME_SIZE + 1] != '9') { - binName[BASE_NAME_SIZE + 1]++; - } else { - binName[BASE_NAME_SIZE + 1] = '0'; - if (binName[BASE_NAME_SIZE] == '9') { - error("Can't create file name"); - } - binName[BASE_NAME_SIZE]++; - } - } - if (!binFile.rename(binName)) { - error("Can't rename file"); - } - Serial.print(F("File renamed: ")); - Serial.println(binName); - Serial.print(F("File size: ")); - Serial.print(binFile.fileSize()/512); - Serial.println(F(" blocks")); -} -//------------------------------------------------------------------------------ -void testSensor() { - const uint32_t interval = 200000; - int32_t diff; - data_t data; - Serial.println(F("\nTesting - type any character to stop\n")); - // Wait for Serial Idle. - delay(1000); - printHeader(&Serial); - uint32_t m = micros(); - while (!Serial.available()) { - m += interval; - do { - diff = m - micros(); - } while (diff > 0); - acquireData(&data); - printData(&Serial, &data); - } -} -//------------------------------------------------------------------------------ -void setup(void) { - if (ERROR_LED_PIN >= 0) { - pinMode(ERROR_LED_PIN, OUTPUT); - } - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("\nFreeStack: ")); - Serial.println(FreeStack()); - Serial.print(F("Records/block: ")); - Serial.println(DATA_DIM); - if (sizeof(block_t) != 512) { - error("Invalid block size"); - } - // Allow userSetup access to SPI bus. - pinMode(SD_CS_PIN, OUTPUT); - digitalWrite(SD_CS_PIN, HIGH); - - // Setup sensors. - userSetup(); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.initErrorPrint(&Serial); - fatalBlink(); - } - // recover existing tmp file. - if (sd.exists(TMP_FILE_NAME)) { - Serial.println(F("\nType 'Y' to recover existing tmp file " TMP_FILE_NAME)); - while (!Serial.available()) { - SysCall::yield(); - } - if (Serial.read() == 'Y') { - recoverTmpFile(); - } else { - error("'Y' not typed, please manually delete " TMP_FILE_NAME); - } - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - Serial.println(); - Serial.println(F("type:")); - Serial.println(F("b - open existing bin file")); - Serial.println(F("c - convert file to csv")); - Serial.println(F("d - dump data to Serial")); - Serial.println(F("e - overrun error details")); - Serial.println(F("l - list files")); - Serial.println(F("r - record data")); - Serial.println(F("t - test without logging")); - while(!Serial.available()) { - SysCall::yield(); - } -#if WDT_YIELD_TIME_MICROS - Serial.println(F("LowLatencyLogger can not run with watchdog timer")); - SysCall::halt(); -#endif - - char c = tolower(Serial.read()); - - // Discard extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (ERROR_LED_PIN >= 0) { - digitalWrite(ERROR_LED_PIN, LOW); - } - if (c == 'b') { - openBinFile(); - } else if (c == 'c') { - binaryToCsv(); - } else if (c == 'd') { - dumpData(); - } else if (c == 'e') { - checkOverrun(); - } else if (c == 'l') { - Serial.println(F("\nls:")); - sd.ls(&Serial, LS_SIZE); - } else if (c == 'r') { - logData(); - } else if (c == 't') { - testSensor(); - } else { - Serial.println(F("Invalid entry")); - } -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino deleted file mode 100644 index 53bfe066..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/LowLatencyLoggerMPU6050.ino +++ /dev/null @@ -1,2 +0,0 @@ -// Empty file with name LowLatencyLoggerMPU6050.ino to make IDE happy. - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/UserFunctions.cpp b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/UserFunctions.cpp deleted file mode 100644 index 606a40d6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/UserFunctions.cpp +++ /dev/null @@ -1,51 +0,0 @@ -// User data functions. Modify these functions for your data items. -#include "UserTypes.h" -#include "Wire.h" -#include "I2Cdev.h" -#include "MPU6050.h" -//------------------------------------------------------------------------------ -MPU6050 mpu; -static uint32_t startMicros; -// Acquire a data record. -void acquireData(data_t* data) { - data->time = micros(); - mpu.getMotion6(&data->ax, &data->ay, &data->az, - &data->gx, &data->gy, &data->gz); -} - -// setup AVR I2C -void userSetup() { -#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE - Wire.begin(); - Wire.setClock(400000); -#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE - Fastwire::setup(400, true); -#endif - mpu.initialize(); -} - -// Print a data record. -void printData(Print* pr, data_t* data) { - if (startMicros == 0) { - startMicros = data->time; - } - pr->print(data->time- startMicros); - pr->write(','); - pr->print(data->ax); - pr->write(','); - pr->print(data->ay); - pr->write(','); - pr->print(data->az); - pr->write(','); - pr->print(data->gx); - pr->write(','); - pr->print(data->gy); - pr->write(','); - pr->println(data->gz); -} - -// Print data header. -void printHeader(Print* pr) { - startMicros = 0; - pr->println(F("micros,ax,ay,az,gx,gy,gz")); -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/UserTypes.h b/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/UserTypes.h deleted file mode 100644 index 73c2a423..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/LowLatencyLoggerMPU6050/UserTypes.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef UserTypes_h -#define UserTypes_h -#include "Arduino.h" -#define FILE_BASE_NAME "mpuraw" -struct data_t { - unsigned long time; - int16_t ax; - int16_t ay; - int16_t az; - int16_t gx; - int16_t gy; - int16_t gz; -}; -void acquireData(data_t* data); -void printData(Print* pr, data_t* data); -void printHeader(Print* pr); -void userSetup(); -#endif // UserTypes_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/OpenNext/OpenNext.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/OpenNext/OpenNext.ino deleted file mode 100644 index d88a49d9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/OpenNext/OpenNext.ino +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Print size, modify date/time, and name for all files in root. - */ -#include -#include "SdFat.h" - -// SD default chip select pin. -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -SdFile root; -SdFile file; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - if (!root.open("/")) { - sd.errorHalt("open root failed"); - } - // Open next file in root. - // Warning, openNext starts at the current directory position - // so a rewind of the directory may be required. - while (file.openNext(&root, O_RDONLY)) { - file.printFileSize(&Serial); - Serial.write(' '); - file.printModifyDateTime(&Serial); - Serial.write(' '); - file.printName(&Serial); - if (file.isDir()) { - // Indicate a directory. - Serial.write('/'); - } - Serial.println(); - file.close(); - } - if (root.getError()) { - Serial.println("openNext failed"); - } else { - Serial.println("Done!"); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/PrintBenchmark/PrintBenchmark.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/PrintBenchmark/PrintBenchmark.ino deleted file mode 100644 index d7cc68d4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/PrintBenchmark/PrintBenchmark.ino +++ /dev/null @@ -1,152 +0,0 @@ -/* - * This program is a simple Print benchmark. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// number of lines to print -const uint16_t N_PRINT = 20000; - -// file system -SdFat sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } -} -//------------------------------------------------------------------------------ -void loop() { - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - delay(400); // catch Due reset problem - - cout << F("FreeStack: ") << FreeStack() << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - cout << F("Type is FAT") << int(sd.vol()->fatType()) << endl; - - cout << F("Starting print test. Please wait.\n\n"); - - // do write test - for (int test = 0; test < 6; test++) { - char fileName[13] = "bench0.txt"; - fileName[5] = '0' + test; - // open or create file - truncate existing file. - if (!file.open(fileName, O_RDWR | O_CREAT | O_TRUNC)) { - error("open failed"); - } - maxLatency = 0; - minLatency = 999999; - totalLatency = 0; - switch(test) { - case 0: - cout << F("Test of println(uint16_t)\n"); - break; - - case 1: - cout << F("Test of printField(uint16_t, char)\n"); - break; - - case 2: - cout << F("Test of println(uint32_t)\n"); - break; - - case 3: - cout << F("Test of printField(uint32_t, char)\n"); - break; - case 4: - cout << F("Test of println(float)\n"); - break; - - case 5: - cout << F("Test of printField(float, char)\n"); - break; - } - - uint32_t t = millis(); - for (uint16_t i = 0; i < N_PRINT; i++) { - uint32_t m = micros(); - - switch(test) { - case 0: - file.println(i); - break; - - case 1: - file.printField(i, '\n'); - break; - - case 2: - file.println(12345678UL + i); - break; - - case 3: - file.printField(12345678UL + i, '\n'); - break; - - case 4: - file.println((float)0.01*i); - break; - - case 5: - file.printField((float)0.01*i, '\n'); - break; - } - if (file.getWriteError()) { - error("write failed"); - } - m = micros() - m; - if (maxLatency < m) { - maxLatency = m; - } - if (minLatency > m) { - minLatency = m; - } - totalLatency += m; - } - file.close(); - t = millis() - t; - double s = file.fileSize(); - cout << F("Time ") << 0.001*t << F(" sec\n"); - cout << F("File size ") << 0.001*s << F(" KB\n"); - cout << F("Write ") << s/t << F(" KB/sec\n"); - cout << F("Maximum latency: ") << maxLatency; - cout << F(" usec, Minimum Latency: ") << minLatency; - cout << F(" usec, Avg Latency: "); - cout << totalLatency/N_PRINT << F(" usec\n\n"); - } - cout << F("Done!\n\n"); -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/QuickStart/QuickStart.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/QuickStart/QuickStart.ino deleted file mode 100644 index f1141cc4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/QuickStart/QuickStart.ino +++ /dev/null @@ -1,161 +0,0 @@ -// Quick hardware test for SPI card access. -// -#include -#include "SdFat.h" -#include "sdios.h" -// -// Set DISABLE_CHIP_SELECT to disable a second SPI device. -// For example, with the Ethernet shield, set DISABLE_CHIP_SELECT -// to 10 to disable the Ethernet controller. -const int8_t DISABLE_CHIP_SELECT = -1; -// -// Test with reduced SPI speed for breadboards. SD_SCK_MHZ(4) will select -// the highest speed supported by the board that is not over 4 MHz. -// Change SPI_SPEED to SD_SCK_MHZ(50) for best performance. -#define SPI_SPEED SD_SCK_MHZ(4) -//------------------------------------------------------------------------------ -// File system object. -SdFat sd; - -// Serial streams -ArduinoOutStream cout(Serial); - -// input buffer for line -char cinBuf[40]; -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); - -// SD card chip select -int chipSelect; - -void cardOrSpeed() { - cout << F("Try another SD card or reduce the SPI bus speed.\n"); - cout << F("Edit SPI_SPEED in this program to change it.\n"); -} - -void reformatMsg() { - cout << F("Try reformatting the card. For best results use\n"); - cout << F("the SdFormatter program in SdFat/examples or download\n"); - cout << F("and use SDFormatter from www.sdcard.org/downloads.\n"); -} - -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("\nSPI pins:\n"); - cout << F("MISO: ") << int(MISO) << endl; - cout << F("MOSI: ") << int(MOSI) << endl; - cout << F("SCK: ") << int(SCK) << endl; - cout << F("SS: ") << int(SS) << endl; - - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nBe sure to edit DISABLE_CHIP_SELECT if you have\n" - "a second SPI device. For example, with the Ethernet\n" - "shield, DISABLE_CHIP_SELECT should be set to 10\n" - "to disable the Ethernet controller.\n"); - } - cout << F( - "\nSD chip select is the key hardware option.\n" - "Common values are:\n" - "Arduino Ethernet shield, pin 4\n" - "Sparkfun SD shield, pin 8\n" - "Adafruit SD shields and modules, pin 10\n"); -} - -bool firstTry = true; -void loop() { - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - if (!firstTry) { - cout << F("\nRestarting\n"); - } - firstTry = false; - - cout << F("\nEnter the chip select pin number: "); - while (!Serial.available()) { - SysCall::yield(); - } - cin.readline(); - if (cin >> chipSelect) { - cout << chipSelect << endl; - } else { - cout << F("\nInvalid pin number\n"); - return; - } - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - if (!sd.begin(chipSelect, SPI_SPEED)) { - if (sd.card()->errorCode()) { - cout << F( - "\nSD initialization failed.\n" - "Do not reformat the card!\n" - "Is the card correctly inserted?\n" - "Is chipSelect set to the correct value?\n" - "Does another SPI device need to be disabled?\n" - "Is there a wiring/soldering problem?\n"); - cout << F("\nerrorCode: ") << hex << showbase; - cout << int(sd.card()->errorCode()); - cout << F(", errorData: ") << int(sd.card()->errorData()); - cout << dec << noshowbase << endl; - return; - } - if (sd.vol()->fatType() == 0) { - cout << F("Can't find a valid FAT16/FAT32 partition.\n"); - reformatMsg(); - return; - } - cout << F("begin failed, can't determine error type\n"); - return; - } - cout << F("\nCard successfully initialized.\n"); - cout << endl; - - uint32_t size = sd.card()->cardSize(); - if (size == 0) { - cout << F("Can't determine the card size.\n"); - cardOrSpeed(); - return; - } - uint32_t sizeMB = 0.000512 * size + 0.5; - cout << F("Card size: ") << sizeMB; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - cout << endl; - cout << F("Volume is FAT") << int(sd.vol()->fatType()); - cout << F(", Cluster size (bytes): ") << 512L * sd.vol()->blocksPerCluster(); - cout << endl << endl; - - cout << F("Files found (date time size name):\n"); - sd.ls(LS_R | LS_DATE | LS_SIZE); - - if ((sizeMB > 1100 && sd.vol()->blocksPerCluster() < 64) - || (sizeMB < 2200 && sd.vol()->fatType() == 32)) { - cout << F("\nThis card should be reformatted for best performance.\n"); - cout << F("Use a cluster size of 32 KB for cards larger than 1 GB.\n"); - cout << F("Only cards larger than 2 GB should be formatted FAT32.\n"); - reformatMsg(); - return; - } - // Read any extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F("\nSuccess! Type any character to restart.\n"); - while (!Serial.available()) { - SysCall::yield(); - } -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/RawWrite/RawWrite.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/RawWrite/RawWrite.ino deleted file mode 100644 index 9d57ede3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/RawWrite/RawWrite.ino +++ /dev/null @@ -1,180 +0,0 @@ -/* - * This program illustrates raw write functions in SdFat that - * can be used for high speed data logging. - * - * This program simulates logging from a source that produces - * data at a constant rate of RATE_KB_PER_SEC. - * - * Note: Apps should create a very large file then truncates it - * to the length that is used for a logging. It only takes - * a few seconds to erase a 500 MB file since the card only - * marks the blocks as erased; no data transfer is required. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -const uint32_t RATE_KB_PER_SEC = 100; - -const uint32_t TEST_TIME_SEC = 100; - -// Time between printing progress dots -const uint32_t DOT_TIME_MS = 5000UL; - -// number of blocks in the contiguous file -const uint32_t BLOCK_COUNT = (1000*RATE_KB_PER_SEC*TEST_TIME_SEC + 511)/512; - -// file system -SdFat sd; - -// test file -SdFile file; - -// file extent -uint32_t bgnBlock, endBlock; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } -} -//------------------------------------------------------------------------------ -void loop(void) { - // Read any extra Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - cout << F("FreeStack: ") << FreeStack() << endl; - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // delete possible existing file - sd.remove("RawWrite.txt"); - - // create a contiguous file - if (!file.createContiguous("RawWrite.txt", 512UL*BLOCK_COUNT)) { - error("createContiguous failed"); - } - // get the location of the file's blocks - if (!file.contiguousRange(&bgnBlock, &endBlock)) { - error("contiguousRange failed"); - } - //*********************NOTE************************************** - // NO SdFile calls are allowed while cache is used for raw writes - //*************************************************************** - - // clear the cache and use it as a 512 byte buffer - uint8_t* pCache = (uint8_t*)sd.vol()->cacheClear(); - - // fill cache with eight lines of 64 bytes each - memset(pCache, ' ', 512); - for (uint16_t i = 0; i < 512; i += 64) { - // put line number at end of line then CR/LF - pCache[i + 61] = '0' + (i/64); - pCache[i + 62] = '\r'; - pCache[i + 63] = '\n'; - } - - cout << F("Start raw write of ") << file.fileSize()/1000UL << F(" KB\n"); - cout << F("Target rate: ") << RATE_KB_PER_SEC << F(" KB/sec\n"); - cout << F("Target time: ") << TEST_TIME_SEC << F(" seconds\n"); - - // tell card to setup for multiple block write with pre-erase - if (!sd.card()->writeStart(bgnBlock, BLOCK_COUNT)) { - error("writeStart failed"); - } - // init stats - - delay(1000); - uint32_t dotCount = 0; - uint32_t maxQueuePrint = 0; - uint32_t maxWriteTime = 0; - uint32_t minWriteTime = 9999999; - uint32_t totalWriteTime = 0; - uint32_t maxQueueSize = 0; - uint32_t nWrite = 0; - uint32_t b = 0; - - // write data - uint32_t startTime = millis(); - while (nWrite < BLOCK_COUNT) { - uint32_t nProduced = RATE_KB_PER_SEC*(millis() - startTime)/512UL; - uint32_t queueSize = nProduced - nWrite; - if (queueSize == 0) continue; - if (queueSize > maxQueueSize) { - maxQueueSize = queueSize; - } - if ((millis() - startTime - dotCount*DOT_TIME_MS) > DOT_TIME_MS) { - if (maxQueueSize != maxQueuePrint) { - cout << F("\nQ: ") << maxQueueSize << endl; - maxQueuePrint = maxQueueSize; - } else { - cout << "."; - if (++dotCount%10 == 0) { - cout << endl; - } - } - } - // put block number at start of first line in block - uint32_t n = b++; - for (int8_t d = 5; d >= 0; d--) { - pCache[d] = n || d == 5 ? n % 10 + '0' : ' '; - n /= 10; - } - // write a 512 byte block - uint32_t tw = micros(); - if (!sd.card()->writeData(pCache)) { - error("writeData failed"); - } - tw = micros() - tw; - totalWriteTime += tw; - // check for max write time - if (tw > maxWriteTime) { - maxWriteTime = tw; - } - if (tw < minWriteTime) { - minWriteTime = tw; - } - nWrite++; - } - uint32_t endTime = millis(); - uint32_t avgWriteTime = totalWriteTime/BLOCK_COUNT; - // end multiple block write mode - if (!sd.card()->writeStop()) { - error("writeStop failed"); - } - - cout << F("\nDone\n"); - cout << F("maxQueueSize: ") << maxQueueSize << endl; - cout << F("Elapsed time: ") << setprecision(3)<< 1.e-3*(endTime - startTime); - cout << F(" seconds\n"); - cout << F("Min block write time: ") << minWriteTime << F(" micros\n"); - cout << F("Max block write time: ") << maxWriteTime << F(" micros\n"); - cout << F("Avg block write time: ") << avgWriteTime << F(" micros\n"); - // close file for next pass of loop - file.close(); - Serial.println(); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsv/ReadCsv.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsv/ReadCsv.ino deleted file mode 100644 index d57aadf4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsv/ReadCsv.ino +++ /dev/null @@ -1,212 +0,0 @@ - -// Functions to read a CSV text file one field at a time. -// -#include -#include - -// next line for SD.h -//#include - -// next two lines for SdFat -#include -SdFat SD; - -#define CS_PIN SS - -// example can use comma or semicolon -#define CSV_DELIM ',' - -File file; - -/* - * Read a file one field at a time. - * - * file - File to read. - * - * str - Character array for the field. - * - * size - Size of str array. - * - * delim - csv delimiter. - * - * return - negative value for failure. - * delimiter, '\n' or zero(EOF) for success. - */ -int csvReadText(File* file, char* str, size_t size, char delim) { - char ch; - int rtn; - size_t n = 0; - while (true) { - // check for EOF - if (!file->available()) { - rtn = 0; - break; - } - if (file->read(&ch, 1) != 1) { - // read error - rtn = -1; - break; - } - // Delete CR. - if (ch == '\r') { - continue; - } - if (ch == delim || ch == '\n') { - rtn = ch; - break; - } - if ((n + 1) >= size) { - // string too long - rtn = -2; - n--; - break; - } - str[n++] = ch; - } - str[n] = '\0'; - return rtn; -} -//------------------------------------------------------------------------------ -int csvReadInt32(File* file, int32_t* num, char delim) { - char buf[20]; - char* ptr; - int rtn = csvReadText(file, buf, sizeof(buf), delim); - if (rtn < 0) return rtn; - *num = strtol(buf, &ptr, 10); - if (buf == ptr) return -3; - while(isspace(*ptr)) ptr++; - return *ptr == 0 ? rtn : -4; -} -//------------------------------------------------------------------------------ -int csvReadInt16(File* file, int16_t* num, char delim) { - int32_t tmp; - int rtn = csvReadInt32(file, &tmp, delim); - if (rtn < 0) return rtn; - if (tmp < INT_MIN || tmp > INT_MAX) return -5; - *num = tmp; - return rtn; -} -//------------------------------------------------------------------------------ -int csvReadUint32(File* file, uint32_t* num, char delim) { - char buf[20]; - char* ptr; - int rtn = csvReadText(file, buf, sizeof(buf), delim); - if (rtn < 0) return rtn; - *num = strtoul(buf, &ptr, 10); - if (buf == ptr) return -3; - while(isspace(*ptr)) ptr++; - return *ptr == 0 ? rtn : -4; -} -//------------------------------------------------------------------------------ -int csvReadUint16(File* file, uint16_t* num, char delim) { - uint32_t tmp; - int rtn = csvReadUint32(file, &tmp, delim); - if (rtn < 0) return rtn; - if (tmp > UINT_MAX) return -5; - *num = tmp; - return rtn; -} -//------------------------------------------------------------------------------ -int csvReadDouble(File* file, double* num, char delim) { - char buf[20]; - char* ptr; - int rtn = csvReadText(file, buf, sizeof(buf), delim); - if (rtn < 0) return rtn; - *num = strtod(buf, &ptr); - if (buf == ptr) return -3; - while(isspace(*ptr)) ptr++; - return *ptr == 0 ? rtn : -4; -} -//------------------------------------------------------------------------------ -int csvReadFloat(File* file, float* num, char delim) { - double tmp; - int rtn = csvReadDouble(file, &tmp, delim); - if (rtn < 0)return rtn; - // could test for too large. - *num = tmp; - return rtn; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - yield(); - } - // Initialize the SD. - if (!SD.begin(CS_PIN)) { - Serial.println("begin failed"); - return; - } - // Remove existing file. - SD.remove("READTEST.TXT"); - - // Create the file. - file = SD.open("READTEST.TXT", FILE_WRITE); - if (!file) { - Serial.println("open failed"); - return; - } - // Write test data. - file.print(F( -#if CSV_DELIM == ',' - "36,23.20,20.70,57.60,79.50,01:08:14,23.06.16\r\n" - "37,23.21,20.71,57.61,79.51,02:08:14,23.07.16\r\n" -#elif CSV_DELIM == ';' - "36;23.20;20.70;57.60;79.50;01:08:14;23.06.16\r\n" - "37;23.21;20.71;57.61;79.51;02:08:14;23.07.16\r\n" -#else -#error "Bad CSV_DELIM" -#endif -)); - - // Rewind the file for read. - file.seek(0); - - // Read the file and print fields. - int16_t tcalc; - float t1, t2, h1, h2; - // Must be dim 9 to allow for zero byte. - char timeS[9], dateS[9]; - while (file.available()) { - if (csvReadInt16(&file, &tcalc, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &t1, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &t2, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &h1, CSV_DELIM) != CSV_DELIM - || csvReadFloat(&file, &h2, CSV_DELIM) != CSV_DELIM - || csvReadText(&file, timeS, sizeof(timeS), CSV_DELIM) != CSV_DELIM - || csvReadText(&file, dateS, sizeof(dateS), CSV_DELIM) != '\n') { - Serial.println("read error"); - int ch; - int nr = 0; - // print part of file after error. - while ((ch = file.read()) > 0 && nr++ < 100) { - Serial.write(ch); - } - break; - } - Serial.print(tcalc); - Serial.print(CSV_DELIM); - Serial.print(t1); - Serial.print(CSV_DELIM); - Serial.print(t2); - Serial.print(CSV_DELIM); - Serial.print(h1); - Serial.print(CSV_DELIM); - Serial.print(h2); - Serial.print(CSV_DELIM); - Serial.print(timeS); - Serial.print(CSV_DELIM); - Serial.println(dateS); - } - file.close(); -} -//------------------------------------------------------------------------------ -void loop() { -} - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsvArray/ReadCsvArray.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsvArray/ReadCsvArray.ino deleted file mode 100644 index b837a89f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsvArray/ReadCsvArray.ino +++ /dev/null @@ -1,139 +0,0 @@ -// Read a two dimensional array from a CSV file. -// -#include -#include -#define CS_PIN SS - -// 5 X 4 array -#define ROW_DIM 5 -#define COL_DIM 4 - -SdFat SD; -File file; - -/* - * Read a file one field at a time. - * - * file - File to read. - * - * str - Character array for the field. - * - * size - Size of str array. - * - * delim - String containing field delimiters. - * - * return - length of field including terminating delimiter. - * - * Note, the last character of str will not be a delimiter if - * a read error occurs, the field is too long, or the file - * does not end with a delimiter. Consider this an error - * if not at end-of-file. - * - */ -size_t readField(File* file, char* str, size_t size, const char* delim) { - char ch; - size_t n = 0; - while ((n + 1) < size && file->read(&ch, 1) == 1) { - // Delete CR. - if (ch == '\r') { - continue; - } - str[n++] = ch; - if (strchr(delim, ch)) { - break; - } - } - str[n] = '\0'; - return n; -} -//------------------------------------------------------------------------------ -#define errorHalt(msg) {Serial.println(F(msg)); SysCall::halt();} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize the SD. - if (!SD.begin(CS_PIN)) { - errorHalt("begin failed"); - } - // Create or open the file. - file = SD.open("READNUM.TXT", FILE_WRITE); - if (!file) { - errorHalt("open failed"); - } - // Rewind file so test data is not appended. - file.rewind(); - - // Write test data. - file.print(F( - "11,12,13,14\r\n" - "21,22,23,24\r\n" - "31,32,33,34\r\n" - "41,42,43,44\r\n" - "51,52,53,54" // Allow missing endl at eof. - )); - - // Rewind the file for read. - file.rewind(); - - // Array for data. - int array[ROW_DIM][COL_DIM]; - int i = 0; // First array index. - int j = 0; // Second array index - size_t n; // Length of returned field with delimiter. - char str[20]; // Must hold longest field with delimiter and zero byte. - char *ptr; // Test for valid field. - - // Read the file and store the data. - - for (i = 0; i < ROW_DIM; i++) { - for (j = 0; j < COL_DIM; j++) { - n = readField(&file, str, sizeof(str), ",\n"); - if (n == 0) { - errorHalt("Too few lines"); - } - array[i][j] = strtol(str, &ptr, 10); - if (ptr == str) { - errorHalt("bad number"); - } - while (*ptr == ' ') { - ptr++; - } - if (*ptr != ',' && *ptr != '\n' && *ptr != '\0') { - errorHalt("extra characters in field"); - } - if (j < (COL_DIM-1) && str[n-1] != ',') { - errorHalt("line with too few fields"); - } - } - // Allow missing endl at eof. - if (str[n-1] != '\n' && file.available()) { - errorHalt("missing endl"); - } - } - - // Print the array. - for (i = 0; i < ROW_DIM; i++) { - for (j = 0; j < COL_DIM; j++) { - if (j) { - Serial.print(' '); - } - Serial.print(array[i][j]); - } - Serial.println(); - } - Serial.println("Done"); - file.close(); -} -//------------------------------------------------------------------------------ -void loop() { -} - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsvStream/ReadCsvStream.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsvStream/ReadCsvStream.ino deleted file mode 100644 index 47238e59..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadCsvStream/ReadCsvStream.ino +++ /dev/null @@ -1,121 +0,0 @@ -/* - * This example reads a simple CSV, comma-separated values, file. - * Each line of the file has a label and three values, a long and two floats. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// create Serial stream -ArduinoOutStream cout(Serial); - -char fileName[] = "testfile.csv"; -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -// read and print CSV test file -void readFile() { - long lg = 0; - float f1, f2; - char text[10]; - char c1, c2, c3; // space for commas. - - // open input file - ifstream sdin(fileName); - - // check for open error - if (!sdin.is_open()) { - error("open"); - } - - // read until input fails - while (1) { - // Get text field. - sdin.get(text, sizeof(text), ','); - - // Assume EOF if fail. - if (sdin.fail()) { - break; - } - - // Get commas and numbers. - sdin >> c1 >> lg >> c2 >> f1 >> c3 >> f2; - - // Skip CR/LF. - sdin.skipWhite(); - - if (sdin.fail()) { - error("bad input"); - } - - // error in line if not commas - if (c1 != ',' || c2 != ',' || c3 != ',') { - error("comma"); - } - - // print in six character wide columns - cout << text << setw(6) << lg << setw(6) << f1 << setw(6) << f2 << endl; - } - // Error in an input line if file is not at EOF. - if (!sdin.eof()) { - error("readFile"); - } -} -//------------------------------------------------------------------------------ -// write test file -void writeFile() { - - // create or open and truncate output file - ofstream sdout(fileName); - - // write file from string stored in flash - sdout << F( - "Line 1,1,2.3,4.5\n" - "Line 2,6,7.8,9.0\n" - "Line 3,9,8.7,6.5\n" - "Line 4,-4,-3.2,-1\n") << flush; - - // check for any errors - if (!sdout) { - error("writeFile"); - } - - sdout.close(); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // create test file - writeFile(); - - cout << endl; - - // read and print test - readFile(); - - cout << "\nDone!" << endl; -} -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadWrite/ReadWrite.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadWrite/ReadWrite.ino deleted file mode 100644 index 15b6c98c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/ReadWrite/ReadWrite.ino +++ /dev/null @@ -1,81 +0,0 @@ -/* - SD card read/write - - This example shows how to read and write data to and from an SD card file - The circuit: - * SD card attached to SPI bus as follows: - ** MOSI - pin 11 - ** MISO - pin 12 - ** CLK - pin 13 - - created Nov 2010 - by David A. Mellis - modified 9 Apr 2012 - by Tom Igoe - - This example code is in the public domain. - - */ - -#include -//#include -#include "SdFat.h" -SdFat SD; - -#define SD_CS_PIN SS -File myFile; - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - Serial.print("Initializing SD card..."); - - if (!SD.begin(SD_CS_PIN)) { - Serial.println("initialization failed!"); - return; - } - Serial.println("initialization done."); - - // open the file. note that only one file can be open at a time, - // so you have to close this one before opening another. - myFile = SD.open("test.txt", FILE_WRITE); - - // if the file opened okay, write to it: - if (myFile) { - Serial.print("Writing to test.txt..."); - myFile.println("testing 1, 2, 3."); - // close the file: - myFile.close(); - Serial.println("done."); - } else { - // if the file didn't open, print an error: - Serial.println("error opening test.txt"); - } - - // re-open the file for reading: - myFile = SD.open("test.txt"); - if (myFile) { - Serial.println("test.txt:"); - - // read from the file until there's nothing else in it: - while (myFile.available()) { - Serial.write(myFile.read()); - } - // close the file: - myFile.close(); - } else { - // if the file didn't open, print an error: - Serial.println("error opening test.txt"); - } -} - -void loop() { - // nothing happens after setup -} - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/STM32Test/STM32Test.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/STM32Test/STM32Test.ino deleted file mode 100644 index ff784923..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/STM32Test/STM32Test.ino +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Example use of two SPI ports on an STM32 board. - * Note SPI speed is limited to 18 MHz. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" - -// set ENABLE_EXTENDED_TRANSFER_CLASS non-zero to use faster EX classes - -// Use first SPI port -SdFat sd1; -// SdFatEX sd1; -const uint8_t SD1_CS = PA4; // chip select for sd1 - -// Use second SPI port -SPIClass SPI_2(2); -SdFat sd2(&SPI_2); -// SdFatEX sd2(&SPI_2); - -const uint8_t SD2_CS = PB12; // chip select for sd2 - -const uint8_t BUF_DIM = 100; -uint8_t buf[BUF_DIM]; - -const uint32_t FILE_SIZE = 1000000; -const uint16_t NWRITE = FILE_SIZE/BUF_DIM; -//------------------------------------------------------------------------------ -// print error msg, any SD error codes, and halt. -// store messages in flash -#define errorExit(msg) errorHalt(F(msg)) -#define initError(msg) initErrorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - } - - // fill buffer with known data - for (size_t i = 0; i < sizeof(buf); i++) { - buf[i] = i; - } - - Serial.println(F("type any character to start")); - while (!Serial.available()) { - } - Serial.print(F("FreeStack: ")); - Serial.println(FreeStack()); - - // initialize the first card - if (!sd1.begin(SD1_CS, SD_SCK_MHZ(18))) { - sd1.initError("sd1:"); - } - // create Dir1 on sd1 if it does not exist - if (!sd1.exists("/Dir1")) { - if (!sd1.mkdir("/Dir1")) { - sd1.errorExit("sd1.mkdir"); - } - } - // initialize the second card - if (!sd2.begin(SD2_CS, SD_SCK_MHZ(18))) { - sd2.initError("sd2:"); - } -// create Dir2 on sd2 if it does not exist - if (!sd2.exists("/Dir2")) { - if (!sd2.mkdir("/Dir2")) { - sd2.errorExit("sd2.mkdir"); - } - } - // list root directory on both cards - Serial.println(F("------sd1 root-------")); - sd1.ls(); - Serial.println(F("------sd2 root-------")); - sd2.ls(); - - // make /Dir1 the default directory for sd1 - if (!sd1.chdir("/Dir1")) { - sd1.errorExit("sd1.chdir"); - } - // remove test.bin from /Dir1 directory of sd1 - if (sd1.exists("test.bin")) { - if (!sd1.remove("test.bin")) { - sd2.errorExit("remove test.bin"); - } - } - // make /Dir2 the default directory for sd2 - if (!sd2.chdir("/Dir2")) { - sd2.errorExit("sd2.chdir"); - } - // remove rename.bin from /Dir2 directory of sd2 - if (sd2.exists("rename.bin")) { - if (!sd2.remove("rename.bin")) { - sd2.errorExit("remove rename.bin"); - } - } - // list current directory on both cards - Serial.println(F("------sd1 Dir1-------")); - sd1.ls(); - Serial.println(F("------sd2 Dir2-------")); - sd2.ls(); - Serial.println(F("---------------------")); - - // set the current working directory for open() to sd1 - sd1.chvol(); - - // create or open /Dir1/test.bin and truncate it to zero length - SdFile file1; - if (!file1.open("test.bin", O_RDWR | O_CREAT | O_TRUNC)) { - sd1.errorExit("file1"); - } - Serial.println(F("Writing test.bin to sd1")); - - // write data to /Dir1/test.bin on sd1 - for (uint16_t i = 0; i < NWRITE; i++) { - if (file1.write(buf, sizeof(buf)) != sizeof(buf)) { - sd1.errorExit("sd1.write"); - } - } - // set the current working directory for open() to sd2 - sd2.chvol(); - - // create or open /Dir2/copy.bin and truncate it to zero length - SdFile file2; - if (!file2.open("copy.bin", O_WRONLY | O_CREAT | O_TRUNC)) { - sd2.errorExit("file2"); - } - Serial.println(F("Copying test.bin to copy.bin")); - - // copy file1 to file2 - file1.rewind(); - uint32_t t = millis(); - - while (1) { - int n = file1.read(buf, sizeof(buf)); - if (n < 0) { - sd1.errorExit("read1"); - } - if (n == 0) { - break; - } - if ((int)file2.write(buf, n) != n) { - sd2.errorExit("write2"); - } - } - t = millis() - t; - Serial.print(F("File size: ")); - Serial.println(file2.fileSize()); - Serial.print(F("Copy time: ")); - Serial.print(t); - Serial.println(F(" millis")); - // close test.bin - file1.close(); - file2.close(); - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Renaming copy.bin")); - // rename the copy - if (!sd2.rename("copy.bin", "rename.bin")) { - sd2.errorExit("sd2.rename"); - } - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/SdFormatter/SdFormatter.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/SdFormatter/SdFormatter.ino deleted file mode 100644 index de286fdf..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/SdFormatter/SdFormatter.ino +++ /dev/null @@ -1,552 +0,0 @@ -/* - * This program will format an SD or SDHC card. - * Warning all data will be deleted! - * - * For SD/SDHC cards larger than 64 MB this - * program attempts to match the format - * generated by SDFormatter available here: - * - * http://www.sdcard.org/consumers/formatter/ - * - * For smaller cards this program uses FAT16 - * and SDFormatter uses FAT12. - */ - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -// -// Change the value of chipSelect if your hardware does -// not use the default value, SS. Common values are: -// Arduino Ethernet shield: pin 4 -// Sparkfun SD shield: pin 8 -// Adafruit SD shields and modules: pin 10 -const uint8_t chipSelect = SS; - -// Initialize at highest supported speed not over 50 MHz. -// Reduce max speed if errors occur. -#define SPI_SPEED SD_SCK_MHZ(50) - -// Print extra info for debug if DEBUG_PRINT is nonzero -#define DEBUG_PRINT 0 -#include -#include "SdFat.h" -#include "sdios.h" -#if DEBUG_PRINT -#include "FreeStack.h" -#endif // DEBUG_PRINT - -// Serial output stream -ArduinoOutStream cout(Serial); - -#if USE_SDIO -// Use faster SdioCardEX -SdioCardEX card; -// SdioCard card; -#else // USE_SDIO -Sd2Card card; -#endif // USE_SDIO - -uint32_t cardSizeBlocks; -uint32_t cardCapacityMB; - -// cache for SD block -cache_t cache; - -// MBR information -uint8_t partType; -uint32_t relSector; -uint32_t partSize; - -// Fake disk geometry -uint8_t numberOfHeads; -uint8_t sectorsPerTrack; - -// FAT parameters -uint16_t reservedSectors; -uint8_t sectorsPerCluster; -uint32_t fatStart; -uint32_t fatSize; -uint32_t dataStart; - -// constants for file system structure -uint16_t const BU16 = 128; -uint16_t const BU32 = 8192; - -// strings needed in file system structures -char noName[] = "NO NAME "; -char fat16str[] = "FAT16 "; -char fat32str[] = "FAT32 "; -//------------------------------------------------------------------------------ -#define sdError(msg) {cout << F("error: ") << F(msg) << endl; sdErrorHalt();} -//------------------------------------------------------------------------------ -void sdErrorHalt() { - if (card.errorCode()) { - cout << F("SD error: ") << hex << int(card.errorCode()); - cout << ',' << int(card.errorData()) << dec << endl; - } - SysCall::halt(); -} -//------------------------------------------------------------------------------ -#if DEBUG_PRINT -void debugPrint() { - cout << F("FreeStack: ") << FreeStack() << endl; - cout << F("partStart: ") << relSector << endl; - cout << F("partSize: ") << partSize << endl; - cout << F("reserved: ") << reservedSectors << endl; - cout << F("fatStart: ") << fatStart << endl; - cout << F("fatSize: ") << fatSize << endl; - cout << F("dataStart: ") << dataStart << endl; - cout << F("clusterCount: "); - cout << ((relSector + partSize - dataStart)/sectorsPerCluster) << endl; - cout << endl; - cout << F("Heads: ") << int(numberOfHeads) << endl; - cout << F("Sectors: ") << int(sectorsPerTrack) << endl; - cout << F("Cylinders: "); - cout << cardSizeBlocks/(numberOfHeads*sectorsPerTrack) << endl; -} -#endif // DEBUG_PRINT -//------------------------------------------------------------------------------ -// write cached block to the card -uint8_t writeCache(uint32_t lbn) { - return card.writeBlock(lbn, cache.data); -} -//------------------------------------------------------------------------------ -// initialize appropriate sizes for SD capacity -void initSizes() { - if (cardCapacityMB <= 6) { - sdError("Card is too small."); - } else if (cardCapacityMB <= 16) { - sectorsPerCluster = 2; - } else if (cardCapacityMB <= 32) { - sectorsPerCluster = 4; - } else if (cardCapacityMB <= 64) { - sectorsPerCluster = 8; - } else if (cardCapacityMB <= 128) { - sectorsPerCluster = 16; - } else if (cardCapacityMB <= 1024) { - sectorsPerCluster = 32; - } else if (cardCapacityMB <= 32768) { - sectorsPerCluster = 64; - } else { - // SDXC cards - sectorsPerCluster = 128; - } - - cout << F("Blocks/Cluster: ") << int(sectorsPerCluster) << endl; - // set fake disk geometry - sectorsPerTrack = cardCapacityMB <= 256 ? 32 : 63; - - if (cardCapacityMB <= 16) { - numberOfHeads = 2; - } else if (cardCapacityMB <= 32) { - numberOfHeads = 4; - } else if (cardCapacityMB <= 128) { - numberOfHeads = 8; - } else if (cardCapacityMB <= 504) { - numberOfHeads = 16; - } else if (cardCapacityMB <= 1008) { - numberOfHeads = 32; - } else if (cardCapacityMB <= 2016) { - numberOfHeads = 64; - } else if (cardCapacityMB <= 4032) { - numberOfHeads = 128; - } else { - numberOfHeads = 255; - } -} -//------------------------------------------------------------------------------ -// zero cache and optionally set the sector signature -void clearCache(uint8_t addSig) { - memset(&cache, 0, sizeof(cache)); - if (addSig) { - cache.mbr.mbrSig0 = BOOTSIG0; - cache.mbr.mbrSig1 = BOOTSIG1; - } -} -//------------------------------------------------------------------------------ -// zero FAT and root dir area on SD -void clearFatDir(uint32_t bgn, uint32_t count) { - clearCache(false); -#if USE_SDIO - for (uint32_t i = 0; i < count; i++) { - if (!card.writeBlock(bgn + i, cache.data)) { - sdError("Clear FAT/DIR writeBlock failed"); - } - if ((i & 0XFF) == 0) { - cout << '.'; - } - } -#else // USE_SDIO - if (!card.writeStart(bgn, count)) { - sdError("Clear FAT/DIR writeStart failed"); - } - for (uint32_t i = 0; i < count; i++) { - if ((i & 0XFF) == 0) { - cout << '.'; - } - if (!card.writeData(cache.data)) { - sdError("Clear FAT/DIR writeData failed"); - } - } - if (!card.writeStop()) { - sdError("Clear FAT/DIR writeStop failed"); - } -#endif // USE_SDIO - cout << endl; -} -//------------------------------------------------------------------------------ -// return cylinder number for a logical block number -uint16_t lbnToCylinder(uint32_t lbn) { - return lbn / (numberOfHeads * sectorsPerTrack); -} -//------------------------------------------------------------------------------ -// return head number for a logical block number -uint8_t lbnToHead(uint32_t lbn) { - return (lbn % (numberOfHeads * sectorsPerTrack)) / sectorsPerTrack; -} -//------------------------------------------------------------------------------ -// return sector number for a logical block number -uint8_t lbnToSector(uint32_t lbn) { - return (lbn % sectorsPerTrack) + 1; -} -//------------------------------------------------------------------------------ -// format and write the Master Boot Record -void writeMbr() { - clearCache(true); - part_t* p = cache.mbr.part; - p->boot = 0; - uint16_t c = lbnToCylinder(relSector); - if (c > 1023) { - sdError("MBR CHS"); - } - p->beginCylinderHigh = c >> 8; - p->beginCylinderLow = c & 0XFF; - p->beginHead = lbnToHead(relSector); - p->beginSector = lbnToSector(relSector); - p->type = partType; - uint32_t endLbn = relSector + partSize - 1; - c = lbnToCylinder(endLbn); - if (c <= 1023) { - p->endCylinderHigh = c >> 8; - p->endCylinderLow = c & 0XFF; - p->endHead = lbnToHead(endLbn); - p->endSector = lbnToSector(endLbn); - } else { - // Too big flag, c = 1023, h = 254, s = 63 - p->endCylinderHigh = 3; - p->endCylinderLow = 255; - p->endHead = 254; - p->endSector = 63; - } - p->firstSector = relSector; - p->totalSectors = partSize; - if (!writeCache(0)) { - sdError("write MBR"); - } -} -//------------------------------------------------------------------------------ -// generate serial number from card size and micros since boot -uint32_t volSerialNumber() { - return (cardSizeBlocks << 8) + micros(); -} -//------------------------------------------------------------------------------ -// format the SD as FAT16 -void makeFat16() { - uint32_t nc; - for (dataStart = 2 * BU16;; dataStart += BU16) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 255)/256; - uint32_t r = BU16 + 1 + 2 * fatSize + 32; - if (dataStart < r) { - continue; - } - relSector = dataStart - r + BU16; - break; - } - // check valid cluster count for FAT16 volume - if (nc < 4085 || nc >= 65525) { - sdError("Bad cluster count"); - } - reservedSectors = 1; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + 2 * fatSize + reservedSectors + 32; - if (partSize < 32680) { - partType = 0X01; - } else if (partSize < 65536) { - partType = 0X04; - } else { - partType = 0X06; - } - // write MBR - writeMbr(); - clearCache(true); - fat_boot_t* pb = &cache.fbs; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->rootDirEntryCount = 512; - pb->mediaType = 0XF8; - pb->sectorsPerFat16 = fatSize; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat16str, sizeof(pb->fileSystemType)); - // write partition boot sector - if (!writeCache(relSector)) { - sdError("FAT16 write PBS failed"); - } - // clear FAT and root directory - clearFatDir(fatStart, dataStart - fatStart); - clearCache(false); - cache.fat16[0] = 0XFFF8; - cache.fat16[1] = 0XFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT16 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// format the SD as FAT32 -void makeFat32() { - uint32_t nc; - relSector = BU32; - for (dataStart = 2 * BU32;; dataStart += BU32) { - nc = (cardSizeBlocks - dataStart)/sectorsPerCluster; - fatSize = (nc + 2 + 127)/128; - uint32_t r = relSector + 9 + 2 * fatSize; - if (dataStart >= r) { - break; - } - } - // error if too few clusters in FAT32 volume - if (nc < 65525) { - sdError("Bad cluster count"); - } - reservedSectors = dataStart - relSector - 2 * fatSize; - fatStart = relSector + reservedSectors; - partSize = nc * sectorsPerCluster + dataStart - relSector; - // type depends on address of end sector - // max CHS has lbn = 16450560 = 1024*255*63 - if ((relSector + partSize) <= 16450560) { - // FAT32 - partType = 0X0B; - } else { - // FAT32 with INT 13 - partType = 0X0C; - } - writeMbr(); - clearCache(true); - - fat32_boot_t* pb = &cache.fbs32; - pb->jump[0] = 0XEB; - pb->jump[1] = 0X00; - pb->jump[2] = 0X90; - for (uint8_t i = 0; i < sizeof(pb->oemId); i++) { - pb->oemId[i] = ' '; - } - pb->bytesPerSector = 512; - pb->sectorsPerCluster = sectorsPerCluster; - pb->reservedSectorCount = reservedSectors; - pb->fatCount = 2; - pb->mediaType = 0XF8; - pb->sectorsPerTrack = sectorsPerTrack; - pb->headCount = numberOfHeads; - pb->hidddenSectors = relSector; - pb->totalSectors32 = partSize; - pb->sectorsPerFat32 = fatSize; - pb->fat32RootCluster = 2; - pb->fat32FSInfo = 1; - pb->fat32BackBootBlock = 6; - pb->driveNumber = 0X80; - pb->bootSignature = EXTENDED_BOOT_SIG; - pb->volumeSerialNumber = volSerialNumber(); - memcpy(pb->volumeLabel, noName, sizeof(pb->volumeLabel)); - memcpy(pb->fileSystemType, fat32str, sizeof(pb->fileSystemType)); - // write partition boot sector and backup - if (!writeCache(relSector) - || !writeCache(relSector + 6)) { - sdError("FAT32 write PBS failed"); - } - clearCache(true); - // write extra boot area and backup - if (!writeCache(relSector + 2) - || !writeCache(relSector + 8)) { - sdError("FAT32 PBS ext failed"); - } - fat32_fsinfo_t* pf = &cache.fsinfo; - pf->leadSignature = FSINFO_LEAD_SIG; - pf->structSignature = FSINFO_STRUCT_SIG; - pf->freeCount = 0XFFFFFFFF; - pf->nextFree = 0XFFFFFFFF; - // write FSINFO sector and backup - if (!writeCache(relSector + 1) - || !writeCache(relSector + 7)) { - sdError("FAT32 FSINFO failed"); - } - clearFatDir(fatStart, 2 * fatSize + sectorsPerCluster); - clearCache(false); - cache.fat32[0] = 0x0FFFFFF8; - cache.fat32[1] = 0x0FFFFFFF; - cache.fat32[2] = 0x0FFFFFFF; - // write first block of FAT and backup for reserved clusters - if (!writeCache(fatStart) - || !writeCache(fatStart + fatSize)) { - sdError("FAT32 reserve failed"); - } -} -//------------------------------------------------------------------------------ -// flash erase all data -uint32_t const ERASE_SIZE = 262144L; -void eraseCard() { - cout << endl << F("Erasing\n"); - uint32_t firstBlock = 0; - uint32_t lastBlock; - uint16_t n = 0; - - do { - lastBlock = firstBlock + ERASE_SIZE - 1; - if (lastBlock >= cardSizeBlocks) { - lastBlock = cardSizeBlocks - 1; - } - if (!card.erase(firstBlock, lastBlock)) { - sdError("erase failed"); - } - cout << '.'; - if ((n++)%32 == 31) { - cout << endl; - } - firstBlock += ERASE_SIZE; - } while (firstBlock < cardSizeBlocks); - cout << endl; - - if (!card.readBlock(0, cache.data)) { - sdError("readBlock"); - } - cout << hex << showbase << setfill('0') << internal; - cout << F("All data set to ") << setw(4) << int(cache.data[0]) << endl; - cout << dec << noshowbase << setfill(' ') << right; - cout << F("Erase done\n"); -} -//------------------------------------------------------------------------------ -void formatCard() { - cout << endl; - cout << F("Formatting\n"); - initSizes(); - if (card.type() != SD_CARD_TYPE_SDHC) { - cout << F("FAT16\n"); - makeFat16(); - } else { - cout << F("FAT32\n"); - makeFat32(); - } -#if DEBUG_PRINT - debugPrint(); -#endif // DEBUG_PRINT - cout << F("Format done\n"); -} -//------------------------------------------------------------------------------ -void setup() { - char c; - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Discard any extra characters. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - cout << F( - "\n" - "This program can erase and/or format SD/SDHC cards.\n" - "\n" - "Erase uses the card's fast flash erase command.\n" - "Flash erase sets all data to 0X00 for most cards\n" - "and 0XFF for a few vendor's cards.\n" - "\n" - "Cards larger than 2 GB will be formatted FAT32 and\n" - "smaller cards will be formatted FAT16.\n" - "\n" - "Warning, all data on the card will be erased.\n" - "Enter 'Y' to continue: "); - while (!Serial.available()) { - SysCall::yield(); - } - - c = Serial.read(); - cout << c << endl; - if (c != 'Y') { - cout << F("Quiting, you did not enter 'Y'.\n"); - return; - } - // Read any existing Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - cout << F( - "\n" - "Options are:\n" - "E - erase the card and skip formatting.\n" - "F - erase and then format the card. (recommended)\n" - "Q - quick format the card without erase.\n" - "\n" - "Enter option: "); - - while (!Serial.available()) { - SysCall::yield(); - } - c = Serial.read(); - cout << c << endl; - if (!strchr("EFQ", c)) { - cout << F("Quiting, invalid option entered.") << endl; - return; - } -#if USE_SDIO - if (!card.begin()) { - sdError("card.begin failed"); - } -#else // USE_SDIO - if (!card.begin(chipSelect, SPI_SPEED)) { - cout << F( - "\nSD initialization failure!\n" - "Is the SD card inserted correctly?\n" - "Is chip select correct at the top of this program?\n"); - sdError("card.begin failed"); - } -#endif - cardSizeBlocks = card.cardSize(); - if (cardSizeBlocks == 0) { - sdError("cardSize"); - } - cardCapacityMB = (cardSizeBlocks + 2047)/2048; - - cout << F("Card Size: ") << setprecision(0) << 1.048576*cardCapacityMB; - cout << F(" MB, (MB = 1,000,000 bytes)") << endl; - - if (c == 'E' || c == 'F') { - eraseCard(); - } - if (c == 'F' || c == 'Q') { - formatCard(); - } -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/SdInfo/SdInfo.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/SdInfo/SdInfo.ino deleted file mode 100644 index 5ce4aa49..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/SdInfo/SdInfo.ino +++ /dev/null @@ -1,248 +0,0 @@ -/* - * This program attempts to initialize an SD card and analyze its structure. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 -/* - * SD chip select pin. Common values are: - * - * Arduino Ethernet shield, pin 4. - * SparkFun SD shield, pin 8. - * Adafruit SD shields and modules, pin 10. - * Default SD chip select is the SPI SS pin. - */ -const uint8_t SD_CHIP_SELECT = SS; -/* - * Set DISABLE_CHIP_SELECT to disable a second SPI device. - * For example, with the Ethernet shield, set DISABLE_CHIP_SELECT - * to 10 to disable the Ethernet controller. - */ -const int8_t DISABLE_CHIP_SELECT = -1; - -#if USE_SDIO -// Use faster SdioCardEX -SdFatSdioEX sd; -// SdFatSdio sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// serial output steam -ArduinoOutStream cout(Serial); - -// global for card size -uint32_t cardSize; - -// global for card erase size -uint32_t eraseSize; -//------------------------------------------------------------------------------ -// store error strings in flash -#define sdErrorMsg(msg) sd.errorPrint(F(msg)); -//------------------------------------------------------------------------------ -uint8_t cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - sdErrorMsg("readCID failed"); - return false; - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; - return true; -} -//------------------------------------------------------------------------------ -uint8_t csdDmp() { - csd_t csd; - uint8_t eraseSingleBlock; - if (!sd.card()->readCSD(&csd)) { - sdErrorMsg("readCSD failed"); - return false; - } - if (csd.v1.csd_ver == 0) { - eraseSingleBlock = csd.v1.erase_blk_en; - eraseSize = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; - } else if (csd.v2.csd_ver == 1) { - eraseSingleBlock = csd.v2.erase_blk_en; - eraseSize = (csd.v2.sector_size_high << 1) | csd.v2.sector_size_low; - } else { - cout << F("csd version error\n"); - return false; - } - eraseSize++; - cout << F("cardSize: ") << 0.000512*cardSize; - cout << F(" MB (MB = 1,000,000 bytes)\n"); - - cout << F("flashEraseSize: ") << int(eraseSize) << F(" blocks\n"); - cout << F("eraseSingleBlock: "); - if (eraseSingleBlock) { - cout << F("true\n"); - } else { - cout << F("false\n"); - } - return true; -} -//------------------------------------------------------------------------------ -// print partition table -uint8_t partDmp() { - mbr_t mbr; - if (!sd.card()->readBlock(0, (uint8_t*)&mbr)) { - sdErrorMsg("read MBR failed"); - return false; - } - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - if ((pt->boot & 0X7F) != 0 || pt->firstSector > cardSize) { - cout << F("\nNo MBR. Assuming Super Floppy format.\n"); - return true; - } - } - cout << F("\nSD Partition Table\n"); - cout << F("part,boot,type,start,length\n"); - for (uint8_t ip = 1; ip < 5; ip++) { - part_t *pt = &mbr.part[ip - 1]; - cout << int(ip) << ',' << hex << int(pt->boot) << ',' << int(pt->type); - cout << dec << ',' << pt->firstSector <<',' << pt->totalSectors << endl; - } - return true; -} -//------------------------------------------------------------------------------ -void volDmp() { - cout << F("\nVolume is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("blocksPerCluster: ") << int(sd.vol()->blocksPerCluster()) << endl; - cout << F("clusterCount: ") << sd.vol()->clusterCount() << endl; - cout << F("freeClusters: "); - uint32_t volFree = sd.vol()->freeClusterCount(); - cout << volFree << endl; - float fs = 0.000512*volFree*sd.vol()->blocksPerCluster(); - cout << F("freeSpace: ") << fs << F(" MB (MB = 1,000,000 bytes)\n"); - cout << F("fatStartBlock: ") << sd.vol()->fatStartBlock() << endl; - cout << F("fatCount: ") << int(sd.vol()->fatCount()) << endl; - cout << F("blocksPerFat: ") << sd.vol()->blocksPerFat() << endl; - cout << F("rootDirStart: ") << sd.vol()->rootDirStart() << endl; - cout << F("dataStartBlock: ") << sd.vol()->dataStartBlock() << endl; - if (sd.vol()->dataStartBlock() % eraseSize) { - cout << F("Data area is not aligned on flash erase boundaries!\n"); - cout << F("Download and use formatter from www.sdcard.org!\n"); - } -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; - - // F stores strings in flash to save RAM - cout << F("SdFat version: ") << SD_FAT_VERSION << endl; -#if !USE_SDIO - if (DISABLE_CHIP_SELECT < 0) { - cout << F( - "\nAssuming the SD is the only SPI device.\n" - "Edit DISABLE_CHIP_SELECT to disable another device.\n"); - } else { - cout << F("\nDisabling SPI device on pin "); - cout << int(DISABLE_CHIP_SELECT) << endl; - pinMode(DISABLE_CHIP_SELECT, OUTPUT); - digitalWrite(DISABLE_CHIP_SELECT, HIGH); - } - cout << F("\nAssuming the SD chip select pin is: ") <= 0); - - // F stores strings in flash to save RAM - cout << F("\ntype any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - uint32_t t = millis(); -#if USE_SDIO - if (!sd.cardBegin()) { - sdErrorMsg("\ncardBegin failed"); - return; - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.cardBegin(SD_CHIP_SELECT, SD_SCK_MHZ(50))) { - sdErrorMsg("cardBegin failed"); - return; - } - #endif // USE_SDIO - t = millis() - t; - - cardSize = sd.card()->cardSize(); - if (cardSize == 0) { - sdErrorMsg("cardSize failed"); - return; - } - cout << F("\ninit time: ") << t << " ms" << endl; - cout << F("\nCard type: "); - switch (sd.card()->type()) { - case SD_CARD_TYPE_SD1: - cout << F("SD1\n"); - break; - - case SD_CARD_TYPE_SD2: - cout << F("SD2\n"); - break; - - case SD_CARD_TYPE_SDHC: - if (cardSize < 70000000) { - cout << F("SDHC\n"); - } else { - cout << F("SDXC\n"); - } - break; - - default: - cout << F("Unknown\n"); - } - if (!cidDmp()) { - return; - } - if (!csdDmp()) { - return; - } - uint32_t ocr; - if (!sd.card()->readOCR(&ocr)) { - sdErrorMsg("\nreadOCR failed"); - return; - } - cout << F("OCR: ") << hex << ocr << dec << endl; - if (!partDmp()) { - return; - } - if (!sd.fsBegin()) { - sdErrorMsg("\nFile System initialization failed.\n"); - return; - } - volDmp(); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/SoftwareSpi/SoftwareSpi.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/SoftwareSpi/SoftwareSpi.ino deleted file mode 100644 index 7d34e24c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/SoftwareSpi/SoftwareSpi.ino +++ /dev/null @@ -1,58 +0,0 @@ -// An example of the SdFatSoftSpi template class. -// This example is for an Adafruit Data Logging Shield on a Mega. -// Software SPI is required on Mega since this shield connects to pins 10-13. -// This example will also run on an Uno and other boards using software SPI. -// -#include -#include "SdFat.h" -#if ENABLE_SOFTWARE_SPI_CLASS // Must be set in SdFat/SdFatConfig.h -// -// Pin numbers in templates must be constants. -const uint8_t SOFT_MISO_PIN = 12; -const uint8_t SOFT_MOSI_PIN = 11; -const uint8_t SOFT_SCK_PIN = 13; -// -// Chip select may be constant or RAM variable. -const uint8_t SD_CHIP_SELECT_PIN = 10; - -// SdFat software SPI template -SdFatSoftSpi sd; - -// Test file. -SdFile file; - -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("Type any character to start"); - while (!Serial.available()) { - SysCall::yield(); - } - - if (!sd.begin(SD_CHIP_SELECT_PIN)) { - sd.initErrorHalt(); - } - - if (!file.open("SoftSPI.txt", O_RDWR | O_CREAT)) { - sd.errorHalt(F("open failed")); - } - file.println(F("This line was printed using software SPI.")); - - file.rewind(); - - while (file.available()) { - Serial.write(file.read()); - } - - file.close(); - - Serial.println(F("Done.")); -} -//------------------------------------------------------------------------------ -void loop() {} -#else // ENABLE_SOFTWARE_SPI_CLASS -#error ENABLE_SOFTWARE_SPI_CLASS must be set non-zero in SdFat/SdFatConfig.h -#endif //ENABLE_SOFTWARE_SPI_CLASS \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/StdioBench/StdioBench.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/StdioBench/StdioBench.ino deleted file mode 100644 index 2afe836c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/StdioBench/StdioBench.ino +++ /dev/null @@ -1,214 +0,0 @@ -// Benchmark comparing SdFile and StdioStream. -#include -#include "SdFat.h" - -// Define PRINT_FIELD nonzero to use printField. -#define PRINT_FIELD 0 - -// Number of lines to list on Serial. -#define STDIO_LIST_COUNT 0 -#define VERIFY_CONTENT 0 - -const uint8_t SD_CS_PIN = SS; -SdFat sd; - -SdFile printFile; -StdioStream stdioFile; - -float f[100]; -char buf[20]; -const char* label[] = -{ "uint8_t 0 to 255, 100 times ", "uint16_t 0 to 20000", - "uint32_t 0 to 20000", "uint32_t 1000000000 to 1000010000", - "float nnn.ffff, 10000 times" -}; -//------------------------------------------------------------------------------ -void setup() { - uint32_t printSize; - uint32_t stdioSize = 0; - uint32_t printTime; - uint32_t stdioTime = 0; - - Serial.begin(9600); - while (!Serial) { - SysCall::yield(); - } - - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - Serial.println(F("Starting test")); - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(SD_CS_PIN, SD_SCK_MHZ(50))) { - sd.errorHalt(); - } - - for (uint8_t i = 0; i < 100; i++) { - f[i] = 123.0 + 0.1234*i; - } - - for (uint8_t dataType = 0; dataType < 5; dataType++) { - for (uint8_t fileType = 0; fileType < 2; fileType++) { - if (!fileType) { - if (!printFile.open("print.txt", O_RDWR | O_CREAT | O_TRUNC)) { - Serial.println(F("open fail")); - return; - } - printTime = millis(); - switch (dataType) { - case 0: - for (uint16_t i =0; i < 100; i++) { - for (uint8_t j = 0; j < 255; j++) { - printFile.println(j); - } - } - break; - case 1: - for (uint16_t i = 0; i < 20000; i++) { - printFile.println(i); - } - break; - - case 2: - for (uint32_t i = 0; i < 20000; i++) { - printFile.println(i); - } - break; - - case 3: - for (uint16_t i = 0; i < 10000; i++) { - printFile.println(i + 1000000000UL); - } - break; - - case 4: - for (int j = 0; j < 100; j++) { - for (uint8_t i = 0; i < 100; i++) { - printFile.println(f[i], 4); - } - } - break; - default: - break; - } - printFile.sync(); - printTime = millis() - printTime; - printFile.rewind(); - printSize = printFile.fileSize(); - - } else { - if (!stdioFile.fopen("stream.txt", "w+")) { - Serial.println(F("fopen fail")); - return; - } - stdioTime = millis(); - - switch (dataType) { - case 0: - for (uint16_t i =0; i < 100; i++) { - for (uint8_t j = 0; j < 255; j++) { -#if PRINT_FIELD - stdioFile.printField(j, '\n'); -#else // PRINT_FIELD - stdioFile.println(j); -#endif // PRINT_FIELD - } - } - break; - case 1: - for (uint16_t i = 0; i < 20000; i++) { -#if PRINT_FIELD - stdioFile.printField(i, '\n'); -#else // PRINT_FIELD - stdioFile.println(i); -#endif // PRINT_FIELD - } - break; - - case 2: - for (uint32_t i = 0; i < 20000; i++) { -#if PRINT_FIELD - stdioFile.printField(i, '\n'); -#else // PRINT_FIELD - stdioFile.println(i); -#endif // PRINT_FIELD - } - break; - - case 3: - for (uint16_t i = 0; i < 10000; i++) { - uint32_t n = i + 1000000000UL; -#if PRINT_FIELD - stdioFile.printField(n, '\n'); -#else // PRINT_FIELD - stdioFile.println(n); -#endif // PRINT_FIELD - } - break; - - case 4: - for (int j = 0; j < 100; j++) { - for (uint8_t i = 0; i < 100; i++) { -#if PRINT_FIELD - stdioFile.printField(f[i], '\n', 4); -#else // PRINT_FIELD - stdioFile.println(f[i], 4); -#endif // PRINT_FIELD - } - } - break; - default: - break; - } - stdioFile.fflush(); - stdioTime = millis() - stdioTime; - stdioSize = stdioFile.ftell(); - if (STDIO_LIST_COUNT) { - size_t len; - stdioFile.rewind(); - for (int i = 0; i < STDIO_LIST_COUNT; i++) { - stdioFile.fgets(buf, sizeof(buf), &len); - Serial.print(len); - Serial.print(','); - Serial.print(buf); - } - } - - } - - } - Serial.println(label[dataType]); - if (VERIFY_CONTENT && printSize == stdioSize) { - printFile.rewind(); - stdioFile.rewind(); - for (uint32_t i = 0; i < stdioSize; i++) { - if (printFile.read() != stdioFile.getc()) { - Serial.print(F("Files differ at pos: ")); - Serial.println(i); - return; - } - } - } - - Serial.print(F("fileSize: ")); - if (printSize != stdioSize) { - Serial.print(printSize); - Serial.print(F(" != ")); - } - Serial.println(stdioSize); - Serial.print(F("print millis: ")); - Serial.println(printTime); - Serial.print(F("stdio millis: ")); - Serial.println(stdioTime); - Serial.print(F("ratio: ")); - Serial.println((float)printTime/(float)stdioTime); - Serial.println(); - printFile.close(); - stdioFile.fclose(); - } - Serial.println(F("Done")); -} -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/TeensySdioDemo/TeensySdioDemo.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/TeensySdioDemo/TeensySdioDemo.ino deleted file mode 100644 index 988a9214..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/TeensySdioDemo/TeensySdioDemo.ino +++ /dev/null @@ -1,169 +0,0 @@ -// Simple performance test for Teensy 3.5/3.6 SDHC. -// Demonstrates yield() efficiency. - -// Warning SdFatSdio and SdFatSdioEX normally should -// not both be used in a program. -// Each has its own cache and member variables. - -#include "SdFat.h" - -// 32 KiB buffer. -const size_t BUF_DIM = 32768; - -// 8 MiB file. -const uint32_t FILE_SIZE = 256UL*BUF_DIM; - -SdFatSdio sd; - -SdFatSdioEX sdEx; - -File file; - -uint8_t buf[BUF_DIM]; - -// buffer as uint32_t -uint32_t* buf32 = (uint32_t*)buf; - -// Total usec in read/write calls. -uint32_t totalMicros = 0; -// Time in yield() function. -uint32_t yieldMicros = 0; -// Number of yield calls. -uint32_t yieldCalls = 0; -// Max busy time for single yield call. -uint32_t yieldMaxUsec = 0; -// Control access to the two versions of SdFat. -bool useEx = false; -//----------------------------------------------------------------------------- -bool sdBusy() { - return useEx ? sdEx.card()->isBusy() : sd.card()->isBusy(); -} -//----------------------------------------------------------------------------- -void errorHalt(const char* msg) { - if (useEx) { - sdEx.errorHalt(msg); - } else { - sd.errorHalt(msg); - } -} -//------------------------------------------------------------------------------ -uint32_t kHzSdClk() { - return useEx ? sdEx.card()->kHzSdClk() : sd.card()->kHzSdClk(); -} -//------------------------------------------------------------------------------ -// Replace "weak" system yield() function. -void yield() { - // Only count cardBusy time. - if (!sdBusy()) { - return; - } - uint32_t m = micros(); - yieldCalls++; - while (sdBusy()) { - // Do something here. - } - m = micros() - m; - if (m > yieldMaxUsec) { - yieldMaxUsec = m; - } - yieldMicros += m; -} -//----------------------------------------------------------------------------- -void runTest() { - // Zero Stats - totalMicros = 0; - yieldMicros = 0; - yieldCalls = 0; - yieldMaxUsec = 0; - if (!file.open("TeensyDemo.bin", O_RDWR | O_CREAT)) { - errorHalt("open failed"); - } - Serial.println("\nsize,write,read"); - Serial.println("bytes,KB/sec,KB/sec"); - for (size_t nb = 512; nb <= BUF_DIM; nb *= 2) { - file.truncate(0); - uint32_t nRdWr = FILE_SIZE/nb; - Serial.print(nb); - Serial.print(','); - uint32_t t = micros(); - for (uint32_t n = 0; n < nRdWr; n++) { - // Set start and end of buffer. - buf32[0] = n; - buf32[nb/4 - 1] = n; - if (nb != file.write(buf, nb)) { - errorHalt("write failed"); - } - } - t = micros() - t; - totalMicros += t; - Serial.print(1000.0*FILE_SIZE/t); - Serial.print(','); - file.rewind(); - t = micros(); - - for (uint32_t n = 0; n < nRdWr; n++) { - if ((int)nb != file.read(buf, nb)) { - errorHalt("read failed"); - } - // crude check of data. - if (buf32[0] != n || buf32[nb/4 - 1] != n) { - errorHalt("data check"); - } - } - t = micros() - t; - totalMicros += t; - Serial.println(1000.0*FILE_SIZE/t); - } - file.close(); - Serial.print("\ntotalMicros "); - Serial.println(totalMicros); - Serial.print("yieldMicros "); - Serial.println(yieldMicros); - Serial.print("yieldCalls "); - Serial.println(yieldCalls); - Serial.print("yieldMaxUsec "); - Serial.println(yieldMaxUsec); - Serial.print("kHzSdClk "); - Serial.println(kHzSdClk()); - Serial.println("Done"); -} -//----------------------------------------------------------------------------- -void setup() { - Serial.begin(9600); - while (!Serial) { - } - Serial.println("SdFatSdioEX uses extended multi-block transfers without DMA."); - Serial.println("SdFatSdio uses a traditional DMA SDIO implementation."); - Serial.println("Note the difference is speed and busy yield time.\n"); -} -//----------------------------------------------------------------------------- -void loop() { - do { - delay(10); - } while (Serial.available() && Serial.read()); - - Serial.println("Type '1' for SdFatSdioEX or '2' for SdFatSdio"); - while (!Serial.available()) { - } - char c = Serial.read(); - if (c != '1' && c != '2') { - Serial.println("Invalid input"); - return; - } - if (c =='1') { - useEx = true; - if (!sdEx.begin()) { - sd.initErrorHalt("SdFatSdioEX begin() failed"); - } - // make sdEx the current volume. - sdEx.chvol(); - } else { - useEx = false; - if (!sd.begin()) { - sd.initErrorHalt("SdFatSdio begin() failed"); - } - // make sd the current volume. - sd.chvol(); - } - runTest(); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/Timestamp/Timestamp.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/Timestamp/Timestamp.ino deleted file mode 100644 index 9a7fd2b7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/Timestamp/Timestamp.ino +++ /dev/null @@ -1,176 +0,0 @@ -/* - * This program tests the dateTimeCallback() function - * and the timestamp() function. - */ -#include -#include "SdFat.h" -#include "sdios.h" - -SdFat sd; - -SdFile file; - -// Default SD chip select is SS pin -const uint8_t chipSelect = SS; - -// create Serial stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -/* - * date/time values for debug - * normally supplied by a real-time clock or GPS - */ -// date 1-Oct-14 -uint16_t year = 2014; -uint8_t month = 10; -uint8_t day = 1; - -// time 20:30:40 -uint8_t hour = 20; -uint8_t minute = 30; -uint8_t second = 40; -//------------------------------------------------------------------------------ -/* - * User provided date time callback function. - * See SdFile::dateTimeCallback() for usage. - */ -void dateTime(uint16_t* date, uint16_t* time) { - // User gets date and time from GPS or real-time - // clock in real callback function - - // return date using FAT_DATE macro to format fields - *date = FAT_DATE(year, month, day); - - // return time using FAT_TIME macro to format fields - *time = FAT_TIME(hour, minute, second); -} -//------------------------------------------------------------------------------ -/* - * Function to print all timestamps. - */ -void printTimestamps(SdFile& f) { - dir_t d; - if (!f.dirEntry(&d)) { - error("f.dirEntry failed"); - } - - cout << F("Creation: "); - f.printFatDate(d.creationDate); - cout << ' '; - f.printFatTime(d.creationTime); - cout << endl; - - cout << F("Modify: "); - f.printFatDate(d.lastWriteDate); - cout <<' '; - f.printFatTime(d.lastWriteTime); - cout << endl; - - cout << F("Access: "); - f.printFatDate(d.lastAccessDate); - cout << endl; -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // remove files if they exist - sd.remove("callback.txt"); - sd.remove("default.txt"); - sd.remove("stamp.txt"); - - // create a new file with default timestamps - if (!file.open("default.txt", O_WRONLY | O_CREAT)) { - error("open default.txt failed"); - } - cout << F("\nOpen with default times\n"); - printTimestamps(file); - - // close file - file.close(); - /* - * Test the date time callback function. - * - * dateTimeCallback() sets the function - * that is called when a file is created - * or when a file's directory entry is - * modified by sync(). - * - * The callback can be disabled by the call - * SdFile::dateTimeCallbackCancel() - */ - // set date time callback function - SdFile::dateTimeCallback(dateTime); - - // create a new file with callback timestamps - if (!file.open("callback.txt", O_WRONLY | O_CREAT)) { - error("open callback.txt failed"); - } - cout << ("\nOpen with callback times\n"); - printTimestamps(file); - - // change call back date - day += 1; - - // must add two to see change since FAT second field is 5-bits - second += 2; - - // modify file by writing a byte - file.write('t'); - - // force dir update - file.sync(); - - cout << F("\nTimes after write\n"); - printTimestamps(file); - - // close file - file.close(); - /* - * Test timestamp() function - * - * Cancel callback so sync will not - * change access/modify timestamp - */ - SdFile::dateTimeCallbackCancel(); - - // create a new file with default timestamps - if (!file.open("stamp.txt", O_WRONLY | O_CREAT)) { - error("open stamp.txt failed"); - } - // set creation date time - if (!file.timestamp(T_CREATE, 2014, 11, 10, 1, 2, 3)) { - error("set create time failed"); - } - // set write/modification date time - if (!file.timestamp(T_WRITE, 2014, 11, 11, 4, 5, 6)) { - error("set write time failed"); - } - // set access date - if (!file.timestamp(T_ACCESS, 2014, 11, 12, 7, 8, 9)) { - error("set access time failed"); - } - cout << F("\nTimes after timestamp() calls\n"); - printTimestamps(file); - - file.close(); - cout << F("\nDone\n"); -} - -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/TwoCards/TwoCards.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/TwoCards/TwoCards.ino deleted file mode 100644 index 1adbdf24..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/TwoCards/TwoCards.ino +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Warning This example requires extra RAM and may crash on Uno. - * Example use of two SD cards. - */ -#include -#include "SdFat.h" -#include "FreeStack.h" - -SdFat sd1; -const uint8_t SD1_CS = 10; // chip select for sd1 - -SdFat sd2; -const uint8_t SD2_CS = 4; // chip select for sd2 - -const uint8_t BUF_DIM = 100; -uint8_t buf[BUF_DIM]; - -const uint32_t FILE_SIZE = 1000000; -const uint16_t NWRITE = FILE_SIZE/BUF_DIM; -//------------------------------------------------------------------------------ -// print error msg, any SD error codes, and halt. -// store messages in flash -#define errorExit(msg) errorHalt(F(msg)) -#define initError(msg) initErrorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.print(F("FreeStack: ")); - - Serial.println(FreeStack()); - - // fill buffer with known data - for (size_t i = 0; i < sizeof(buf); i++) { - buf[i] = i; - } - - Serial.println(F("type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - - // disable sd2 while initializing sd1 - pinMode(SD2_CS, OUTPUT); - digitalWrite(SD2_CS, HIGH); - - // initialize the first card - if (!sd1.begin(SD1_CS)) { - sd1.initError("sd1:"); - } - // create Dir1 on sd1 if it does not exist - if (!sd1.exists("/Dir1")) { - if (!sd1.mkdir("/Dir1")) { - sd1.errorExit("sd1.mkdir"); - } - } - // initialize the second card - if (!sd2.begin(SD2_CS)) { - sd2.initError("sd2:"); - } -// create Dir2 on sd2 if it does not exist - if (!sd2.exists("/Dir2")) { - if (!sd2.mkdir("/Dir2")) { - sd2.errorExit("sd2.mkdir"); - } - } - // list root directory on both cards - Serial.println(F("------sd1 root-------")); - sd1.ls(); - Serial.println(F("------sd2 root-------")); - sd2.ls(); - - // make /Dir1 the default directory for sd1 - if (!sd1.chdir("/Dir1")) { - sd1.errorExit("sd1.chdir"); - } - - // make /Dir2 the default directory for sd2 - if (!sd2.chdir("/Dir2")) { - sd2.errorExit("sd2.chdir"); - } - - // list current directory on both cards - Serial.println(F("------sd1 Dir1-------")); - sd1.ls(); - Serial.println(F("------sd2 Dir2-------")); - sd2.ls(); - Serial.println(F("---------------------")); - - // remove rename.bin from /Dir2 directory of sd2 - if (sd2.exists("rename.bin")) { - if (!sd2.remove("rename.bin")) { - sd2.errorExit("remove rename.bin"); - } - } - // set the current working directory for open() to sd1 - sd1.chvol(); - - // create or open /Dir1/test.bin and truncate it to zero length - SdFile file1; - if (!file1.open("test.bin", O_RDWR | O_CREAT | O_TRUNC)) { - sd1.errorExit("file1"); - } - Serial.println(F("Writing test.bin to sd1")); - - // write data to /Dir1/test.bin on sd1 - for (uint16_t i = 0; i < NWRITE; i++) { - if (file1.write(buf, sizeof(buf)) != sizeof(buf)) { - sd1.errorExit("sd1.write"); - } - } - // set the current working directory for open() to sd2 - sd2.chvol(); - - // create or open /Dir2/copy.bin and truncate it to zero length - SdFile file2; - if (!file2.open("copy.bin", O_WRONLY | O_CREAT | O_TRUNC)) { - sd2.errorExit("file2"); - } - Serial.println(F("Copying test.bin to copy.bin")); - - // copy file1 to file2 - file1.rewind(); - uint32_t t = millis(); - - while (1) { - int n = file1.read(buf, sizeof(buf)); - if (n < 0) { - sd1.errorExit("read1"); - } - if (n == 0) { - break; - } - if ((int)file2.write(buf, n) != n) { - sd2.errorExit("write2"); - } - } - t = millis() - t; - Serial.print(F("File size: ")); - Serial.println(file2.fileSize()); - Serial.print(F("Copy time: ")); - Serial.print(t); - Serial.println(F(" millis")); - // close test.bin - file1.close(); - file2.close(); - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Renaming copy.bin")); - // rename the copy - if (!sd2.rename("copy.bin", "rename.bin")) { - sd2.errorExit("sd2.rename"); - } - // list current directory on both cards - Serial.println(F("------sd1 -------")); - sd1.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("------sd2 -------")); - sd2.ls("/", LS_R | LS_DATE | LS_SIZE); - Serial.println(F("---------------------")); - Serial.println(F("Done")); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/VolumeFreeSpace/VolumeFreeSpace.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/VolumeFreeSpace/VolumeFreeSpace.ino deleted file mode 100644 index a64bb6fe..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/VolumeFreeSpace/VolumeFreeSpace.ino +++ /dev/null @@ -1,82 +0,0 @@ -/* - * This program demonstrates the freeClusterCount() call. - */ -#include -#include "SdFat.h" -#include "sdios.h" -/* - * SD chip select pin. Common values are: - * - * Arduino Ethernet shield, pin 4. - * SparkFun SD shield, pin 8. - * Adafruit Datalogging shield, pin 10. - * Default SD chip select is the SPI SS pin. - */ -const uint8_t chipSelect = SS; - -#define TEST_FILE "Cluster.test" -// file system -SdFat sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void printFreeSpace() { - cout << F("freeClusterCount() call time: "); - uint32_t m = micros(); - uint32_t volFree = sd.vol()->freeClusterCount(); - cout << micros() - m << F(" micros\n"); - cout << F("freeClusters: ") << volFree << setprecision(3) << endl; - float fs = 0.000512*volFree*sd.vol()->blocksPerCluster(); - cout << F("freeSpace: ") << fs << F(" MB (MB = 1,000,000 bytes)\n\n"); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - if (!MAINTAIN_FREE_CLUSTER_COUNT) { - cout << F("Please edit SdFatConfig.h and set\n"); - cout << F("MAINTAIN_FREE_CLUSTER_COUNT nonzero for\n"); - cout << F("maximum freeClusterCount() performance.\n\n"); - } - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - // Insure no TEST_FILE. - sd.remove(TEST_FILE); - - cout << F("\nFirst call to freeClusterCount scans the FAT.\n\n"); - printFreeSpace(); - - cout << F("Create and write to ") << TEST_FILE << endl; - if (!file.open(TEST_FILE, O_WRONLY | O_CREAT)) { - sd.errorHalt(F("Create failed")); - } - file.print(F("Cause a cluster to be allocated")); - file.close(); - - cout << F("\nSecond freeClusterCount call is faster if\n"); - cout << F("MAINTAIN_FREE_CLUSTER_COUNT is nonzero.\n\n"); - - printFreeSpace(); - - cout << F("Remove ") << TEST_FILE << endl << endl; - sd.remove(TEST_FILE); - printFreeSpace(); - cout << F("Done") << endl; -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/bench/bench.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/bench/bench.ino deleted file mode 100644 index 8e14dd66..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/bench/bench.ino +++ /dev/null @@ -1,222 +0,0 @@ -/* - * This program is a simple binary write/read benchmark. - */ -#include -#include "SdFat.h" -#include "sdios.h" -#include "FreeStack.h" - -// Set USE_SDIO to zero for SPI card access. -#define USE_SDIO 0 - -// SD chip select pin -const uint8_t chipSelect = SS; - -// Size of read/write. -const size_t BUF_SIZE = 512; - -// File size in MB where MB = 1,000,000 bytes. -const uint32_t FILE_SIZE_MB = 5; - -// Write pass count. -const uint8_t WRITE_COUNT = 2; - -// Read pass count. -const uint8_t READ_COUNT = 2; -//============================================================================== -// End of configuration constants. -//------------------------------------------------------------------------------ -// File size in bytes. -const uint32_t FILE_SIZE = 1000000UL*FILE_SIZE_MB; - -uint8_t buf[BUF_SIZE]; - -// file system -#if USE_SDIO -// Traditional DMA version. -// SdFatSdio sd; -// Faster version. -SdFatSdioEX sd; -#else // USE_SDIO -SdFat sd; -#endif // USE_SDIO - -// Set ENABLE_EXTENDED_TRANSFER_CLASS to use extended SD I/O. -// Requires dedicated use of the SPI bus. -// SdFatEX sd; - -// Set ENABLE_SOFTWARE_SPI_CLASS to use software SPI. -// Args are misoPin, mosiPin, sckPin. -// SdFatSoftSpi<6, 7, 5> sd; - -// test file -SdFile file; - -// Serial output stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// Store error strings in flash to save RAM. -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void cidDmp() { - cid_t cid; - if (!sd.card()->readCID(&cid)) { - error("readCID failed"); - } - cout << F("\nManufacturer ID: "); - cout << hex << int(cid.mid) << dec << endl; - cout << F("OEM ID: ") << cid.oid[0] << cid.oid[1] << endl; - cout << F("Product: "); - for (uint8_t i = 0; i < 5; i++) { - cout << cid.pnm[i]; - } - cout << F("\nVersion: "); - cout << int(cid.prv_n) << '.' << int(cid.prv_m) << endl; - cout << F("Serial number: ") << hex << cid.psn << dec << endl; - cout << F("Manufacturing date: "); - cout << int(cid.mdt_month) << '/'; - cout << (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high) << endl; - cout << endl; -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - cout << F("\nUse a freshly formatted SD for best performance.\n"); - - // use uppercase in hex and use 0X base prefix - cout << uppercase << showbase << endl; -} -//------------------------------------------------------------------------------ -void loop() { - float s; - uint32_t t; - uint32_t maxLatency; - uint32_t minLatency; - uint32_t totalLatency; - - // Discard any input. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - // F( stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - cout << F("chipSelect: ") << int(chipSelect) << endl; - cout << F("FreeStack: ") << FreeStack() << endl; - -#if USE_SDIO - if (!sd.begin()) { - sd.initErrorHalt(); - } -#else // USE_SDIO - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } -#endif // USE_SDIO - cout << F("Type is FAT") << int(sd.vol()->fatType()) << endl; - cout << F("Card size: ") << sd.card()->cardSize()*512E-9; - cout << F(" GB (GB = 1E9 bytes)") << endl; - - cidDmp(); - - // open or create file - truncate existing file. - if (!file.open("bench.dat", O_RDWR | O_CREAT | O_TRUNC)) { - error("open failed"); - } - - // fill buf with known data - for (size_t i = 0; i < (BUF_SIZE-2); i++) { - buf[i] = 'A' + (i % 26); - } - buf[BUF_SIZE-2] = '\r'; - buf[BUF_SIZE-1] = '\n'; - - cout << F("File size ") << FILE_SIZE_MB << F(" MB\n"); - cout << F("Buffer size ") << BUF_SIZE << F(" bytes\n"); - cout << F("Starting write test, please wait.") << endl << endl; - - // do write test - uint32_t n = FILE_SIZE/sizeof(buf); - cout < m) { - minLatency = m; - } - totalLatency += m; - } - file.sync(); - t = millis() - t; - s = file.fileSize(); - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Starting read test, please wait.") << endl; - cout << endl < m) { - minLatency = m; - } - totalLatency += m; - if (buf[BUF_SIZE-1] != '\n') { - error("data check"); - } - } - s = file.fileSize(); - t = millis() - t; - cout << s/t <<',' << maxLatency << ',' << minLatency; - cout << ',' << totalLatency/n << endl; - } - cout << endl << F("Done") << endl; - file.close(); -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/dataLogger/dataLogger.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/dataLogger/dataLogger.ino deleted file mode 100644 index 665e77d6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/dataLogger/dataLogger.ino +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Simple data logger. - */ -#include -#include "SdFat.h" - -// SD chip select pin. Be sure to disable any other SPI devices such as Enet. -const uint8_t chipSelect = SS; - -// Interval between data records in milliseconds. -// The interval must be greater than the maximum SD write latency plus the -// time to acquire and write data to the SD to avoid overrun errors. -// Run the bench example to check the quality of your SD card. -const uint32_t SAMPLE_INTERVAL_MS = 1000; - -// Log file base name. Must be six characters or less. -#define FILE_BASE_NAME "Data" -//------------------------------------------------------------------------------ -// File system object. -SdFat sd; - -// Log file. -SdFile file; - -// Time in micros for next data record. -uint32_t logTime; - -//============================================================================== -// User functions. Edit writeHeader() and logData() for your requirements. - -const uint8_t ANALOG_COUNT = 4; -//------------------------------------------------------------------------------ -// Write data header. -void writeHeader() { - file.print(F("micros")); - for (uint8_t i = 0; i < ANALOG_COUNT; i++) { - file.print(F(",adc")); - file.print(i, DEC); - } - file.println(); -} -//------------------------------------------------------------------------------ -// Log a data record. -void logData() { - uint16_t data[ANALOG_COUNT]; - - // Read all channels to avoid SD write latency between readings. - for (uint8_t i = 0; i < ANALOG_COUNT; i++) { - data[i] = analogRead(i); - } - // Write data to file. Start with log time in micros. - file.print(logTime); - - // Write ADC data to CSV record. - for (uint8_t i = 0; i < ANALOG_COUNT; i++) { - file.write(','); - file.print(data[i]); - } - file.println(); -} -//============================================================================== -// Error messages stored in flash. -#define error(msg) sd.errorHalt(F(msg)) -//------------------------------------------------------------------------------ -void setup() { - const uint8_t BASE_NAME_SIZE = sizeof(FILE_BASE_NAME) - 1; - char fileName[13] = FILE_BASE_NAME "00.csv"; - - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(1000); - - Serial.println(F("Type any character to start")); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // Find an unused file name. - if (BASE_NAME_SIZE > 6) { - error("FILE_BASE_NAME too long"); - } - while (sd.exists(fileName)) { - if (fileName[BASE_NAME_SIZE + 1] != '9') { - fileName[BASE_NAME_SIZE + 1]++; - } else if (fileName[BASE_NAME_SIZE] != '9') { - fileName[BASE_NAME_SIZE + 1] = '0'; - fileName[BASE_NAME_SIZE]++; - } else { - error("Can't create file name"); - } - } - if (!file.open(fileName, O_WRONLY | O_CREAT | O_EXCL)) { - error("file.open"); - } - // Read any Serial data. - do { - delay(10); - } while (Serial.available() && Serial.read() >= 0); - - Serial.print(F("Logging to: ")); - Serial.println(fileName); - Serial.println(F("Type any character to stop")); - - // Write data header. - writeHeader(); - - // Start on a multiple of the sample interval. - logTime = micros()/(1000UL*SAMPLE_INTERVAL_MS) + 1; - logTime *= 1000UL*SAMPLE_INTERVAL_MS; -} -//------------------------------------------------------------------------------ -void loop() { - // Time for next record. - logTime += 1000UL*SAMPLE_INTERVAL_MS; - - // Wait for log time. - int32_t diff; - do { - diff = micros() - logTime; - } while (diff < 0); - - // Check for data rate too high. - if (diff > 10) { - error("Missed data record"); - } - - logData(); - - // Force data to SD and update the directory entry to avoid data loss. - if (!file.sync() || file.getWriteError()) { - error("write error"); - } - - if (Serial.available()) { - // Close file and stop. - file.close(); - Serial.println(F("Done")); - SysCall::halt(); - } -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/fgets/fgets.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/fgets/fgets.ino deleted file mode 100644 index c1b06a61..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/fgets/fgets.ino +++ /dev/null @@ -1,88 +0,0 @@ -// Demo of fgets function to read lines from a file. -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -SdFat sd; -// print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash memory -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void demoFgets() { - char line[25]; - int n; - // open test file - SdFile rdfile("fgets.txt", O_RDONLY); - - // check for open error - if (!rdfile.isOpen()) { - error("demoFgets"); - } - - cout << endl << F( - "Lines with '>' end with a '\\n' character\n" - "Lines with '#' do not end with a '\\n' character\n" - "\n"); - - // read lines from the file - while ((n = rdfile.fgets(line, sizeof(line))) > 0) { - if (line[n - 1] == '\n') { - cout << '>' << line; - } else { - cout << '#' << line << endl; - } - } -} -//------------------------------------------------------------------------------ -void makeTestFile() { - // create or open test file - SdFile wrfile("fgets.txt", O_WRONLY | O_CREAT | O_TRUNC); - - // check for open error - if (!wrfile.isOpen()) { - error("MakeTestFile"); - } - - // write test file - wrfile.print(F( - "Line with CRLF\r\n" - "Line with only LF\n" - "Long line that will require an extra read\n" - "\n" // empty line - "Line at EOF without NL" - )); - wrfile.close(); -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - delay(400); // catch Due reset problem - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - makeTestFile(); - - demoFgets(); - - cout << F("\nDone\n"); -} -void loop(void) {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/formatting/formatting.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/formatting/formatting.ino deleted file mode 100644 index a2b937ff..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/formatting/formatting.ino +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Print a table with various formatting options - * Format dates - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// create Serial stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// print a table to demonstrate format manipulators -void example(void) { - const int max = 10; - const int width = 4; - - for (int row = 1; row <= max; row++) { - for (int col = 1; col <= max; col++) { - cout << setw(width) << row * col << (col == max ? '\n' : ' '); - } - } - cout << endl; -} -//------------------------------------------------------------------------------ -// print a date as mm/dd/yyyy with zero fill in mm and dd -// shows how to set and restore the fill character -void showDate(int m, int d, int y) { - // convert two digit year - if (y < 100) { - y += 2000; - } - - // set new fill to '0' save old fill character - char old = cout.fill('0'); - - // print date - cout << setw(2) << m << '/' << setw(2) << d << '/' << y << endl; - - // restore old fill character - cout.fill(old); -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - delay(2000); - - cout << endl << "default formatting" << endl; - example(); - - cout << showpos << "showpos" << endl; - example(); - - cout << hex << left << showbase << "hex left showbase" << endl; - example(); - - cout << internal << setfill('0') << uppercase; - cout << "uppercase hex internal showbase fill('0')" < -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system object -SdFat sd; - -// create a serial stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -void makeTestFile() { - ofstream sdout("getline.txt"); - // use flash for text to save RAM - sdout << F( - "short line\n" - "\n" - "17 character line\n" - "too long for buffer\n" - "line with no nl"); - - sdout.close(); -} -//------------------------------------------------------------------------------ -void testGetline() { - const int line_buffer_size = 18; - char buffer[line_buffer_size]; - ifstream sdin("getline.txt"); - int line_number = 0; - - while (sdin.getline(buffer, line_buffer_size, '\n') || sdin.gcount()) { - int count = sdin.gcount(); - if (sdin.fail()) { - cout << "Partial long line"; - sdin.clear(sdin.rdstate() & ~ios_base::failbit); - } else if (sdin.eof()) { - cout << "Partial final line"; // sdin.fail() is false - } else { - count--; // Don’t include newline in count - cout << "Line " << ++line_number; - } - cout << " (" << count << " chars): " << buffer << endl; - } -} -//------------------------------------------------------------------------------ -void setup(void) { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - - // F stores strings in flash to save RAM - cout << F("Type any character to start\n"); - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // make the test file - makeTestFile(); - - // run the example - testGetline(); - cout << "\nDone!\n"; -} -//------------------------------------------------------------------------------ -void loop(void) {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/rename/rename.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/rename/rename.ino deleted file mode 100644 index 7ad745fb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/rename/rename.ino +++ /dev/null @@ -1,106 +0,0 @@ -/* - * This program demonstrates use of SdFile::rename() - * and SdFat::rename(). - */ -#include -#include "SdFat.h" -#include "sdios.h" - -// SD chip select pin -const uint8_t chipSelect = SS; - -// file system -SdFat sd; - -// Serial print stream -ArduinoOutStream cout(Serial); -//------------------------------------------------------------------------------ -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - cout << F("Insert an empty SD. Type any character to start.") << endl; - while (!Serial.available()) { - SysCall::yield(); - } - - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - - // Remove file/dirs from previous run. - if (sd.exists("dir2/DIR3/NAME3.txt")) { - cout << F("Removing /dir2/DIR3/NAME3.txt") << endl; - if (!sd.remove("dir2/DIR3/NAME3.txt") || - !sd.rmdir("dir2/DIR3/") || - !sd.rmdir("dir2/")) { - error("remove/rmdir failed"); - } - } - // create a file and write one line to the file - SdFile file("Name1.txt", O_WRONLY | O_CREAT); - if (!file.isOpen()) { - error("Name1.txt"); - } - file.println("A test line for Name1.txt"); - - // rename the file name2.txt and add a line. - if (!file.rename("name2.txt")) { - error("name2.txt"); - } - file.println("A test line for name2.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make a new directory - "Dir1" - if (!sd.mkdir("Dir1")) { - error("Dir1"); - } - - // move file into Dir1, rename it NAME3.txt and add a line - if (!file.rename("Dir1/NAME3.txt")) { - error("NAME3.txt"); - } - file.println("A line for Dir1/NAME3.txt"); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - // make directory "dir2" - if (!sd.mkdir("dir2")) { - error("dir2"); - } - - // close file before rename(oldPath, newPath) - file.close(); - - // move Dir1 into dir2 and rename it DIR3 - if (!sd.rename("Dir1", "dir2/DIR3")) { - error("dir2/DIR3"); - } - - // open file for append in new location and add a line - if (!file.open("dir2/DIR3/NAME3.txt", O_WRONLY | O_APPEND)) { - error("dir2/DIR3/NAME3.txt"); - } - file.println("A line for dir2/DIR3/NAME3.txt"); - file.close(); - - // list files - cout << F("------") << endl; - sd.ls(LS_R); - - cout << F("Done") << endl; -} -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/examples/wipe/wipe.ino b/extra-libraries/SDFat/SdFat-1.1.0/examples/wipe/wipe.ino deleted file mode 100644 index 6d1bc936..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/examples/wipe/wipe.ino +++ /dev/null @@ -1,42 +0,0 @@ -// Example to wipe all data from an already formatted SD. -#include -#include "SdFat.h" -const int chipSelect = SS; - -SdFat sd; - -void setup() { - int c; - Serial.begin(9600); - // Wait for USB Serial - while (!Serial) { - SysCall::yield(); - } - Serial.println("Type 'Y' to wipe all data."); - while (!Serial.available()) { - SysCall::yield(); - } - c = Serial.read(); - if (c != 'Y') { - sd.errorHalt("Quitting, you did not type 'Y'."); - } - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.initErrorHalt(); - } - // Use wipe() for no dot progress indicator. - if (!sd.wipe(&Serial)) { - sd.errorHalt("Wipe failed."); - } - // Must reinitialize after wipe. - // Initialize at the highest speed supported by the board that is - // not over 50 MHz. Try a lower speed if SPI errors occur. - if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { - sd.errorHalt("Second init failed."); - } - Serial.println("Done"); -} - -void loop() { -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADC_ENOB.PNG b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADC_ENOB.PNG deleted file mode 100644 index 8f23768d..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADC_ENOB.PNG and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADCdocs/ATmegaADCAccuracy.pdf b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADCdocs/ATmegaADCAccuracy.pdf deleted file mode 100644 index 46ede856..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADCdocs/ATmegaADCAccuracy.pdf and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADCdocs/ExcelFFT.pdf b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADCdocs/ExcelFFT.pdf deleted file mode 100644 index 5e7c94b9..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/ADCdocs/ExcelFFT.pdf and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/AdcErrorStudy.txt b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/AdcErrorStudy.txt deleted file mode 100644 index d24d1f68..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/AdcErrorStudy.txt +++ /dev/null @@ -1,98 +0,0 @@ -Static Tests of the Arduino Internal ADC. - -Several people have asked about the DC accuracy of the Arduino ADC when used in my data logging applications at slow sample rates. - -Here are my results of some "hobby level" measurements of the Arduino ADC. - -One question is how important is the ADC clock rate. I did measurents for an ADC clock rate of 125 kHz to 2MHz. - -Another question is how much does Noise Reduction Mode help. I did a series of measurements using this mode. - -Noise Reduction Mode only reduced the mean absolute error slightly. - -I do calibration to remove Offset Error and Gain Error. Calibration is very important for good accuracy. - -These tests depend on the Arduino voltage regulator providing a stable voltage during the tests. The Arduino ADC reference voltage is Vcc for these tests. This may not be realistic for practical applications - -Integral Non-linearity (INL) is the main remaining source of error. - -Here are my results for static (DC) tests of the internal ADC for three UNOs. - -The Arduinos are powered by a high quality nine volt power supply. - -These tests measure a DC level so do not include problems due to time jitter, S/H time, and other dynamic errors. -There are several studies of the dynamic behavior of the Arduino ADC that determine ENOB (Effective Number Of Bits). - -I used a shield with a 12-bit MCP4921 DAC to generate voltage levels. This ADC has an output buffer so it provides a very low impedance source. - -I measured the voltage of the DAC with a calibrated 18-bit MCP3422 ADC on the shield. - -I used DAC levels from 20 to 4075 to avoid zero offset errors at low voltages and DAC buffer problems at high voltages. - -Each series of measurements has 4056 data points. - -This is a voltage range of about 0.023 to 4.972 volts. - -I calibrated the Arduino ADC for each series of measurements with a linear fit of the form. - -v = a + b*adcValue - -Errors are the difference between the value measured with the 18-bit ADC and the calibrated value measured with the AVR ADC. - -I also show the results for no calibration, the NoCal column, using the datasheet formula. - -Vin = Vref*adcValue/1024 - - -The rows in the tables tables are. - -Min - minimum error in millivolts - -Max - maximum error in millivolts - -MAE - mean absolute error in millivolts - - -The columns in the tables are: - -Ideal - results for a perfect 10-bit ADC for comparison. - -NoCal - datasheet formula (5/1024)*adcValue with Noise Reduction Mode. - -NR128 - Noise Reduction mode with Prescaler of 128 (ADC clock of 125 kHz). - -PS128 - analogRead with Prescaler of 128 (ADC clock of 125 kHz). - -PS64 - analogRead with Prescaler of 64 (ADC clock of 250 kHz). - -PS32 - analogRead with Prescaler of 32 (ADC clock of 500 kHz). - -PS16 - analogRead with Prescaler of 16 (ADC clock of 1 MHz). - -PS8 - analogRead with Prescaler of 8 (ADC clock of 2 MHz). - - -Results for three UNO Arduinos - - First Arduino - Error Millivolts - - Ideal NoCal NR128 PS128 PS64 PS32 PS16 PS8 -Min -2.44 -2.43 -3.72 -4.01 -3.88 -4.53 -6.57 -27.18 -Max 2.44 11.69 3.74 4.24 4.15 5.17 8.69 23.21 -MAE 1.22 5.02 1.33 1.38 1.37 1.44 1.96 4.11 - - Second Arduino - Error Millivolts - - Ideal NoCal NR128 PS128 PS64 PS32 PS16 PS8 -Min -2.44 -9.24 -4.87 -4.86 -5.05 -5.34 -6.52 -24.04 -Max 2.44 11.62 3.95 4.64 4.69 5.71 8.41 21.29 -MAE 1.22 5.33 1.41 1.43 1.44 1.53 2.02 4.05 - - Third Arduino - Error Millivolts - - Ideal NoCal NR128 PS128 PS64 PS32 PS16 PS8 -Min -2.44 -7.88 -4.12 -4.40 -4.32 -4.41 -6.97 -26.93 -Max 2.44 12.53 3.80 4.04 4.18 5.27 8.84 24.59 -MAE 1.22 4.85 1.29 1.33 1.34 1.42 1.91 4.10 - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/DATA.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/DATA.png deleted file mode 100644 index a9b31aa1..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/DATA.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/FFT.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/FFT.png deleted file mode 100644 index dc481a66..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/FFT.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/RateTable.txt b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/RateTable.txt deleted file mode 100644 index 554ba114..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/RateTable.txt +++ /dev/null @@ -1,21 +0,0 @@ -Maximum Sample Rate Table - - ADC clock kHz - 125 250 500 1000 -pins -1 7692 14286 25000 40000 -2 3810 6667 11111 16667 -3 2572 4790 8421 13559 -4 1942 3636 6452 10526 -5 1559 2930 5229 8602 -6 1303 2454 4396 7273 -7 1119 2111 3791 6299 -8 980 1852 3333 5556 -9 872 1649 2974 4969 -10 786 1487 2685 4494 -11 715 1354 2446 4103 -12 656 1242 2247 3774 -13 606 1148 2078 3493 -14 563 1067 1932 3252 -15 525 996 1806 3042 -16 493 935 1695 2857 diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/bintocsv/AnalogBinLogger.h b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/bintocsv/AnalogBinLogger.h deleted file mode 100644 index da4d448c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/bintocsv/AnalogBinLogger.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef AnalogBinLogger_h -#define AnalogBinLogger_h -//------------------------------------------------------------------------------ -// First block of file. -struct metadata_t { - unsigned long adcFrequency; // ADC clock frequency - unsigned long cpuFrequency; // CPU clock frequency - unsigned long sampleInterval; // Sample interval in CPU cycles. - unsigned long recordEightBits; // Size of ADC values, nonzero for 8-bits. - unsigned long pinCount; // Number of analog pins in a sample. - unsigned long pinNumber[123]; // List of pin numbers in a sample. -}; -//------------------------------------------------------------------------------ -// Data block for 8-bit ADC mode. -const size_t DATA_DIM8 = 508; -struct block8_t { - unsigned short count; // count of data bytes - unsigned short overrun; // count of overruns since last block - unsigned char data[DATA_DIM8]; -}; -//------------------------------------------------------------------------------ -// Data block for 10-bit ADC mode. -const size_t DATA_DIM16 = 254; -struct block16_t { - unsigned short count; // count of data bytes - unsigned short overrun; // count of overruns since last block - unsigned short data[DATA_DIM16]; -}; -//------------------------------------------------------------------------------ -// Data block for PC use -struct adcdata_t { - unsigned short count; // count of data bytes - unsigned short overrun; // count of overruns since last block - union { - unsigned char u8[DATA_DIM8]; - unsigned short u16[DATA_DIM16]; - } data; -}; -#endif // AnalogBinLogger_h \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/bintocsv/bintocsv.cpp b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/bintocsv/bintocsv.cpp deleted file mode 100644 index 922644b4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/bintocsv/bintocsv.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include -#include "AnalogBinLogger.h" -FILE *source; -FILE *destination; -int count = 0; - -int main(int argc, char** argv) { - metadata_t meta; - adcdata_t adc; - // Make sure no padding/size problems. - if (sizeof(meta) != 512 || sizeof(adc) != 512) { - printf("block size error\n"); - return 0; - } - if (argc != 3) { - printf("missing arguments:\n"); - printf("%s binFile csvFile\n", argv[0]); - return 0; - } - source = fopen(argv[1], "rb"); - if (!source) { - printf("open failed for %s\n", argv[1]); - return 0; - } - if (fread(&meta, sizeof(meta), 1, source) != 1) { - printf("read meta data failed\n"); - return 0; - } - if ( meta.pinCount == 0 - || meta.pinCount > (sizeof(meta.pinNumber)/sizeof(meta.pinNumber[0])) - || meta.adcFrequency < 50000 || meta.adcFrequency > 4000000) { - printf("Invalid meta data\n"); - return 0; - } - destination = fopen(argv[2], "w"); - if (!destination) { - printf("open failed for %s\n", argv[2]); - return 0; - } - int pinCount = meta.pinCount; - printf("pinCount: %d\n", pinCount); - printf("Sample pins:"); - for (unsigned i = 0; i < meta.pinCount; i++) { - printf(" %d", meta.pinNumber[i]); - } - printf("\n"); - printf("ADC clock rate: %g kHz\n", 0.001*meta.adcFrequency); - float sampleInterval = (float)meta.sampleInterval/(float)meta.cpuFrequency; - printf("Sample rate: %g per sec\n", 1.0/sampleInterval); - printf("Sample interval: %.4f usec\n", 1.0e6*sampleInterval); - - fprintf(destination, "Interval,%.4f,usec\n", 1.0e6*sampleInterval); - // Write header with pin numbers - for (int i = 0; i < ((int)meta.pinCount - 1); i++) { - fprintf(destination, "pin%d,", meta.pinNumber[i]); - } - fprintf(destination, "pin%d\n", meta.pinNumber[meta.pinCount - 1]); - unsigned maxCount = meta.recordEightBits ? DATA_DIM8 : DATA_DIM16; - while (!feof(source)) { - if (fread(&adc, sizeof(adc), 1, source) != 1) break; - if (adc.count > maxCount) { - printf("****Invalid data block****\n"); - return 0; - } - if (adc.overrun) { - fprintf(destination, "Overruns,%d\n", adc.overrun); - } - for (int i = 0; i < adc.count; i++) { - unsigned value = meta.recordEightBits ? adc.data.u8[i] : adc.data.u16[i]; - if ((i + 1)%pinCount) { - fprintf(destination, "%d,", value); - } else { - fprintf(destination, "%d\n", value); - } - } - count += adc.count; - } - printf("%d ADC values read\n", count); - fclose(source); - fclose(destination); - return 0; -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/readme.txt b/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/readme.txt deleted file mode 100644 index 3ae2ca21..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/AnalogBinLoggerExtras/readme.txt +++ /dev/null @@ -1,95 +0,0 @@ -AnalogBinLogger.ino logs analog data to a binary SD file at high rates. - -Samples are logged at regular intervals by using timer1. Timer/Counter1 -Compare Match B is used to trigger the ADC for the first pin in a sample. -The ADC is triggered for remaining sample pins in the ADC conversion complete -interrupt routine. - -Data is captured in the ADC interrupt routine and saved in 512 byte buffers. - -Buffered data is written to the SD in a function called from loop(). The -entire data set is written to a large contiguous file as a single multi-block -write. This reduces write latency problems. - -Many inexpensive SD cards work well at lower rates. I used a $6.00 -SanDisk 4 GB class 4 card for testing. - -SanDisk class 4 cards work well at fairly high rates. I used the 4 GB SanDisk -card to log a single pin at 40,000 samples per second. - -You may need to increase the time between samples if your card has higher -latency. Using a Mega Arduino can help since it has more buffering. - -The bintocsv folder contains a PC program for converting binary files to -CSV files. Build it from the included source files. bintocvs is a command line program. - -bintocsv binFile csvFile - -AnalogBinLogger requires a recent version of the SdFat library. The SdFat -folder contains a beta version I used for development. - -The latest stable version is here: -http://code.google.com/p/sdfatlib/downloads/list - -You also need to install the included BufferedWriter library. It provides -fast text formatting. - -Example data for a 2 kHz sine wave logged at 40,000 samples per second is -shown in DATA.PNG and FFT.PNG shows a FFT of the data. See ExcelFFT.pdf -in the ADCdocs folder for details on calculating a FFT. - -The accuracy of the ADC samples depends on the ADC clock rate. See the -ADC_ENOB.PNG file for a plot of accuracy vs ADC clock frequency. - -See files in the ADCdocs folder for more information on ADC accuracy. - -To modify this program you will need a good knowledge of the Arduino -ADC, timer1 and C++ programming. This is not for the newbie. - -I have an LED and resistor connected to pin 3 to signal fatal errors and -data overruns. Fatal errors are indicated by a blinking led. Overrun errors -are indicated by a solid lit led. The count of samples dropped is written -to the SD and data logging continues. - -You can disable the error led feature by setting the error pin number negative: - -To use AnalogBinLogger, install these items. - -Place the BufferWriter and SdFat folders in your sketchbook libraries folder. - -Place the AnalogIsrLogger folder in your sketchbook folder. - -You must edit the configuration constants at the beginning of the program -to set the sample pins, sample rate, and other configuration values. - -Initially the program is setup to log the first five analog pins at 5000 -samples per second. Change these values to suit your needs. - -See RateTable.txt for maximum allowed sample rates vs pin count and ADC clock -frequency. - -The program has four commands: - -c - convert file to CSV -d - dump data to Serial -e - overrun error details -r - record ADC data - -All commands can be terminated by entering a character from the serial monitor. - -The c command converts the current binary file to a text file. Entering a -character on the serial monitor terminates the command. - -The d command converts the binary file to text and displays it on the serial -monitor. Entering a character on the serial monitor terminates the command. - -The e command displays details about overruns in the current binary file. -Data overruns happen when data samples are lost due to long write latency -of the SD. - -The r command will record ADC data to a binary file. It will terminate -when a character is entered on the serial monitor or the the maximum file -block count has been reached. - -A number of program options can be set by changing constants at the beginning -of the program. \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/MainPage/SdFatmainpage.h b/extra-libraries/SDFat/SdFat-1.1.0/extras/MainPage/SdFatmainpage.h deleted file mode 100644 index faf0a405..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/MainPage/SdFatmainpage.h +++ /dev/null @@ -1,403 +0,0 @@ -/** - * Copyright (c) 20011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** -\mainpage Arduino %SdFat Library -
Copyright © 2012-2018 by William Greiman -
- -\section Intro Introduction -The Arduino %SdFat Library is a minimal implementation of FAT16 and FAT32 -file systems on SD flash memory cards. Standard SD and high capacity SDHC -cards are supported. - -Experimental support for FAT12 can be enabled by setting FAT12_SUPPORT -nonzero in SdFatConfig.h. - -The %SdFat library supports Long %File Names or short 8.3 names. -Edit the SdFatConfig.h file to select short or long file names. - -The main classes in %SdFat are SdFat, SdFatEX, SdFatSoftSpi, SdFatSoftSpiEX, -SdBaseFile, SdFile, File, StdioStream, \ref fstream, \ref ifstream, -and \ref ofstream. - -The SdFat, SdFatEX, SdFatSoftSpi and SdFatSoftSpiEX classes maintain a -FAT volume, a current working directory, and simplify initialization -of other classes. The SdFat and SdFatEX classes uses a fast custom hardware SPI -implementation. The SdFatSoftSpi and SdFatSoftSpiEX classes uses software SPI. - -the SdFatEX and SdFatSoftSpiEX use extended multi-block I/O for enhanced -performance. These classes must have exclusive use of the SPI bus. - -The SdBaseFile class provides basic file access functions such as open(), -binary read(), binary write(), close(), remove(), and sync(). SdBaseFile -is the smallest file class. - -The SdFile class has all the SdBaseFile class functions plus the Arduino -Print class functions. - -The File class has all the SdBaseFile functions plus the functions in -the Arduino SD.h File class. This provides compatibility with the -Arduino SD.h library. - -The StdioStream class implements functions similar to Linux/Unix standard -buffered input/output. - -The \ref fstream class implements C++ iostreams for both reading and writing -text files. - -The \ref ifstream class implements C++ iostreams for reading text files. - -The \ref ofstream class implements C++ iostreams for writing text files. - -The classes \ref ifstream, \ref ofstream, \ref istream, and \ref ostream -follow the C++ \ref iostream standard when possible. - -There are many tutorials and much documentation about using C++ iostreams -on the web. - -http://www.cplusplus.com/ is a good C++ site for learning iostreams. - -The classes \ref ibufstream and \ref obufstream format and parse character - strings in memory buffers. - -the classes ArduinoInStream and ArduinoOutStream provide iostream functions -for Serial, LiquidCrystal, and other devices. - -A number of example are provided in the %SdFat/examples folder. These were -developed to test %SdFat and illustrate its use. - -\section Install Installation - -You must manually install SdFat by copying the SdFat folder from the download -package to the Arduino libraries folder in your sketch folder. - -See the Manual installation section of this guide. - -http://arduino.cc/en/Guide/Libraries - -\section SDconfig SdFat Configuration - -Several configuration options may be changed by editing the SdFatConfig.h -file in the %SdFat folder. - -Set USE_LONG_FILE_NAMES nonzero to enable Long %File Names. By default, -Long %File Names are enabled. For the leanest fastest library disable -Long %File Names. Long %File names require extra flash but no extra RAM. -Opening Long %File Names can be slower than opening Short %File Names. -Data read and write performance is not changed by the type of %File Name. - -If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX -will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, -the class SdFatSoftSpiEX will be defined. -These classes used extended multi-block SD I/O for better performance. -the SPI bus may not be shared with other devices in this mode. - -Set USE_STANDARD_SPI_LIBRARY and ENABLE_SOFTWARE_SPI_CLASS to -enable various SPI options. set USE_STANDARD_SPI_LIBRARY to use the standard -Arduino SPI library. set ENABLE_SOFTWARE_SPI_CLASS to enable the SdFatSoftSpi -class which uses software SPI. - -To enable SD card CRC checking set USE_SD_CRC nonzero. - -Set FAT12_SUPPORT nonzero to enable use of FAT12 volumes. -FAT12 has not been well tested and requires additional flash. - -\section SDPath Paths and Working Directories - -Relative paths in SdFat are resolved in a manner similar to Windows. - -Each instance of SdFat has a current directory. In SdFat this directory -is called the volume working directory, vwd. Initially this directory is -the root directory for the volume. - -The volume working directory is changed by calling SdFat::chdir(path). - -The call sd.chdir("/2014") will change the volume working directory -for sd to "/2014", assuming "/2014" exists. - -Relative paths for SdFat member functions are resolved by starting at -the volume working directory. - -For example, the call sd.mkdir("April") will create the directory -"/2014/April" assuming the volume working directory is "/2014". - -SdFat has a current working directory, cwd, that is used to resolve paths -for file.open() calls. - -For a single SD card the current working directory is always the volume -working directory for that card. - -For multiple SD cards the current working directory is set to the volume -working directory of a card by calling the SdFat::chvol() member function. -The chvol() call is like the Windows \: command. - -The call sd2.chvol() will set the current working directory to the volume -working directory for sd2. - -If the volume working directory for sd2 is "/music" the call - -file.open("BigBand.wav", O_READ); - -will then open "/music/BigBand.wav" on sd2. - -The following functions are used to change or get current directories. -See the html documentation for more information. -@code -bool SdFat::chdir(bool set_cwd = false); -bool SdFat::chdir(const char* path, bool set_cwd = false); -void SdFat::chvol(); -SdBaseFile* SdFat::vwd(); -static SdBaseFile* SdBaseFile::cwd(); -@endcode - -\section SDcard SD\SDHC Cards - -Arduinos access SD cards using the cards SPI protocol. PCs, Macs, and -most consumer devices use the 4-bit parallel SD protocol. A card that -functions well on A PC or Mac may not work well on the Arduino. - -Most cards have good SPI read performance but cards vary widely in SPI -write performance. Write performance is limited by how efficiently the -card manages internal erase/remapping operations. The Arduino cannot -optimize writes to reduce erase operations because of its limit RAM. - -SanDisk cards generally have good write performance. They seem to have -more internal RAM buffering than other cards and therefore can limit -the number of flash erase operations that the Arduino forces due to its -limited RAM. - -\section Hardware Hardware Configuration - -%SdFat was developed using an - Adafruit Industries -Data Logging Shield. - -The hardware interface to the SD card should not use a resistor based level -shifter. %SdFat sets the SPI bus frequency to 8 MHz which results in signal -rise times that are too slow for the edge detectors in many newer SD card -controllers when resistor voltage dividers are used. - -The 5 to 3.3 V level shifter for 5 V Arduinos should be IC based like the -74HC4050N based circuit shown in the file SdLevel.png. The Adafruit Wave Shield -uses a 74AHC125N. Gravitech sells SD and MicroSD Card Adapters based on the -74LCX245. - -If you are using a resistor based level shifter and are having problems try -setting the SPI bus frequency to 4 MHz. This can be done by using -card.init(SPI_HALF_SPEED) to initialize the SD card. - -A feature to use software SPI is available. Software SPI is slower -than hardware SPI but allows any digital pins to be used. See -SdFatConfig.h for software SPI definitions. - -\section comment Bugs and Comments - -If you wish to report bugs or have comments, send email to -fat16lib@sbcglobal.net. If possible, include a simple program that illustrates -the bug or problem. - -\section Trouble Troubleshooting - -The two example programs QuickStart, and SdInfo are useful for troubleshooting. - -A message like this from SdInfo with errorCode 0X1 indicates the SD card -is not seen by SdFat. This is often caused by a wiring error and reformatting -the card will not solve the problem. -
-cardBegin failed
-SD errorCode: 0X1
-SD errorData: 0XFF
-
-Here is a similar message from QuickStart: -
-SD initialization failed.
-Do not reformat the card!
-Is the card correctly inserted?
-Is chipSelect set to the correct value?
-Does another SPI device need to be disabled?
-Is there a wiring/soldering problem?
-
-errorCode: 0x1, errorData: 0xff
-
-Here is a message from QuickStart that indicates a formatting problem: -
-Card successfully initialized.
-Can't find a valid FAT16/FAT32 partition.
-Try reformatting the card.  For best results use
-the SdFormatter program in SdFat/examples or download
-and use SDFormatter from www.sdcard.org/downloads.
-
- -The best source of recent information and help is the Arduino forum. - -http://arduino.cc/forum/ - -Also search the Adafruit forum. - -http://forums.adafruit.com/ - -If you are using a Teensy try. - -http://forum.pjrc.com/forum.php - -\section SdFatClass SdFat Usage - -SdFat supports Long File Names. Long names in SdFat are limited to 7-bit -ASCII characters in the range 0X20 - 0XFE The following are reserved characters: -
    -
  • < (less than) -
  • > (greater than) -
  • : (colon) -
  • " (double quote) -
  • / (forward slash) -
  • \ (backslash) -
  • | (vertical bar or pipe) -
  • ? (question mark) -
  • * (asterisk) -
-%SdFat uses a slightly restricted form of short names. -Short names are limited to 8 characters followed by an optional period (.) -and extension of up to 3 characters. The characters may be any combination -of letters and digits. The following special characters are also allowed: - -$ % ' - _ @ ~ ` ! ( ) { } ^ # & - -Short names are always converted to upper case and their original case -value is lost. Files that have a base-name where all characters have the -same case and an extension where all characters have the same case will -display properly. Examples this type name are UPPER.low, lower.TXT, -UPPER.TXT, and lower.txt. - -An application which writes to a file using print(), println() or -write() must close the file or call sync() at the appropriate time to -force data and directory information to be written to the SD Card. - -Applications must use care calling sync() -since 2048 bytes of I/O is required to update file and -directory information. This includes writing the current data block, reading -the block that contains the directory entry for update, writing the directory -block back and reading back the current data block. - -It is possible to open a file with two or more instances of a file object. -A file may be corrupted if data is written to the file by more than one -instance of a file object. - -\section HowTo How to format SD Cards as FAT Volumes - -The best way to restore an SD card's format on a PC or Mac is to use -SDFormatter which can be downloaded from: - -http://www.sdcard.org/downloads - -A formatter program, SdFormatter.ino, is included in the -%SdFat/examples/SdFormatter directory. This program attempts to -emulate SD Association's SDFormatter. - -SDFormatter aligns flash erase boundaries with file -system structures which reduces write latency and file system overhead. - -The PC/Mac SDFormatter does not have an option for FAT type so it may format -very small cards as FAT12. Use the SdFat formatter to force FAT16 -formatting of small cards. - -Do not format the SD card with an OS utility, OS utilities do not format SD -cards in conformance with the SD standard. - -You should use a freshly formatted SD card for best performance. FAT -file systems become slower if many files have been created and deleted. -This is because the directory entry for a deleted file is marked as deleted, -but is not deleted. When a new file is created, these entries must be scanned -before creating the file. Also files can become -fragmented which causes reads and writes to be slower. - -\section ExampleFilder Examples - -A number of examples are provided in the SdFat/examples folder. -See the html documentation for a list. - -To access these examples from the Arduino development environment -go to: %File -> Examples -> %SdFat -> \ - -Compile, upload to your Arduino and click on Serial Monitor to run -the example. - -Here is a list: - -AnalogBinLogger - Fast AVR ADC logger - see the AnalogBinLoggerExtras folder. - -bench - A read/write benchmark. - -dataLogger - A simple modifiable data logger. - -DirectoryFunctions - Demo of chdir(), ls(), mkdir(), and rmdir(). - -fgets - Demo of the fgets read line/string function. - -formating - Print a table with various formatting options. - -getline - Example of getline from section 27.7.1.3 of the C++ standard. - -LongFileName - Example use of openNext, printName, and open by index. - -LowLatencyLogger - A data logger for higher data rates. ADC version. - -LowLatencyLoggerADXL345 - A data logger for higher data rates. ADXL345 SPI. - -LowLatencyLoggerMPU6050 - A data logger for higher data rates. MPU6050 I2C. - -OpenNext - Open all files in the root dir and print their filename. - -PrintBenchmark - A simple benchmark for printing to a text file. - -QuickStart - A program to quickly test your SD card and SD shield/module. - -RawWrite - A test of raw write functions for contiguous files. - -ReadCsv - Function to read a CSV text file one field at a time. - -ReadCsvStream - Read a comma-separated value file using iostream extractors. - -ReadCsvArray - Read a two dimensional array from a CSV file. - -ReadWrite - Compatibility test of Arduino SD ReadWrite example. - -rename - A demo of SdFat::rename(old, new) and SdFile::rename(dirFile, newPath). - -SdFormatter - This program will format an SD or SDHC card. - -SoftwareSpi - Simple demonstration of the SdFatSoftSpi template class. - -SdInfo - Initialize an SD card and analyze its structure for trouble shooting. - -StdioBench - Demo and test of stdio style stream. - -Timestamp - Sets file create, modify, and access timestamps. - -TwoCards - Example using two SD cards. - -VolumeFreeSpace - Demonstrate the freeClusterCount() call. - -wipe - Example to wipe all data from an already formatted SD. - */ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFat.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFat.html deleted file mode 100644 index a01f20bc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFat.html +++ /dev/null @@ -1,10 +0,0 @@ - - -A web page that points a browser to a different page - - - - -Your browser didn't automatically redirect. Open html/index.html manually. - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/SdFatTestSuite.cpp b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/SdFatTestSuite.cpp deleted file mode 100644 index ba04b8d4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/SdFatTestSuite.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Copyright (c) 20011-2017 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -static uint16_t failCount; -static uint16_t testCount; -static Print* testOut = &Serial; -//------------------------------------------------------------------------------ -static size_t strlenPGM(PGM_P str) { - PGM_P end = str; - while (pgm_read_byte(end++)) {} - return end - str; -} -//------------------------------------------------------------------------------ -void testBegin() { - Serial.begin(9600); - while (!Serial) {} // wait for leonardo - testOut = &Serial; - Serial.println(F("Type any character to begin.")); - while (Serial.read() <= 0) {} - delay(200); // Catch Due reset problem - - testOut->print(F("FreeStack: ")); - testOut->println(FreeStack()); - testOut->println(); - failCount = 0; - testCount = 0; -} -//------------------------------------------------------------------------------ -void testEnd() { - testOut->println(); - testOut->println(F("Compiled: " __DATE__ " " __TIME__)); - testOut->print(F("FreeStack: ")); - testOut->println(FreeStack()); - testOut->print(F("Test count: ")); - testOut->println(testCount); - testOut->print(F("Fail count: ")); - testOut->println(failCount); -} -//------------------------------------------------------------------------------ -static void testResult(bool b, uint8_t n) { - while (n++ < 60) testOut->write(' '); - if (b) { - testOut->println(F("..ok")); - } else { - testOut->println(F("FAIL")); - failCount++; - } - testCount++; -} -//------------------------------------------------------------------------------ -void testVerify_P(char* result, PGM_P expect) { - testOut->write('"'); - testOut->print(result); - testOut->print("\",\""); - testOut->print((const __FlashStringHelper*)expect); - testOut->write('"'); - uint8_t n = strlen(result) + strlenPGM(expect) + 5; - testResult(!strcmp_P(result, expect), n); -} -//------------------------------------------------------------------------------ -void testVerify_P(bool b, PGM_P msg) { - testOut->print((const __FlashStringHelper*)msg); - uint8_t n = strlenPGM(msg); - testResult(b, n); -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/SdFatTestSuite.h b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/SdFatTestSuite.h deleted file mode 100644 index f0fbd853..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/SdFatTestSuite.h +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (c) 20011-2017 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdFatTestSuite_h -#define SdFatTestSuite_h -#include "SdFat.h" -#include "FreeStack.h" - -#if defined(__arm__) && !defined(strcmp_P) -#define strcmp_P(a, b) strcmp((a), (b)) -#endif // strcmp_P - -#if defined(__arm__) && !defined(strncpy_P) -#define strncpy_P(s, t, n) strncpy(s, t, n) -#endif // strncpy_P - -#if defined(__arm__) && !defined(strlen_P) -#define strlen_P(str) strlen(str) -#endif // strlen_P - -#define testVerifyBool(result) testVerify_P(result, PSTR(#result)) -#define testVerifyMsg(result, msg) testVerify_P(result, PSTR(msg)) -#define testVerifyStr(result, expect) testVerify_P(result, PSTR(expect)) - -void testBegin(); -void testEnd(); -void testVerify_P(bool b, PGM_P msg); -void testVerify_P(char* result, PGM_P expect); -#endif // SdFatTestSuite_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_File/ATS_SD_File.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_File/ATS_SD_File.ino deleted file mode 100644 index 822534f9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_File/ATS_SD_File.ino +++ /dev/null @@ -1,105 +0,0 @@ -// modified from ArduinoTestSuite 0022 by William Greiman -// Tests writing to and reading from a file, in particular the -// the Stream implementation (e.g. read() and peek()). - -#include -#include -#include -SdFat SD; -#define ATS_PrintTestStatus(msg, b) testVerify_P(b, PSTR(msg)) -void setup() { - boolean b; - SdFile f; - uint32_t fs; - - testBegin(); - - ATS_PrintTestStatus("SD.begin()", b = SD.begin()); - if (!b) goto done; - - SD.remove("test.txt"); - - f.open("test.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - f.print("abc"); - f.print("de"); - f.close(); - - f.open("test.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - f.print("fgh"); - f.close(); - - f.open("test.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - fs =f.fileSize(); - ATS_PrintTestStatus("read()", f.read() == 'a'); - ATS_PrintTestStatus("peek()", f.peek() == 'b'); - ATS_PrintTestStatus("read()", f.read() == 'b'); - ATS_PrintTestStatus("read()", f.read() == 'c'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("peek()", f.peek() == 'd'); - ATS_PrintTestStatus("read()", f.read() == 'd'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("read()", f.read() == 'e'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("peek()", f.peek() == 'f'); - ATS_PrintTestStatus("read()", f.read() == 'f'); - ATS_PrintTestStatus("peek()", f.peek() == 'g'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("peek()", f.peek() == 'g'); - ATS_PrintTestStatus("read()", f.read() == 'g'); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("available()", f.curPosition() != fs); - ATS_PrintTestStatus("peek()", f.peek() == 'h'); - ATS_PrintTestStatus("read()", f.read() == 'h'); - ATS_PrintTestStatus("available()", f.curPosition() == fs); - ATS_PrintTestStatus("peek()", f.peek() == -1); - ATS_PrintTestStatus("read()", f.read() == -1); - ATS_PrintTestStatus("peek()", f.peek() == -1); - ATS_PrintTestStatus("read()", f.read() == -1); - - f.close(); - - SD.remove("test2.txt"); - - f.open("test2.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - f.print("ABC"); - f.close(); - - f.open("test.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("peek()", f.peek() == 'a'); - - f.close(); - - f.open("test2.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("peek()", f.peek() == 'A'); - ATS_PrintTestStatus("read()", f.read() == 'A'); - - f.close(); - -done: - testEnd(); - -} - -void loop() {} - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_Files/ATS_SD_Files.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_Files/ATS_SD_Files.ino deleted file mode 100644 index 6bb2c818..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_Files/ATS_SD_Files.ino +++ /dev/null @@ -1,75 +0,0 @@ -// modified from ArduinoTestSuite 0022 by William Greiman -#include -#include -#include -SdFat SD; -#define ATS_PrintTestStatus(msg, b) testVerify_P(b, PSTR(msg)) - -void setup() { - boolean b; - SdFile f; - - testBegin(); - - ATS_PrintTestStatus("SD.begin()", b = SD.begin()); - if (!b) goto done; - - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt")); - ATS_PrintTestStatus("SD.open()", f.open("asdf.txt", FILE_WRITE)); f.close(); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf.txt")); - ATS_PrintTestStatus("SD.exists()", SD.exists("/asdf.txt")); - ATS_PrintTestStatus("SD.remove()", SD.remove("asdf.txt")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt")); - - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - ATS_PrintTestStatus("SD.mkdir()", SD.mkdir("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("/asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf/")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("asdf")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - - ATS_PrintTestStatus("SD.mkdir()", SD.mkdir("x/y/z")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y/z")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y/z/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("/x/y/z/")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("x/y/z")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x/y")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y/z")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("x/y/")); - ATS_PrintTestStatus("SD.exists()", SD.exists("x")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y/z")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("/x")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y/z")); - - ATS_PrintTestStatus("!SD.open()", !(f.open("asdf/asdf.txt", FILE_WRITE))); f.close(); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("SD.mkdir()", SD.mkdir("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.open()", f.open("asdf/asdf.txt", FILE_WRITE)); f.close(); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("!SD.rmdir()", !SD.rmdir("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("SD.remove()", SD.remove("asdf/asdf.txt")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf/asdf.txt")); - ATS_PrintTestStatus("SD.exists()", SD.exists("asdf")); - ATS_PrintTestStatus("SD.rmdir()", SD.rmdir("asdf")); - ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf")); - -done: - - testEnd(); - -} -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_Seek/ATS_SD_Seek.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_Seek/ATS_SD_Seek.ino deleted file mode 100644 index 81e1d73d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/ATS_SD_Seek/ATS_SD_Seek.ino +++ /dev/null @@ -1,108 +0,0 @@ -// modified from ArduinoTestSuite 0022 by William Greiman -// Tests writing to and reading from a file, in particular the -// the Stream implementation (e.g. read() and peek()). -#include -#include -#include -SdFat SD; -#define ATS_PrintTestStatus(msg, b) testVerify_P(b, PSTR(msg)) - -void setup() { - boolean b; - SdFile f; - - testBegin(); - - ATS_PrintTestStatus("SD.begin()", b = SD.begin()); - if (!b) goto done; - - SD.remove("test.txt"); - - f.open("test.txt", FILE_WRITE); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("initial position", f.curPosition() == 0); - ATS_PrintTestStatus("initial size", f.fileSize() == 0); - - f.print("0123456789"); - - ATS_PrintTestStatus("position after writing", f.curPosition() == 10); - ATS_PrintTestStatus("size after writing", f.fileSize() == 10); - - f.seekSet(0); - - ATS_PrintTestStatus("size after seek", f.fileSize() == 10); - ATS_PrintTestStatus("position after seek", f.curPosition() == 0); - - f.seekSet(7); - - ATS_PrintTestStatus("position after seek", f.curPosition() == 7); - ATS_PrintTestStatus("reading after seek", f.read() == '7'); - ATS_PrintTestStatus("position after reading after seeking", f.curPosition() == 8); - ATS_PrintTestStatus("reading after reading after seeking", f.read() == '8'); - - f.seekSet(3); - - ATS_PrintTestStatus("position after seeking", f.curPosition() == 3); - ATS_PrintTestStatus("peeking after seeking", f.peek() == '3'); - ATS_PrintTestStatus("position after peeking after seeking", f.curPosition() == 3); - ATS_PrintTestStatus("peeking after peeking after seeking", f.peek() == '3'); - ATS_PrintTestStatus("position after peeking after seeking", f.curPosition() == 3); - ATS_PrintTestStatus("peeking after peeking after seeking", f.read() == '3'); - ATS_PrintTestStatus("position after peeking after seeking", f.curPosition() == 4); - - f.seekSet(1); - - ATS_PrintTestStatus("position after seeking", f.curPosition() == 1); - ATS_PrintTestStatus("peeking after seeking", f.peek() == '1'); - - f.seekSet(4); - - ATS_PrintTestStatus("position after seeking", f.curPosition() == 4); - ATS_PrintTestStatus("peeking after seeking", f.peek() == '4'); - - f.seekSet(7); - - ATS_PrintTestStatus("position()", f.curPosition() == 7); - ATS_PrintTestStatus("read()", f.read() == '7'); - - f.seekSet(0); - f.peek(); - f.print("AB"); - - ATS_PrintTestStatus("position()", f.curPosition() == 2); - ATS_PrintTestStatus("size()", f.fileSize() == 10); - ATS_PrintTestStatus("read()", f.read() == '2'); - - f.seekSet(0); - - ATS_PrintTestStatus("read()", f.read() == 'A'); - ATS_PrintTestStatus("read()", f.read() == 'B'); - ATS_PrintTestStatus("read()", f.read() == '2'); - - f.close(); - - f.open("test.txt", O_READ); - ATS_PrintTestStatus("SD.open()", f.isOpen()); - if (!f.isOpen()) goto done; - - ATS_PrintTestStatus("position()", f.curPosition() == 0); - ATS_PrintTestStatus("size()", f.fileSize() == 10); - ATS_PrintTestStatus("peek()", f.peek() == 'A'); - ATS_PrintTestStatus("read()", f.read() == 'A'); - - f.seekSet(4); - - ATS_PrintTestStatus("position()", f.curPosition() == 4); - ATS_PrintTestStatus("size()", f.fileSize() == 10); - ATS_PrintTestStatus("peek()", f.peek() == '4'); - ATS_PrintTestStatus("read()", f.read() == '4'); - - f.close(); - -done: - testEnd(); -} - -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/StressTest/StressTest.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/StressTest/StressTest.ino deleted file mode 100644 index 11fb8040..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/StressTest/StressTest.ino +++ /dev/null @@ -1,76 +0,0 @@ -// This stress test will create and write files until the SD is full. -#include -#include - -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; - -// Set write buffer size. -#ifdef __arm__ -#ifndef CORE_TEENSY -// Due -const size_t BUF_SIZE = 32768; -#else // CORE_TEENSY -// Teensy 3.0 -const size_t BUF_SIZE = 8192; -#endif // CORE_TEENSY -#elif defined(RAMEND) && RAMEND > 5000 -// AVR with more than 4 KB RAM -const size_t BUF_SIZE = 4096; -#else // __arm__ -// other -const size_t BUF_SIZE = 512; -#endif // __arm__ - -const size_t FILE_SIZE_KB = 10240; -const uint16_t BUFS_PER_FILE = (1024L*FILE_SIZE_KB/BUF_SIZE); - -SdFat sd; - -SdFile file; - -uint8_t buf[BUF_SIZE]; -char name[13]; -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - Serial.print("BUF_SIZE "); - Serial.println(BUF_SIZE); - Serial.println("Type any character to start"); - while (Serial.read() < 0) {} - - if (!sd.begin(SD_CS_PIN))sd.errorHalt("sd.begin"); - - // Fill buf with known value. - for (size_t i = 0; i < BUF_SIZE; i++) buf[i] = i; - - // Wait to begin. - do {delay(10);} while (Serial.read() >= 0); - Serial.println("Type any character to stop after next file"); -} -//------------------------------------------------------------------------------ -void loop() { - // Free KB on SD. - uint32_t freeKB = sd.vol()->freeClusterCount()*sd.vol()->blocksPerCluster()/2; - - Serial.print("Free KB: "); - Serial.println(freeKB); - if (freeKB < 2*FILE_SIZE_KB) { - Serial.println(" Done!"); - while(1); - } - sprintf(name, "%lu.DAT", freeKB); - if (!file.open(name, O_WRITE | O_CREAT | O_TRUNC)) { - sd.errorHalt("Open error!"); - } - for (uint16_t i = 0; i < BUFS_PER_FILE; i++) { - if (file.write(buf, BUF_SIZE) != BUF_SIZE) { - sd.errorHalt("Write error!"); - } - } - file.close(); - if (Serial.available()) { - Serial.println("Stopped!"); - while(1); - } -} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/TestMkdir/TestMkdir.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/TestMkdir/TestMkdir.ino deleted file mode 100644 index 458de9f8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/TestMkdir/TestMkdir.ino +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This sketch is a test of subdirectory and file creation. - * It also tests allocation of clusters to directories. - * - * It will create two subdirectories and create enough files - * to force the allocation of a cluster to each directory. - * - * More than 3000 files may be created on a FAT32 volume. - * - * Note: Some cards may 'stutter' others just get slow due - * to the number of flash erases this program causes. - */ -#include -#include -#include - -const uint8_t SD_CHIP_SELECT = SS; - -SdFat sd; - -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) - -/* - * create enough files to force a cluster to be allocated to dir. - */ -void dirAllocTest(FatFile* dir) { - char buf[32], name[32]; - SdFile file; - uint16_t n; - uint32_t size = dir->dirSize(); - - // create files and write name to file - for (n = 0; ; n++){ - // make file name - sprintf(name, "%u.TXT", n); - - // open start time - uint32_t t0 = millis(); - if (!file.open(dir, name, O_WRITE | O_CREAT | O_EXCL)) { - error("open for write failed"); - } - - // open end time and write start time - uint32_t t1 = millis(); - // write file name to file - file.print(name); - if (!file.close()) error("close write"); - - // write end time - uint32_t t2 = millis(); - Serial.print(F("WR ")); - Serial.print(n); - Serial.write(' '); - - // print time to create file - Serial.print(t1 - t0); - Serial.write(' '); - - // print time to write file - Serial.println(t2 - t1); - - // directory size will change when a cluster is added - if (dir->curPosition() > size) break; - } - - // read files and check content - for (uint16_t i = 0; i <= n; i++) { - sprintf(name, "%u.TXT", i); - - // open start time - uint32_t t0 = millis(); - if (!file.open(dir, name, O_READ)) { - error("open for read failed"); - } - - // open end time and read start time - uint32_t t1 = millis(); - int16_t nr = file.read(buf, sizeof(buf)); - if (nr < 5) error("file.read failed"); - - // read end time - uint32_t t2 = millis(); - - // check file content - if (strlen(name) != (size_t)nr || strncmp(name, buf, nr)) { - error("content compare failed"); - } - if (!file.close()) error("close read failed"); - - Serial.print(F("RD ")); - Serial.print(i); - Serial.write(' '); - - // print open time - Serial.print(t1 - t0); - Serial.write(' '); - - // print read time - Serial.println(t2 - t1); - } -} - -void setup() { - Serial.begin(9600); - while (!Serial) {} // wait for Leonardo - Serial.println(F("Type any character to start")); - while (Serial.read() <= 0) {} - delay(200); // Catch Due reset problem - - // initialize the SD card at SPI_FULL_SPEED for best performance. - // try SPI_HALF_SPEED if bus errors occur. - if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) sd.initErrorHalt(); - - uint32_t m = millis(); - // write files to root if FAT32 - if (sd.vol()->fatType() == 32) { - Serial.println(F("Writing files to root")); - dirAllocTest(sd.vwd()); - } - - // create sub1 and write files - SdFile sub1; - if (!sub1.mkdir(sd.vwd(), "SUB1")) error("makdeDir SUB1 failed"); - Serial.println(F("Writing files to SUB1")); - dirAllocTest(&sub1); - - // create sub2 and write files - SdFile sub2; - if (!sub2.mkdir(&sub1, "SUB2")) error("mkdir SUB2 failed"); - Serial.println(F("Writing files to SUB2")); - dirAllocTest(&sub2); - m = millis() - m; - Serial.print(F("Done millis: ")); - Serial.println(m); -} - -void loop() { } \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/TestRmdir/TestRmdir.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/TestRmdir/TestRmdir.ino deleted file mode 100644 index 013e921a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/TestRmdir/TestRmdir.ino +++ /dev/null @@ -1,98 +0,0 @@ -/* - * This sketch will remove the files and directories - * created by the SdFatMakeDir.pde sketch. - * - * Performance is erratic due to the large number - * of flash erase operations caused by many random - * writes to file structures. - */ -#include -#include -#include - -const uint8_t SD_CHIP_SELECT = SS; - -SdFat sd; - -// store error strings in flash to save RAM -#define error(s) sd.errorHalt(F(s)) - -/* - * remove all files in dir. - */ -void deleteFiles(FatFile* dir) { - char name[32]; - SdFile file; - - // open and delete files - for (uint16_t n = 0; ; n++){ - sprintf(name, "%u.TXT", n); - - // open start time - uint32_t t0 = millis(); - - // assume done if open fails - if (!file.open(dir, name, O_WRITE)) return; - - // open end time and remove start time - uint32_t t1 = millis(); - if (!file.remove()) error("file.remove failed"); - - // remove end time - uint32_t t2 = millis(); - - Serial.print(F("RM ")); - Serial.print(n); - Serial.write(' '); - - // open time - Serial.print(t1 - t0); - Serial.write(' '); - - // remove time - Serial.println(t2 - t1); - } -} - -void setup() { - Serial.begin(9600); - while (!Serial) {} // wait for Leonardo - Serial.println(F("Type any character to start")); - while (Serial.read() <= 0) {} - delay(200); // Catch Due reset problem - - // initialize the SD card at SPI_FULL_SPEED for best performance. - // try SPI_HALF_SPEED if bus errors occur. - if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) sd.initErrorHalt(); - - - // delete files in root if FAT32 - if (sd.vol()->fatType() == 32) { - Serial.println(F("Remove files in root")); - deleteFiles(sd.vwd()); - } - - // open SUB1 and delete files - SdFile sub1; - if (!sub1.open("SUB1", O_READ)) error("open SUB1 failed"); - Serial.println(F("Remove files in SUB1")); - deleteFiles(&sub1); - - // open SUB2 and delete files - SdFile sub2; - if (!sub2.open(&sub1, "SUB2", O_READ)) error("open SUB2 failed"); - Serial.println(F("Remove files in SUB2")); - deleteFiles(&sub2); - - // remove SUB2 - if (!sub2.rmdir()) error("sub2.rmdir failed"); - Serial.println(F("SUB2 removed")); - - // remove SUB1 - if (!sub1.rmdir()) error("sub1.rmdir failed"); - Serial.println(F("SUB1 removed")); - - Serial.println(F("Done")); -} - -void loop() { } diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/fstreamTest/fstreamTest.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/fstreamTest/fstreamTest.ino deleted file mode 100644 index 83f2ce50..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/fstreamTest/fstreamTest.ino +++ /dev/null @@ -1,94 +0,0 @@ -#include -#include -#include -SdFat sd; -const char *testName = "SDFAT.TST"; -//------------------------------------------------------------------------------ -void fstreamOpen() { - ios::openmode nocreate[] = {ios::in, ios::in | ios::out}; - ios::openmode create[] = - {ios::out, ios::out | ios::app, ios::app, ios::out | ios::trunc, - ios::in | ios::out | ios::trunc, ios::in | ios::out | ios::app, - ios::in | ios::app}; - ios::openmode illegal[] = - {0, ios::trunc, ios::app | ios::trunc, ios::in | ios::app | ios::trunc, - ios::in | ios::trunc, ios::out | ios::app | ios::trunc, - ios::in | ios::out | ios::app | ios::trunc}; - - sd.remove(testName); - fstream file(testName); - testVerifyMsg(!file.is_open()&& !sd.exists(testName), "fstream constructor"); - - for (uint8_t i = 0 ; i < sizeof(nocreate)/sizeof(nocreate[1]); i++) { - file.close(); - sd.remove(testName); - file.open(testName, nocreate[i]); - testVerifyMsg(!sd.exists(testName) && !file.is_open(), "fstream nocreate !exists"); - } - for (uint8_t i = 0 ; i < sizeof(create)/sizeof(create[1]); i++) { - file.close(); - sd.remove(testName); - file.open(testName, create[i]); - testVerifyMsg(sd.exists(testName) && file.is_open(), "fstream create openmode"); - } - for (uint8_t i = 0 ; i < sizeof(illegal)/sizeof(illegal[1]); i++) { - file.close(); - file.open(testName, illegal[i]); - testVerifyMsg(sd.exists(testName) && !file.is_open(), "fstream illegal openmode"); - } - for (uint8_t i = 0 ; i < sizeof(nocreate)/sizeof(nocreate[1]); i++) { - file.close(); - file.open(testName, nocreate[i]); - testVerifyMsg(sd.exists(testName) && file.is_open(), "fstream nocreate exists"); - } -} -//------------------------------------------------------------------------------ -void testPosition() { - sd.remove(testName); - ofstream ofs(testName); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs.seekp(0, ios::end); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs << "abcde"; - testVerifyBool(ofs.good() && ofs.tellp() == 5); - ofs.seekp(4); - testVerifyBool(ofs.good() && ofs.tellp() == 4); - ofs.seekp(-1, ios::cur); - testVerifyBool(ofs.good() && ofs.tellp() == 3); - ofs.close(); - ifstream ifs(testName, ios::ate); - testVerifyBool(ifs.good() && ifs.tellg() == 5); - ifs.seekg(0); - testVerifyBool(ifs.get() == 'a' && ifs.get() == 'b'); - testVerifyBool(ifs.tellg() == 2 && ifs.good()); - ifs.seekg(3, ios::cur); - testVerifyBool(ifs.tellg() == 5 && ifs.good()); - ifs.seekg(4, ios::beg); - testVerifyBool(ifs.good() && ifs.tellg() == 4); - ifs.close(); - ofs.open(testName, ios::app); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs << 'f'; - testVerifyBool(ofs.good() && ofs.tellp() == 6); - ofs.close(); - ofs.open(testName, ios::trunc); - ofs.seekp(0, ios::end); - testVerifyBool(ofs.good() && ofs.tellp() == 0); - ofs << "ABCDEF"; - ofs.close(); - fstream fs(testName); - testVerifyBool(fs.good() && fs.tellp() == 0 && fs.tellg() == 0); - fs.seekg(2); - testVerifyBool(fs.good() && fs.get() == 'C'); -} -//------------------------------------------------------------------------------ -void setup() { - - testBegin(); - if (!sd.begin()) sd.initErrorHalt(); - fstreamOpen(); - testPosition(); - testEnd(); -} -//------------------------------------------------------------------------------ -void loop() {} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/istreamTest/istreamTest.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/istreamTest/istreamTest.ino deleted file mode 100644 index 3cf4d6d1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/istreamTest/istreamTest.ino +++ /dev/null @@ -1,261 +0,0 @@ -#include -#include -#include - -char buf[100]; -ibufstream ib; -#define ibInit(s) ibInit_P(PSTR(s)) - -//---------------------------------------------------------- -void ibInit_P(PGM_P p) { - if (strlen_P(p) >= sizeof(buf)) { - ib.init(""); - ib.setstate(ios::badbit); - } else { - ib.clear(); - strncpy_P(buf, p, sizeof(buf)); - ib.init(buf); - } -} -//------------------------------------------------------------------------------ -void istreamBool() { - bool b; - ibInit(" 0 1 2"); - testVerifyBool((ib >> b) && !b); - testVerifyBool((ib >> b) && b); - testVerifyBool(!(ib >> b) && !ib.good()); - - ibInit(" true false err"); - testVerifyBool((ib >> boolalpha >> b) && b && ib.good()); - testVerifyBool((ib >> b) && !b && ib.good()); - testVerifyBool(!(ib >> b) && ib.fail()); - - ibInit("1"); - testVerifyBool((ib >> noboolalpha >> b) && b && ib.eof()); -} -//------------------------------------------------------------------------------ -void istreamChar() { - char c; - signed char sc; - unsigned char uc; - - ibInit("c s u g"); - testVerifyBool((ib >> c) && ib.good() && c == 'c'); - testVerifyBool((ib >> sc) && ib.good() && sc == 's'); - testVerifyBool((ib >> uc) && ib.good() && uc == 'u'); - testVerifyBool(ib.get() == ' '); - testVerifyBool(ib.peek() == 'g' && ib.good()); - testVerifyBool(ib.get() == 'g' && ib.good()); - testVerifyBool(ib.get() == -1 && ib.eof()); -} -//------------------------------------------------------------------------------ -void istreamDouble() { - double f; - ibInit("0 .1 1. 2 3.4 .1e5 1e5 -1E6 +2.3e-3 -123.4567"); - testVerifyBool((ib >> f) && f == 0 && ib.good()); - testVerifyBool((ib >> f) && f == 0.1 && ib.good()); - testVerifyBool((ib >> f) && f == 1.0 && ib.good()); - testVerifyBool((ib >> f) && f == 2.0 && ib.good()); - testVerifyBool((ib >> f) && f == 3.4 && ib.good()); - testVerifyBool((ib >> f) && f == 10000.0 && ib.good()); - testVerifyBool((ib >> f) && f == 1e5 && ib.good()); - testVerifyBool((ib >> f) && f == -1E6 && ib.good()); - testVerifyBool((ib >> f) && f == 2.3e-3 && ib.good()); - testVerifyBool((ib >> f) && fabs(f + 123.4567) < 1e-5 && ib.eof()); - if (fabs(f + 123.4567) >= 1e-5) Serial.println(f, 8); -} -//------------------------------------------------------------------------------ -void istreamFloat() { - float f; - ibInit("0 .1 1. 2 3.4 .1e5 1e5 -1E6 +2.3e-3 -123.4567"); - testVerifyBool((ib >> f) && f == 0 && ib.good()); - testVerifyBool((ib >> f) && f == 0.1f && ib.good()); - testVerifyBool((ib >> f) && f == 1.0 && ib.good()); - testVerifyBool((ib >> f) && f == 2.0 && ib.good()); - testVerifyBool((ib >> f) && f == 3.4f && ib.good()); - testVerifyBool((ib >> f) && f == 10000.0 && ib.good()); - testVerifyBool((ib >> f) && f == 1e5 && ib.good()); - testVerifyBool((ib >> f) && f == -1E6 && ib.good()); - testVerifyBool((ib >> f) && f == 2.3e-3f && ib.good()); - testVerifyBool((ib >> f) && fabs(f + 123.4567f) < 1e-5 && ib.eof()); - if (fabs(f + 123.4567) >= 1e-5) Serial.println(f, 8); -} -//------------------------------------------------------------------------------ -void istreamGet() { - char s[4]; - ibInit("ab c"); - testVerifyBool(ib.get() == 'a' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == 'b' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == ' ' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == 'c' && ib.good() && ib.gcount() == 1); - testVerifyBool(ib.get() == -1 && ib.eof() && ib.gcount() == 0); - - ibInit("ab\ncdef"); - ib.get(s, sizeof(s)); - testVerifyBool(ib.good() && ib.gcount() == 2); - testVerifyStr(s, "ab"); - testVerifyBool(ib.get() == '\n' && ib.good() && ib.gcount() == 1); - ib.get(s, sizeof(s)); - testVerifyBool(ib.good() && ib.gcount() == 3); - testVerifyStr(s, "cde"); - ib.get(s, sizeof(s)); - testVerifyBool(ib.eof() && ib.gcount() == 1); - testVerifyStr(s, "f"); - - ibInit( - "short line\n" - "\n" - "17 character line\n" - "too long for buffer\n" - "line with no nl" - ); - char buf[18]; - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && ib.gcount() == 11); - testVerifyStr(buf, "short line"); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && ib.gcount() == 1 && buf[0] == '\0'); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && ib.gcount() == 18); - testVerifyStr(buf, "17 character line"); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.fail() && !ib.eof() && ib.gcount() == 17); - testVerifyStr(buf, "too long for buff"); - ib.clear(); - ib.getline(buf, sizeof(buf)); - testVerifyBool(ib.good() && !ib.eof() && ib.gcount() == 3); - testVerifyStr(buf, "er"); - ib.getline(buf, sizeof(buf)); - testVerifyBool(!ib.fail() && ib.eof() && ib.gcount() == 15); - testVerifyStr(buf, "line with no nl"); -} -//------------------------------------------------------------------------------ -void istreamNumber() { - short s; - signed short ss; - unsigned short us; - int i; - signed int si; - unsigned int ui; - long l; - signed long sl; - unsigned long ul; - - ibInit("-32769"); - testVerifyBool(!(ib >> s) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> s) && s == -32768 && ib.good()); - testVerifyBool((ib >> s) && s == 0 && ib.good()); - testVerifyBool((ib >> s) && s == 32767 && ib.good()); - testVerifyBool(!(ib >> s) && ib.fail()); - - ibInit("-32769"); - testVerifyBool(!(ib >> ss) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> ss) && ss == -32768 && ib.good()); - testVerifyBool((ib >> ss) && ss == 0 && ib.good()); - testVerifyBool((ib >> ss) && ss == 32767 && ib.good()); - testVerifyBool(!(ib >> ss) && ib.fail()); - - ibInit("0 65535 65536"); - testVerifyBool((ib >> us) && us == 0 && ib.good()); - testVerifyBool((ib >> us) && us == 65535 && ib.good()); - testVerifyBool(!(ib >> us) && ib.fail()); - -if (sizeof(int) == 2) { - ibInit("-32769"); - testVerifyBool(!(ib >> i) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> i) && i == -32768 && ib.good()); - testVerifyBool((ib >> i) && i == 0 && ib.good()); - testVerifyBool((ib >> i) && i == 32767 && ib.good()); - testVerifyBool(!(ib >> i) && ib.fail()); - - ibInit("-32769"); - testVerifyBool(!(ib >> si) && ib.fail()); - ibInit("-32768 0 32767 32768"); - testVerifyBool((ib >> si) && si == -32768 && ib.good()); - testVerifyBool((ib >> si) && si == 0 && ib.good()); - testVerifyBool((ib >> si) && si == 32767 && ib.good()); - testVerifyBool(!(ib >> si) && ib.fail()); - - ibInit("0 65535 65536"); - testVerifyBool((ib >> ui) && ui == 0 && ib.good()); - testVerifyBool((ib >> ui) && ui == 65535 && ib.good()); - testVerifyBool(!(ib >> ui) && ib.fail()); - } else { - ibInit("-2147483649"); - testVerifyBool(!(ib >> i) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> i) && i == -2147483648 && ib.good()); - testVerifyBool((ib >> i) && i == 0 && ib.good()); - testVerifyBool((ib >> i) && i == 2147483647 && ib.good()); - testVerifyBool(!(ib >> i) && ib.fail()); - - ibInit("-2147483649"); - testVerifyBool(!(ib >> si) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> si) && si == -2147483648 && ib.good()); - testVerifyBool((ib >> si) && si == 0 && ib.good()); - testVerifyBool((ib >> si) && si == 2147483647 && ib.good()); - testVerifyBool(!(ib >> si) && ib.fail()); - - ibInit("0 4294967295 4294967296"); - testVerifyBool((ib >> ui) && ui == 0 && ib.good()); - testVerifyBool((ib >> ui) && ui == 4294967295 && ib.good()); - testVerifyBool(!(ib >> ui) && ib.fail()); - } - ibInit("-2147483649"); - testVerifyBool(!(ib >> l) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> l) && l == -2147483648 && ib.good()); - testVerifyBool((ib >> l) && l == 0 && ib.good()); - testVerifyBool((ib >> l) && l == 2147483647 && ib.good()); - testVerifyBool(!(ib >> l) && ib.fail()); - - ibInit("-2147483649"); - testVerifyBool(!(ib >> sl) && ib.fail()); - ibInit("-2147483648 0 2147483647 2147483648"); - testVerifyBool((ib >> sl) && sl == -2147483648 && ib.good()); - testVerifyBool((ib >> sl) && sl == 0 && ib.good()); - testVerifyBool((ib >> sl) && sl == 2147483647 && ib.good()); - testVerifyBool(!(ib >> sl) && ib.fail()); - - ibInit("0 4294967295 4294967296"); - testVerifyBool((ib >> ul) && ul == 0 && ib.good()); - testVerifyBool((ib >> ul) && ul == 4294967295 && ib.good()); - testVerifyBool(!(ib >> ul) && ib.fail()); - - // octal hex - ibInit("123 abc 0xdef 0XABC 567"); - testVerifyBool((ib >> oct >> i) && i == 83); - testVerifyBool((ib >> hex >> i) && i == 0xabc); - testVerifyBool((ib >> i) && i == 0xdef); - testVerifyBool((ib >> i) && i == 0xabc); - testVerifyBool((ib >> dec >> i) && i ==567); -} -//------------------------------------------------------------------------------ -void istreamStr() { - char str[20]; - ibInit("abc def\r\n hij"); - testVerifyBool((ib >> str) && ib.good()); - testVerifyStr(str, "abc"); - testVerifyBool((ib >> str) && ib.good()); - testVerifyStr(str, "def"); - testVerifyBool((ib >> str) && ib.eof()); - testVerifyStr(str, "hij"); -} -//------------------------------------------------------------------------------ -void setup() { - testBegin(); - istreamBool(); - istreamChar(); - istreamDouble(); - istreamFloat(); - istreamGet(); - istreamNumber(); - istreamStr(); - testEnd(); -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnSize/lfnSize.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnSize/lfnSize.ino deleted file mode 100644 index a37e9b21..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnSize/lfnSize.ino +++ /dev/null @@ -1,36 +0,0 @@ -// Program to compare size of SdFat with the SD.h library. -#include -// Select the test library by commenting out one of the following two lines. -// #include -#include - -// SD chip select pin. -const uint8_t SD_CS_PIN = SS; - -#ifdef __SD_H__ -File file; -#else // __SD_H__ -SdFat SD; -SdFile file; -#endif // __SD_H__ - -void setup() { - Serial.begin(9600); - while (!Serial) {} // wait for Leonardo - - if (!SD.begin(SD_CS_PIN)) { - Serial.println("begin failed"); - return; - } - #ifdef __SD_H__ - file = SD.open("SFN_file.txt", FILE_WRITE); - #else // __SD_H__ - file.open("LFN_file.txt", O_RDWR | O_CREAT); - #endif // __SD_H__ - - file.println("Hello"); - file.close(); - Serial.println("Done"); -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnTest/lfnTest.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnTest/lfnTest.ino deleted file mode 100644 index c617929e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnTest/lfnTest.ino +++ /dev/null @@ -1,234 +0,0 @@ -#include -#include -#include -const uint8_t SD_CS_PIN = SS; -SdFat sd; -SdFile file; -char name[260]; - -//------------------------------------------------------------------------------ -const char* testName[] = { - "low.low", - "low.Mix", - "low.UP", - "Mix.low", - "Mix.Mix", - "Mix.UP", - "UP.low", - "UP.Mix", - "UP.UP", - ".dot", - ".dot.dot", - "A b c . txt", - " Leading space and no extension", - "Trailing dots and space . . .", - "Long extension.extension", - "Space after dot. txt", - "Dot.dot.test.txt", - "Dot.dot.test.seq.txt", - "LOW.LOW", - "MIX.MIX", - "Invalid character *.test" -}; -//------------------------------------------------------------------------------ -bool checkName(char first, size_t len) { - size_t i; - if (len < 5 || len > sizeof(name)) { - return false; - } - if ( name[0] != first) { - return false; - } - for (i = 1; i < (len - 4); i++) { - if (name[i] != (char)('0' + (i + 1) %10)) { - return false; - } - } - const char* p = ".txt"; - while (*p) { - if (name[i++] != *p++) { - return false; - } - } - return name[i] == 0; -} -//------------------------------------------------------------------------------ -void makeName(char first, size_t len) { - size_t i; - if (len > sizeof(name)) { - len = 255; - } - if (len < 5) { - len = 5; - } - name[0] = first; - for (i = 1; i < (len - 4); i++) { - name[i] = '0' + (i + 1) %10; - } - const char* p = ".txt"; - while (*p) name[i++] = *p++; - name[i] = 0; -} -//------------------------------------------------------------------------------ -// test open, remove, getName, and ls. -void basicTest() { - size_t i; - size_t n = sd.vol()->fatType() == 32 ? 255 : 99; - uint16_t maxIndex = 0; - - makeName('Z', 256); - if (!file.open(name, O_RDWR | O_CREAT)) { - Serial.println(F("255 limit OK")); - } else { - sd.errorHalt(F("255 limit")); - } - for (i = 5; i <= n; i++) { - makeName('A', i); - - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open A")); - } - file.println(name); - Serial.print(i); - Serial.write(' '); - Serial.print(file.dirIndex()); - Serial.write(' '); - Serial.print(file.fileSize()); - Serial.println(F(" open A")); - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size A")); - } - if (file.dirIndex() >= maxIndex) { - maxIndex = file.dirIndex(); - } else { - Serial.print(maxIndex); Serial.print(',');Serial.println(file.dirIndex()); - sd.errorHalt(F("dirIndex")); - } - file.close(); - if (!file.open(sd.vwd(), maxIndex, O_READ)) { - sd.errorHalt(F("open by index")); - } - memset(name, 0, sizeof(name)); - if (!file.getName(name, sizeof(name))) { - sd.errorHalt(F("getName")); - } - if (!checkName('A', i)) { - Serial.println(name); - sd.errorHalt(F("checkName")); - } - file.close(); - } - for (i = n; i >= 5; i -= 2) { - makeName('A', i); - Serial.print(i); - Serial.println(F( " rm A")); - if (!sd.remove(name)) { - sd.errorHalt(F("remove A")); - } - } - for (i = n; i >= 5; i -= 2) { - makeName('B', i); - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open B")); - } - file.println(name); - Serial.print(i); - Serial.write(' '); - Serial.print(file.dirIndex()); - Serial.write(' '); - Serial.print(file.fileSize()); - Serial.println(F(" open B")); - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size B")); - } - if (file.dirIndex() > maxIndex) { - sd.errorHalt(F("maxIndex")); - } - file.close(); - } - Serial.println(F("----- ls ------")); - sd.ls(); - for (i = 5; i <= n; i++) { - char fc = i & 1 ? 'B' : 'A'; - makeName(fc, i); - Serial.print(i); - Serial.print(F(" rm ")); - Serial.println(fc); - if (!sd.remove(name)) { - sd.errorHalt(F("remove A/B")); - } - } - if (file.openNext(sd.vwd())) { - sd.errorHalt(F("remove all")); - } - Serial.println(); - Serial.println(F("basicTest done")); -} -//------------------------------------------------------------------------------ -void nameTest() { - Serial.println(); - uint8_t n = sizeof(testName)/sizeof(char*); - for (uint8_t i = 0; i < n; i++) { - Serial.print(F("Name: ")); - Serial.write('"'); - Serial.print(testName[i]); - Serial.println('"'); - if(!file.open(testName[i], O_CREAT | O_RDWR)) { - Serial.println(F("Open failed")); - } else { - file.println(testName[i]); - if (!file.getName(name, sizeof(name))) { - sd.errorHalt(F("getFilemame")); - } - file.println(name); - Serial.print(F("LFN: ")); - Serial.write('"'); - Serial.print(name); - Serial.println('"'); - Serial.print(F("SFN: ")); - Serial.write('"'); - file.printSFN(&Serial); - Serial.println('"'); - Serial.print(F("Index: ")); - if (file.dirIndex() < 10) { - Serial.write(' '); - } - Serial.println(file.dirIndex()); - file.close(); - } - Serial.println(); - } - Serial.println(F("----- ls ------")); - sd.ls(); - Serial.println(); - Serial.println(F("nameTest done")); -} -//------------------------------------------------------------------------------ -void setup() { - Serial.begin(9600); - while(!Serial); - Serial.print(F("\r\nFreeRam: ")); - Serial.println(FreeRam()); - Serial.println(F("Type any character to start.")); - while (Serial.read() < 0) {} - if (!sd.begin(SD_CS_PIN)) sd.initErrorHalt(); - if (file.openNext(sd.vwd())) { - file.close(); - delay(100); - while (Serial.read() >= 0) {} - Serial.print(F("Type 'W' to wipe the card: ")); - int c; - while ((c = Serial.read()) < 0) {} - if (c != 'W') { - sd.errorHalt(F("Invalid")); - } - Serial.println((char)c); - if (!sd.wipe(&Serial) || !sd.begin(SD_CS_PIN)) { - sd.errorHalt(F("wipe failed")); - } - } - basicTest(); - nameTest(); -} -//------------------------------------------------------------------------------ -void loop() {} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnTestCout/lfnTestCout.ino b/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnTestCout/lfnTestCout.ino deleted file mode 100644 index 038f025a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/SdFatTestSuite/examples/lfnTestCout/lfnTestCout.ino +++ /dev/null @@ -1,218 +0,0 @@ -#include -#include -#include -const uint8_t SD_CS_PIN = SS; -SdFat sd; -SdFile file; -char name[260]; - -// Serial output stream -ArduinoOutStream cout(Serial); - -// Serial in buffer. -char cinBuf[10]; - -// Serial input stream -ArduinoInStream cin(Serial, cinBuf, sizeof(cinBuf)); -//------------------------------------------------------------------------------ -const char* testName[] = { - "low.low", - "low.Mix", - "low.UP", - "Mix.low", - "Mix.Mix", - "Mix.UP", - "UP.low", - "UP.Mix", - "UP.UP", - ".dot", - ".dot.dot", - "A b c . txt", - " Leading space and no extension", - "Trailing dots and space . . .", - "Long extension.extension", - "Space after dot. txt", - "Dot.dot.test.txt", - "Dot.dot.test.seq.txt", - "LOW.LOW", - "MIX.MIX", - "Invalid character *.test" -}; -//------------------------------------------------------------------------------ -bool checkName(char first, size_t len) { - size_t i; - if (len < 5 || len > sizeof(name)) { - return false; - } - if ( name[0] != first) { - return false; - } - for (i = 1; i < (len - 4); i++) { - if (name[i] != (char)('0' + (i + 1) %10)) { - return false; - } - } - const char* p = ".txt"; - while (*p) { - if (name[i++] != *p++) { - return false; - } - } - return name[i] == 0; -} -//------------------------------------------------------------------------------ -void makeName(char first, size_t len) { - size_t i; - if (len > sizeof(name)) { - len = 255; - } - if (len < 5) { - len = 5; - } - name[0] = first; - for (i = 1; i < (len - 4); i++) { - name[i] = '0' + (i + 1) %10; - } - const char* p = ".txt"; - while (*p) name[i++] = *p++; - name[i] = 0; -} -//------------------------------------------------------------------------------ -// test open, remove, getName, and ls. -void basicTest() { - size_t i; - size_t n = sd.vol()->fatType() == 32 ? 255 : 99; - uint16_t maxIndex = 0; - - makeName('Z', 256); - if (!file.open(name, O_RDWR | O_CREAT)) { - cout << F("255 limit OK") << endl; - } else { - sd.errorHalt(F("255 limit")); - } - for (i = 5; i <= n; i++) { - makeName('A', i); - - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open A")); - } - file.println(name); - cout << setw(3) << i << setw(5) << file.dirIndex() << F(" open A") << endl; - - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size A")); - } - if (file.dirIndex() >= maxIndex) { - maxIndex = file.dirIndex(); - } else { - sd.errorHalt(F("dirIndex")); - } - file.close(); - if (!file.open(sd.vwd(), maxIndex, O_READ)) { - sd.errorHalt(F("open by index")); - } - memset(name, 0, sizeof(name)); - if (!file.getName(name, sizeof(name))) { - sd.errorHalt(F("getName")); - } - if (!checkName('A', i)) { - cout << name << endl; - sd.errorHalt(F("checkName")); - } - file.close(); - } - for (i = n; i >= 5; i -= 2) { - makeName('A', i); - cout << setw(3) << i << F( " rm A") << endl; - if (!sd.remove(name)) { - sd.errorHalt(F("remove A")); - } - } - for (i = n; i >= 5; i -= 2) { - makeName('B', i); - if (!file.open(name, O_RDWR | O_CREAT)) { - sd.errorHalt(F("open B")); - } - file.println(name); - - cout << setw(3) << i << setw(5) << file.dirIndex() << F(" open B") << endl; - - if (file.fileSize() != (i + 2)) { - sd.errorHalt(F("file size B")); - } - if (file.dirIndex() > maxIndex) { - sd.errorHalt(F("maxIndex")); - } - file.close(); - } - cout << endl << F("----- ls ------") << endl; - sd.ls(); - for (i = 5; i <= n; i++) { - char fc = i & 1 ? 'B' : 'A'; - makeName(fc, i); - cout << setw(3) << i << F(" rm ") << fc << endl; - if (!sd.remove(name)) { - sd.errorHalt(F("remove A/B")); - } - } - if (file.openNext(sd.vwd())) { - sd.errorHalt(F("remove all")); - } - cout << endl << F("basicTest done") << endl; -} -//------------------------------------------------------------------------------ -void nameTest() { - cout << endl; - uint8_t n = sizeof(testName)/sizeof(char*); - for (uint8_t i = 0; i < n; i++) { - cout << F("Name: \"") << testName[i] << '"' << endl; - if(!file.open(testName[i], O_CREAT | O_RDWR)) { - cout < -#include -#include -//------------------------------------------------------------------------------ -void ostreamBool() { - char buf[40]; - obufstream ob(buf, sizeof(buf)); - bool f = false; - bool t = true; - ob << t << ',' << f << ',' << setw(2) << t << ',' << left << setw(2) << f; - testVerifyStr(buf, "1,0, 1,0 "); - - ob.init(buf, sizeof(buf)); - ob << boolalpha << t << ',' << f << ',' << setw(5) << t; - ob << ',' << right << setw(6) << f; - testVerifyStr(buf, "true,false,true , false"); -} -//------------------------------------------------------------------------------ -void ostreamChar() { - char buf[40]; - obufstream ob(buf, sizeof(buf)); - char c = 'c'; - signed char sc = 's'; - unsigned char uc = 'u'; - ob <<'l' << c << sc << uc; - ob.put('p'); - testVerifyStr(buf, "lcsup"); - - ob.init(buf, sizeof(buf)); - ob << 's' << setw(2) << 'r' << 'n' << left << setw(2) << 'l'; - ob << 'm' << right << setw(2) << 'e'; - testVerifyStr(buf, "s rnl m e"); - - ob.init(buf, sizeof(buf)); - ob << setfill('f') << setw(5) << 'r'; - testVerifyStr(buf, "ffffr"); -} -//------------------------------------------------------------------------------ -void ostreamFloat() { - char buf[50]; - obufstream ob(buf, sizeof(buf)); - float f = 9.87654; - double d = -123.4567; - ob << f <<','; - ob << internal << setw(10) << d << ','; - ob << setfill('0') << setw(10) << d; - testVerifyStr(buf, "9.88,- 123.46,-000123.46"); - - ob.init(buf, sizeof(buf)); - ob << setw(10) << left << d << ',' << showpos << -d << ','; - ob << setprecision(0) << d; - testVerifyStr(buf, "-123.46000,+123.46,-123"); - - ob.init(buf, sizeof(buf)); - ob << showpoint << d << noshowpoint << ',' << d << ','; - ob << setprecision(4) << f << ',' << setprecision(2) << noshowpos << f; - testVerifyStr(buf, "-123.,-123,+9.8765,9.88"); -} -//------------------------------------------------------------------------------ -void ostreamNumber() { - char buf[50]; - obufstream ob(buf, sizeof(buf)); - - short s = 1; - short signed ss = 2; - short unsigned su = 3; - int i = 4; - int signed is = 5; - int unsigned iu = 6; - long l = 7; - long signed ls = 8; - long unsigned lu = 9; - - - ob << s << ss << su << i << is << iu << l < [file] ... - - The style guidelines this tries to follow are those in - https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml - - Every problem is given a confidence score from 1-5, with 5 meaning we are - certain of the problem, and 1 meaning it could be a legitimate construct. - This will miss some errors, and is not a substitute for a code review. - - To suppress false-positive errors of a certain category, add a - 'NOLINT(category)' comment to the line. NOLINT or NOLINT(*) - suppresses errors of all categories on that line. - - The files passed in will be linted; at least one file must be provided. - Default linted extensions are .cc, .cpp, .cu, .cuh and .h. Change the - extensions with the --extensions flag. - - Flags: - - output=vs7 - By default, the output is formatted to ease emacs parsing. Visual Studio - compatible output (vs7) may also be used. Other formats are unsupported. - - verbose=# - Specify a number 0-5 to restrict errors to certain verbosity levels. - - filter=-x,+y,... - Specify a comma-separated list of category-filters to apply: only - error messages whose category names pass the filters will be printed. - (Category names are printed with the message and look like - "[whitespace/indent]".) Filters are evaluated left to right. - "-FOO" and "FOO" means "do not print categories that start with FOO". - "+FOO" means "do print categories that start with FOO". - - Examples: --filter=-whitespace,+whitespace/braces - --filter=whitespace,runtime/printf,+runtime/printf_format - --filter=-,+build/include_what_you_use - - To see a list of all the categories used in cpplint, pass no arg: - --filter= - - counting=total|toplevel|detailed - The total number of errors found is always printed. If - 'toplevel' is provided, then the count of errors in each of - the top-level categories like 'build' and 'whitespace' will - also be printed. If 'detailed' is provided, then a count - is provided for each category like 'build/class'. - - root=subdir - The root directory used for deriving header guard CPP variable. - By default, the header guard CPP variable is calculated as the relative - path to the directory that contains .git, .hg, or .svn. When this flag - is specified, the relative path is calculated from the specified - directory. If the specified directory does not exist, this flag is - ignored. - - Examples: - Assuming that src/.git exists, the header guard CPP variables for - src/chrome/browser/ui/browser.h are: - - No flag => CHROME_BROWSER_UI_BROWSER_H_ - --root=chrome => BROWSER_UI_BROWSER_H_ - --root=chrome/browser => UI_BROWSER_H_ - - linelength=digits - This is the allowed line length for the project. The default value is - 80 characters. - - Examples: - --linelength=120 - - extensions=extension,extension,... - The allowed file extensions that cpplint will check - - Examples: - --extensions=hpp,cpp - - headers=x,y,... - The header extensions that cpplint will treat as .h in checks. Values are - automatically added to --extensions list. - - Examples: - --headers=hpp,hxx - --headers=hpp - - cpplint.py supports per-directory configurations specified in CPPLINT.cfg - files. CPPLINT.cfg file can contain a number of key=value pairs. - Currently the following options are supported: - - set noparent - filter=+filter1,-filter2,... - exclude_files=regex - linelength=80 - root=subdir - headers=x,y,... - - "set noparent" option prevents cpplint from traversing directory tree - upwards looking for more .cfg files in parent directories. This option - is usually placed in the top-level project directory. - - The "filter" option is similar in function to --filter flag. It specifies - message filters in addition to the |_DEFAULT_FILTERS| and those specified - through --filter command-line flag. - - "exclude_files" allows to specify a regular expression to be matched against - a file name. If the expression matches, the file is skipped and not run - through liner. - - "linelength" allows to specify the allowed line length for the project. - - The "root" option is similar in function to the --root flag (see example - above). - - The "headers" option is similar in function to the --headers flag - (see example above). - - CPPLINT.cfg has an effect on files in the same directory and all - sub-directories, unless overridden by a nested configuration file. - - Example file: - filter=-build/include_order,+build/include_alpha - exclude_files=.*\.cc - - The above example disables build/include_order warning and enables - build/include_alpha as well as excludes all .cc from being - processed by linter, in the current directory (where the .cfg - file is located) and all sub-directories. -""" - -# We categorize each error message we print. Here are the categories. -# We want an explicit list so we can list them all in cpplint --filter=. -# If you add a new error message with a new category, add it to the list -# here! cpplint_unittest.py should tell you if you forget to do this. -_ERROR_CATEGORIES = [ - 'build/class', - 'build/c++11', - 'build/c++14', - 'build/c++tr1', - 'build/deprecated', - 'build/endif_comment', - 'build/explicit_make_pair', - 'build/forward_decl', - 'build/header_guard', - 'build/include', - 'build/include_alpha', - 'build/include_order', - 'build/include_what_you_use', - 'build/namespaces', - 'build/printf_format', - 'build/storage_class', - 'legal/copyright', - 'readability/alt_tokens', - 'readability/braces', - 'readability/casting', - 'readability/check', - 'readability/constructors', - 'readability/fn_size', - 'readability/inheritance', - 'readability/multiline_comment', - 'readability/multiline_string', - 'readability/namespace', - 'readability/nolint', - 'readability/nul', - 'readability/strings', - 'readability/todo', - 'readability/utf8', - 'runtime/arrays', - 'runtime/casting', - 'runtime/explicit', - 'runtime/int', - 'runtime/init', - 'runtime/invalid_increment', - 'runtime/member_string_references', - 'runtime/memset', - 'runtime/indentation_namespace', - 'runtime/operator', - 'runtime/printf', - 'runtime/printf_format', - 'runtime/references', - 'runtime/string', - 'runtime/threadsafe_fn', - 'runtime/vlog', - 'whitespace/blank_line', - 'whitespace/braces', - 'whitespace/comma', - 'whitespace/comments', - 'whitespace/empty_conditional_body', - 'whitespace/empty_if_body', - 'whitespace/empty_loop_body', - 'whitespace/end_of_line', - 'whitespace/ending_newline', - 'whitespace/forcolon', - 'whitespace/indent', - 'whitespace/line_length', - 'whitespace/newline', - 'whitespace/operators', - 'whitespace/parens', - 'whitespace/semicolon', - 'whitespace/tab', - 'whitespace/todo', - ] - -# These error categories are no longer enforced by cpplint, but for backwards- -# compatibility they may still appear in NOLINT comments. -_LEGACY_ERROR_CATEGORIES = [ - 'readability/streams', - 'readability/function', - ] - -# The default state of the category filter. This is overridden by the --filter= -# flag. By default all errors are on, so only add here categories that should be -# off by default (i.e., categories that must be enabled by the --filter= flags). -# All entries here should start with a '-' or '+', as in the --filter= flag. -_DEFAULT_FILTERS = ['-build/include_alpha'] - -# The default list of categories suppressed for C (not C++) files. -_DEFAULT_C_SUPPRESSED_CATEGORIES = [ - 'readability/casting', - ] - -# The default list of categories suppressed for Linux Kernel files. -_DEFAULT_KERNEL_SUPPRESSED_CATEGORIES = [ - 'whitespace/tab', - ] - -# We used to check for high-bit characters, but after much discussion we -# decided those were OK, as long as they were in UTF-8 and didn't represent -# hard-coded international strings, which belong in a separate i18n file. - -# C++ headers -_CPP_HEADERS = frozenset([ - # Legacy - 'algobase.h', - 'algo.h', - 'alloc.h', - 'builtinbuf.h', - 'bvector.h', - 'complex.h', - 'defalloc.h', - 'deque.h', - 'editbuf.h', - 'fstream.h', - 'function.h', - 'hash_map', - 'hash_map.h', - 'hash_set', - 'hash_set.h', - 'hashtable.h', - 'heap.h', - 'indstream.h', - 'iomanip.h', - 'iostream.h', - 'istream.h', - 'iterator.h', - 'list.h', - 'map.h', - 'multimap.h', - 'multiset.h', - 'ostream.h', - 'pair.h', - 'parsestream.h', - 'pfstream.h', - 'procbuf.h', - 'pthread_alloc', - 'pthread_alloc.h', - 'rope', - 'rope.h', - 'ropeimpl.h', - 'set.h', - 'slist', - 'slist.h', - 'stack.h', - 'stdiostream.h', - 'stl_alloc.h', - 'stl_relops.h', - 'streambuf.h', - 'stream.h', - 'strfile.h', - 'strstream.h', - 'tempbuf.h', - 'tree.h', - 'type_traits.h', - 'vector.h', - # 17.6.1.2 C++ library headers - 'algorithm', - 'array', - 'atomic', - 'bitset', - 'chrono', - 'codecvt', - 'complex', - 'condition_variable', - 'deque', - 'exception', - 'forward_list', - 'fstream', - 'functional', - 'future', - 'initializer_list', - 'iomanip', - 'ios', - 'iosfwd', - 'iostream', - 'istream', - 'iterator', - 'limits', - 'list', - 'locale', - 'map', - 'memory', - 'mutex', - 'new', - 'numeric', - 'ostream', - 'queue', - 'random', - 'ratio', - 'regex', - 'scoped_allocator', - 'set', - 'sstream', - 'stack', - 'stdexcept', - 'streambuf', - 'string', - 'strstream', - 'system_error', - 'thread', - 'tuple', - 'typeindex', - 'typeinfo', - 'type_traits', - 'unordered_map', - 'unordered_set', - 'utility', - 'valarray', - 'vector', - # 17.6.1.2 C++ headers for C library facilities - 'cassert', - 'ccomplex', - 'cctype', - 'cerrno', - 'cfenv', - 'cfloat', - 'cinttypes', - 'ciso646', - 'climits', - 'clocale', - 'cmath', - 'csetjmp', - 'csignal', - 'cstdalign', - 'cstdarg', - 'cstdbool', - 'cstddef', - 'cstdint', - 'cstdio', - 'cstdlib', - 'cstring', - 'ctgmath', - 'ctime', - 'cuchar', - 'cwchar', - 'cwctype', - ]) - -# Type names -_TYPES = re.compile( - r'^(?:' - # [dcl.type.simple] - r'(char(16_t|32_t)?)|wchar_t|' - r'bool|short|int|long|signed|unsigned|float|double|' - # [support.types] - r'(ptrdiff_t|size_t|max_align_t|nullptr_t)|' - # [cstdint.syn] - r'(u?int(_fast|_least)?(8|16|32|64)_t)|' - r'(u?int(max|ptr)_t)|' - r')$') - - -# These headers are excluded from [build/include] and [build/include_order] -# checks: -# - Anything not following google file name conventions (containing an -# uppercase character, such as Python.h or nsStringAPI.h, for example). -# - Lua headers. -_THIRD_PARTY_HEADERS_PATTERN = re.compile( - r'^(?:[^/]*[A-Z][^/]*\.h|lua\.h|lauxlib\.h|lualib\.h)$') - -# Pattern for matching FileInfo.BaseName() against test file name -_TEST_FILE_SUFFIX = r'(_test|_unittest|_regtest)$' - -# Pattern that matches only complete whitespace, possibly across multiple lines. -_EMPTY_CONDITIONAL_BODY_PATTERN = re.compile(r'^\s*$', re.DOTALL) - -# Assertion macros. These are defined in base/logging.h and -# testing/base/public/gunit.h. -_CHECK_MACROS = [ - 'DCHECK', 'CHECK', - 'EXPECT_TRUE', 'ASSERT_TRUE', - 'EXPECT_FALSE', 'ASSERT_FALSE', - ] - -# Replacement macros for CHECK/DCHECK/EXPECT_TRUE/EXPECT_FALSE -_CHECK_REPLACEMENT = dict([(m, {}) for m in _CHECK_MACROS]) - -for op, replacement in [('==', 'EQ'), ('!=', 'NE'), - ('>=', 'GE'), ('>', 'GT'), - ('<=', 'LE'), ('<', 'LT')]: - _CHECK_REPLACEMENT['DCHECK'][op] = 'DCHECK_%s' % replacement - _CHECK_REPLACEMENT['CHECK'][op] = 'CHECK_%s' % replacement - _CHECK_REPLACEMENT['EXPECT_TRUE'][op] = 'EXPECT_%s' % replacement - _CHECK_REPLACEMENT['ASSERT_TRUE'][op] = 'ASSERT_%s' % replacement - -for op, inv_replacement in [('==', 'NE'), ('!=', 'EQ'), - ('>=', 'LT'), ('>', 'LE'), - ('<=', 'GT'), ('<', 'GE')]: - _CHECK_REPLACEMENT['EXPECT_FALSE'][op] = 'EXPECT_%s' % inv_replacement - _CHECK_REPLACEMENT['ASSERT_FALSE'][op] = 'ASSERT_%s' % inv_replacement - -# Alternative tokens and their replacements. For full list, see section 2.5 -# Alternative tokens [lex.digraph] in the C++ standard. -# -# Digraphs (such as '%:') are not included here since it's a mess to -# match those on a word boundary. -_ALT_TOKEN_REPLACEMENT = { - 'and': '&&', - 'bitor': '|', - 'or': '||', - 'xor': '^', - 'compl': '~', - 'bitand': '&', - 'and_eq': '&=', - 'or_eq': '|=', - 'xor_eq': '^=', - 'not': '!', - 'not_eq': '!=' - } - -# Compile regular expression that matches all the above keywords. The "[ =()]" -# bit is meant to avoid matching these keywords outside of boolean expressions. -# -# False positives include C-style multi-line comments and multi-line strings -# but those have always been troublesome for cpplint. -_ALT_TOKEN_REPLACEMENT_PATTERN = re.compile( - r'[ =()](' + ('|'.join(_ALT_TOKEN_REPLACEMENT.keys())) + r')(?=[ (]|$)') - - -# These constants define types of headers for use with -# _IncludeState.CheckNextIncludeOrder(). -_C_SYS_HEADER = 1 -_CPP_SYS_HEADER = 2 -_LIKELY_MY_HEADER = 3 -_POSSIBLE_MY_HEADER = 4 -_OTHER_HEADER = 5 - -# These constants define the current inline assembly state -_NO_ASM = 0 # Outside of inline assembly block -_INSIDE_ASM = 1 # Inside inline assembly block -_END_ASM = 2 # Last line of inline assembly block -_BLOCK_ASM = 3 # The whole block is an inline assembly block - -# Match start of assembly blocks -_MATCH_ASM = re.compile(r'^\s*(?:asm|_asm|__asm|__asm__)' - r'(?:\s+(volatile|__volatile__))?' - r'\s*[{(]') - -# Match strings that indicate we're working on a C (not C++) file. -_SEARCH_C_FILE = re.compile(r'\b(?:LINT_C_FILE|' - r'vim?:\s*.*(\s*|:)filetype=c(\s*|:|$))') - -# Match string that indicates we're working on a Linux Kernel file. -_SEARCH_KERNEL_FILE = re.compile(r'\b(?:LINT_KERNEL_FILE)') - -_regexp_compile_cache = {} - -# {str, set(int)}: a map from error categories to sets of linenumbers -# on which those errors are expected and should be suppressed. -_error_suppressions = {} - -# The root directory used for deriving header guard CPP variable. -# This is set by --root flag. -_root = None - -# The allowed line length of files. -# This is set by --linelength flag. -_line_length = 80 - -# The allowed extensions for file names -# This is set by --extensions flag. -_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh']) - -# Treat all headers starting with 'h' equally: .h, .hpp, .hxx etc. -# This is set by --headers flag. -_hpp_headers = set(['h']) - -# {str, bool}: a map from error categories to booleans which indicate if the -# category should be suppressed for every line. -_global_error_suppressions = {} - -def ProcessHppHeadersOption(val): - global _hpp_headers - try: - _hpp_headers = set(val.split(',')) - # Automatically append to extensions list so it does not have to be set 2 times - _valid_extensions.update(_hpp_headers) - except ValueError: - PrintUsage('Header extensions must be comma seperated list.') - -def IsHeaderExtension(file_extension): - return file_extension in _hpp_headers - -def ParseNolintSuppressions(filename, raw_line, linenum, error): - """Updates the global list of line error-suppressions. - - Parses any NOLINT comments on the current line, updating the global - error_suppressions store. Reports an error if the NOLINT comment - was malformed. - - Args: - filename: str, the name of the input file. - raw_line: str, the line of input text, with comments. - linenum: int, the number of the current line. - error: function, an error handler. - """ - matched = Search(r'\bNOLINT(NEXTLINE)?\b(\([^)]+\))?', raw_line) - if matched: - if matched.group(1): - suppressed_line = linenum + 1 - else: - suppressed_line = linenum - category = matched.group(2) - if category in (None, '(*)'): # => "suppress all" - _error_suppressions.setdefault(None, set()).add(suppressed_line) - else: - if category.startswith('(') and category.endswith(')'): - category = category[1:-1] - if category in _ERROR_CATEGORIES: - _error_suppressions.setdefault(category, set()).add(suppressed_line) - elif category not in _LEGACY_ERROR_CATEGORIES: - error(filename, linenum, 'readability/nolint', 5, - 'Unknown NOLINT error category: %s' % category) - - -def ProcessGlobalSuppresions(lines): - """Updates the list of global error suppressions. - - Parses any lint directives in the file that have global effect. - - Args: - lines: An array of strings, each representing a line of the file, with the - last element being empty if the file is terminated with a newline. - """ - for line in lines: - if _SEARCH_C_FILE.search(line): - for category in _DEFAULT_C_SUPPRESSED_CATEGORIES: - _global_error_suppressions[category] = True - if _SEARCH_KERNEL_FILE.search(line): - for category in _DEFAULT_KERNEL_SUPPRESSED_CATEGORIES: - _global_error_suppressions[category] = True - - -def ResetNolintSuppressions(): - """Resets the set of NOLINT suppressions to empty.""" - _error_suppressions.clear() - _global_error_suppressions.clear() - - -def IsErrorSuppressedByNolint(category, linenum): - """Returns true if the specified error category is suppressed on this line. - - Consults the global error_suppressions map populated by - ParseNolintSuppressions/ProcessGlobalSuppresions/ResetNolintSuppressions. - - Args: - category: str, the category of the error. - linenum: int, the current line number. - Returns: - bool, True iff the error should be suppressed due to a NOLINT comment or - global suppression. - """ - return (_global_error_suppressions.get(category, False) or - linenum in _error_suppressions.get(category, set()) or - linenum in _error_suppressions.get(None, set())) - - -def Match(pattern, s): - """Matches the string with the pattern, caching the compiled regexp.""" - # The regexp compilation caching is inlined in both Match and Search for - # performance reasons; factoring it out into a separate function turns out - # to be noticeably expensive. - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = sre_compile.compile(pattern) - return _regexp_compile_cache[pattern].match(s) - - -def ReplaceAll(pattern, rep, s): - """Replaces instances of pattern in a string with a replacement. - - The compiled regex is kept in a cache shared by Match and Search. - - Args: - pattern: regex pattern - rep: replacement text - s: search string - - Returns: - string with replacements made (or original string if no replacements) - """ - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = sre_compile.compile(pattern) - return _regexp_compile_cache[pattern].sub(rep, s) - - -def Search(pattern, s): - """Searches the string for the pattern, caching the compiled regexp.""" - if pattern not in _regexp_compile_cache: - _regexp_compile_cache[pattern] = sre_compile.compile(pattern) - return _regexp_compile_cache[pattern].search(s) - - -def _IsSourceExtension(s): - """File extension (excluding dot) matches a source file extension.""" - return s in ('c', 'cc', 'cpp', 'cxx') - - -class _IncludeState(object): - """Tracks line numbers for includes, and the order in which includes appear. - - include_list contains list of lists of (header, line number) pairs. - It's a lists of lists rather than just one flat list to make it - easier to update across preprocessor boundaries. - - Call CheckNextIncludeOrder() once for each header in the file, passing - in the type constants defined above. Calls in an illegal order will - raise an _IncludeError with an appropriate error message. - - """ - # self._section will move monotonically through this set. If it ever - # needs to move backwards, CheckNextIncludeOrder will raise an error. - _INITIAL_SECTION = 0 - _MY_H_SECTION = 1 - _C_SECTION = 2 - _CPP_SECTION = 3 - _OTHER_H_SECTION = 4 - - _TYPE_NAMES = { - _C_SYS_HEADER: 'C system header', - _CPP_SYS_HEADER: 'C++ system header', - _LIKELY_MY_HEADER: 'header this file implements', - _POSSIBLE_MY_HEADER: 'header this file may implement', - _OTHER_HEADER: 'other header', - } - _SECTION_NAMES = { - _INITIAL_SECTION: "... nothing. (This can't be an error.)", - _MY_H_SECTION: 'a header this file implements', - _C_SECTION: 'C system header', - _CPP_SECTION: 'C++ system header', - _OTHER_H_SECTION: 'other header', - } - - def __init__(self): - self.include_list = [[]] - self.ResetSection('') - - def FindHeader(self, header): - """Check if a header has already been included. - - Args: - header: header to check. - Returns: - Line number of previous occurrence, or -1 if the header has not - been seen before. - """ - for section_list in self.include_list: - for f in section_list: - if f[0] == header: - return f[1] - return -1 - - def ResetSection(self, directive): - """Reset section checking for preprocessor directive. - - Args: - directive: preprocessor directive (e.g. "if", "else"). - """ - # The name of the current section. - self._section = self._INITIAL_SECTION - # The path of last found header. - self._last_header = '' - - # Update list of includes. Note that we never pop from the - # include list. - if directive in ('if', 'ifdef', 'ifndef'): - self.include_list.append([]) - elif directive in ('else', 'elif'): - self.include_list[-1] = [] - - def SetLastHeader(self, header_path): - self._last_header = header_path - - def CanonicalizeAlphabeticalOrder(self, header_path): - """Returns a path canonicalized for alphabetical comparison. - - - replaces "-" with "_" so they both cmp the same. - - removes '-inl' since we don't require them to be after the main header. - - lowercase everything, just in case. - - Args: - header_path: Path to be canonicalized. - - Returns: - Canonicalized path. - """ - return header_path.replace('-inl.h', '.h').replace('-', '_').lower() - - def IsInAlphabeticalOrder(self, clean_lines, linenum, header_path): - """Check if a header is in alphabetical order with the previous header. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - header_path: Canonicalized header to be checked. - - Returns: - Returns true if the header is in alphabetical order. - """ - # If previous section is different from current section, _last_header will - # be reset to empty string, so it's always less than current header. - # - # If previous line was a blank line, assume that the headers are - # intentionally sorted the way they are. - if (self._last_header > header_path and - Match(r'^\s*#\s*include\b', clean_lines.elided[linenum - 1])): - return False - return True - - def CheckNextIncludeOrder(self, header_type): - """Returns a non-empty error message if the next header is out of order. - - This function also updates the internal state to be ready to check - the next include. - - Args: - header_type: One of the _XXX_HEADER constants defined above. - - Returns: - The empty string if the header is in the right order, or an - error message describing what's wrong. - - """ - error_message = ('Found %s after %s' % - (self._TYPE_NAMES[header_type], - self._SECTION_NAMES[self._section])) - - last_section = self._section - - if header_type == _C_SYS_HEADER: - if self._section <= self._C_SECTION: - self._section = self._C_SECTION - else: - self._last_header = '' - return error_message - elif header_type == _CPP_SYS_HEADER: - if self._section <= self._CPP_SECTION: - self._section = self._CPP_SECTION - else: - self._last_header = '' - return error_message - elif header_type == _LIKELY_MY_HEADER: - if self._section <= self._MY_H_SECTION: - self._section = self._MY_H_SECTION - else: - self._section = self._OTHER_H_SECTION - elif header_type == _POSSIBLE_MY_HEADER: - if self._section <= self._MY_H_SECTION: - self._section = self._MY_H_SECTION - else: - # This will always be the fallback because we're not sure - # enough that the header is associated with this file. - self._section = self._OTHER_H_SECTION - else: - assert header_type == _OTHER_HEADER - self._section = self._OTHER_H_SECTION - - if last_section != self._section: - self._last_header = '' - - return '' - - -class _CppLintState(object): - """Maintains module-wide state..""" - - def __init__(self): - self.verbose_level = 1 # global setting. - self.error_count = 0 # global count of reported errors - # filters to apply when emitting error messages - self.filters = _DEFAULT_FILTERS[:] - # backup of filter list. Used to restore the state after each file. - self._filters_backup = self.filters[:] - self.counting = 'total' # In what way are we counting errors? - self.errors_by_category = {} # string to int dict storing error counts - - # output format: - # "emacs" - format that emacs can parse (default) - # "vs7" - format that Microsoft Visual Studio 7 can parse - self.output_format = 'emacs' - - def SetOutputFormat(self, output_format): - """Sets the output format for errors.""" - self.output_format = output_format - - def SetVerboseLevel(self, level): - """Sets the module's verbosity, and returns the previous setting.""" - last_verbose_level = self.verbose_level - self.verbose_level = level - return last_verbose_level - - def SetCountingStyle(self, counting_style): - """Sets the module's counting options.""" - self.counting = counting_style - - def SetFilters(self, filters): - """Sets the error-message filters. - - These filters are applied when deciding whether to emit a given - error message. - - Args: - filters: A string of comma-separated filters (eg "+whitespace/indent"). - Each filter should start with + or -; else we die. - - Raises: - ValueError: The comma-separated filters did not all start with '+' or '-'. - E.g. "-,+whitespace,-whitespace/indent,whitespace/badfilter" - """ - # Default filters always have less priority than the flag ones. - self.filters = _DEFAULT_FILTERS[:] - self.AddFilters(filters) - - def AddFilters(self, filters): - """ Adds more filters to the existing list of error-message filters. """ - for filt in filters.split(','): - clean_filt = filt.strip() - if clean_filt: - self.filters.append(clean_filt) - for filt in self.filters: - if not (filt.startswith('+') or filt.startswith('-')): - raise ValueError('Every filter in --filters must start with + or -' - ' (%s does not)' % filt) - - def BackupFilters(self): - """ Saves the current filter list to backup storage.""" - self._filters_backup = self.filters[:] - - def RestoreFilters(self): - """ Restores filters previously backed up.""" - self.filters = self._filters_backup[:] - - def ResetErrorCounts(self): - """Sets the module's error statistic back to zero.""" - self.error_count = 0 - self.errors_by_category = {} - - def IncrementErrorCount(self, category): - """Bumps the module's error statistic.""" - self.error_count += 1 - if self.counting in ('toplevel', 'detailed'): - if self.counting != 'detailed': - category = category.split('/')[0] - if category not in self.errors_by_category: - self.errors_by_category[category] = 0 - self.errors_by_category[category] += 1 - - def PrintErrorCounts(self): - """Print a summary of errors by category, and the total.""" - for category, count in self.errors_by_category.iteritems(): - sys.stderr.write('Category \'%s\' errors found: %d\n' % - (category, count)) - sys.stdout.write('Total errors found: %d\n' % self.error_count) - -_cpplint_state = _CppLintState() - - -def _OutputFormat(): - """Gets the module's output format.""" - return _cpplint_state.output_format - - -def _SetOutputFormat(output_format): - """Sets the module's output format.""" - _cpplint_state.SetOutputFormat(output_format) - - -def _VerboseLevel(): - """Returns the module's verbosity setting.""" - return _cpplint_state.verbose_level - - -def _SetVerboseLevel(level): - """Sets the module's verbosity, and returns the previous setting.""" - return _cpplint_state.SetVerboseLevel(level) - - -def _SetCountingStyle(level): - """Sets the module's counting options.""" - _cpplint_state.SetCountingStyle(level) - - -def _Filters(): - """Returns the module's list of output filters, as a list.""" - return _cpplint_state.filters - - -def _SetFilters(filters): - """Sets the module's error-message filters. - - These filters are applied when deciding whether to emit a given - error message. - - Args: - filters: A string of comma-separated filters (eg "whitespace/indent"). - Each filter should start with + or -; else we die. - """ - _cpplint_state.SetFilters(filters) - -def _AddFilters(filters): - """Adds more filter overrides. - - Unlike _SetFilters, this function does not reset the current list of filters - available. - - Args: - filters: A string of comma-separated filters (eg "whitespace/indent"). - Each filter should start with + or -; else we die. - """ - _cpplint_state.AddFilters(filters) - -def _BackupFilters(): - """ Saves the current filter list to backup storage.""" - _cpplint_state.BackupFilters() - -def _RestoreFilters(): - """ Restores filters previously backed up.""" - _cpplint_state.RestoreFilters() - -class _FunctionState(object): - """Tracks current function name and the number of lines in its body.""" - - _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. - _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. - - def __init__(self): - self.in_a_function = False - self.lines_in_function = 0 - self.current_function = '' - - def Begin(self, function_name): - """Start analyzing function body. - - Args: - function_name: The name of the function being tracked. - """ - self.in_a_function = True - self.lines_in_function = 0 - self.current_function = function_name - - def Count(self): - """Count line in current function body.""" - if self.in_a_function: - self.lines_in_function += 1 - - def Check(self, error, filename, linenum): - """Report if too many lines in function body. - - Args: - error: The function to call with any errors found. - filename: The name of the current file. - linenum: The number of the line to check. - """ - if not self.in_a_function: - return - - if Match(r'T(EST|est)', self.current_function): - base_trigger = self._TEST_TRIGGER - else: - base_trigger = self._NORMAL_TRIGGER - trigger = base_trigger * 2**_VerboseLevel() - - if self.lines_in_function > trigger: - error_level = int(math.log(self.lines_in_function / base_trigger, 2)) - # 50 => 0, 100 => 1, 200 => 2, 400 => 3, 800 => 4, 1600 => 5, ... - if error_level > 5: - error_level = 5 - error(filename, linenum, 'readability/fn_size', error_level, - 'Small and focused functions are preferred:' - ' %s has %d non-comment lines' - ' (error triggered by exceeding %d lines).' % ( - self.current_function, self.lines_in_function, trigger)) - - def End(self): - """Stop analyzing function body.""" - self.in_a_function = False - - -class _IncludeError(Exception): - """Indicates a problem with the include order in a file.""" - pass - - -class FileInfo(object): - """Provides utility functions for filenames. - - FileInfo provides easy access to the components of a file's path - relative to the project root. - """ - - def __init__(self, filename): - self._filename = filename - - def FullName(self): - """Make Windows paths like Unix.""" - return os.path.abspath(self._filename).replace('\\', '/') - - def RepositoryName(self): - """FullName after removing the local path to the repository. - - If we have a real absolute path name here we can try to do something smart: - detecting the root of the checkout and truncating /path/to/checkout from - the name so that we get header guards that don't include things like - "C:\Documents and Settings\..." or "/home/username/..." in them and thus - people on different computers who have checked the source out to different - locations won't see bogus errors. - """ - fullname = self.FullName() - - if os.path.exists(fullname): - project_dir = os.path.dirname(fullname) - - if os.path.exists(os.path.join(project_dir, ".svn")): - # If there's a .svn file in the current directory, we recursively look - # up the directory tree for the top of the SVN checkout - root_dir = project_dir - one_up_dir = os.path.dirname(root_dir) - while os.path.exists(os.path.join(one_up_dir, ".svn")): - root_dir = os.path.dirname(root_dir) - one_up_dir = os.path.dirname(one_up_dir) - - prefix = os.path.commonprefix([root_dir, project_dir]) - return fullname[len(prefix) + 1:] - - # Not SVN <= 1.6? Try to find a git, hg, or svn top level directory by - # searching up from the current path. - root_dir = current_dir = os.path.dirname(fullname) - while current_dir != os.path.dirname(current_dir): - if (os.path.exists(os.path.join(current_dir, ".git")) or - os.path.exists(os.path.join(current_dir, ".hg")) or - os.path.exists(os.path.join(current_dir, ".svn"))): - root_dir = current_dir - current_dir = os.path.dirname(current_dir) - - if (os.path.exists(os.path.join(root_dir, ".git")) or - os.path.exists(os.path.join(root_dir, ".hg")) or - os.path.exists(os.path.join(root_dir, ".svn"))): - prefix = os.path.commonprefix([root_dir, project_dir]) - return fullname[len(prefix) + 1:] - - # Don't know what to do; header guard warnings may be wrong... - return fullname - - def Split(self): - """Splits the file into the directory, basename, and extension. - - For 'chrome/browser/browser.cc', Split() would - return ('chrome/browser', 'browser', '.cc') - - Returns: - A tuple of (directory, basename, extension). - """ - - googlename = self.RepositoryName() - project, rest = os.path.split(googlename) - return (project,) + os.path.splitext(rest) - - def BaseName(self): - """File base name - text after the final slash, before the final period.""" - return self.Split()[1] - - def Extension(self): - """File extension - text following the final period.""" - return self.Split()[2] - - def NoExtension(self): - """File has no source file extension.""" - return '/'.join(self.Split()[0:2]) - - def IsSource(self): - """File has a source file extension.""" - return _IsSourceExtension(self.Extension()[1:]) - - -def _ShouldPrintError(category, confidence, linenum): - """If confidence >= verbose, category passes filter and is not suppressed.""" - - # There are three ways we might decide not to print an error message: - # a "NOLINT(category)" comment appears in the source, - # the verbosity level isn't high enough, or the filters filter it out. - if IsErrorSuppressedByNolint(category, linenum): - return False - - if confidence < _cpplint_state.verbose_level: - return False - - is_filtered = False - for one_filter in _Filters(): - if one_filter.startswith('-'): - if category.startswith(one_filter[1:]): - is_filtered = True - elif one_filter.startswith('+'): - if category.startswith(one_filter[1:]): - is_filtered = False - else: - assert False # should have been checked for in SetFilter. - if is_filtered: - return False - - return True - - -def Error(filename, linenum, category, confidence, message): - """Logs the fact we've found a lint error. - - We log where the error was found, and also our confidence in the error, - that is, how certain we are this is a legitimate style regression, and - not a misidentification or a use that's sometimes justified. - - False positives can be suppressed by the use of - "cpplint(category)" comments on the offending line. These are - parsed into _error_suppressions. - - Args: - filename: The name of the file containing the error. - linenum: The number of the line containing the error. - category: A string used to describe the "category" this bug - falls under: "whitespace", say, or "runtime". Categories - may have a hierarchy separated by slashes: "whitespace/indent". - confidence: A number from 1-5 representing a confidence score for - the error, with 5 meaning that we are certain of the problem, - and 1 meaning that it could be a legitimate construct. - message: The error message. - """ - if _ShouldPrintError(category, confidence, linenum): - _cpplint_state.IncrementErrorCount(category) - if _cpplint_state.output_format == 'vs7': - sys.stderr.write('%s(%s): error cpplint: [%s] %s [%d]\n' % ( - filename, linenum, category, message, confidence)) - elif _cpplint_state.output_format == 'eclipse': - sys.stderr.write('%s:%s: warning: %s [%s] [%d]\n' % ( - filename, linenum, message, category, confidence)) - else: - sys.stderr.write('%s:%s: %s [%s] [%d]\n' % ( - filename, linenum, message, category, confidence)) - - -# Matches standard C++ escape sequences per 2.13.2.3 of the C++ standard. -_RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile( - r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)') -# Match a single C style comment on the same line. -_RE_PATTERN_C_COMMENTS = r'/\*(?:[^*]|\*(?!/))*\*/' -# Matches multi-line C style comments. -# This RE is a little bit more complicated than one might expect, because we -# have to take care of space removals tools so we can handle comments inside -# statements better. -# The current rule is: We only clear spaces from both sides when we're at the -# end of the line. Otherwise, we try to remove spaces from the right side, -# if this doesn't work we try on left side but only if there's a non-character -# on the right. -_RE_PATTERN_CLEANSE_LINE_C_COMMENTS = re.compile( - r'(\s*' + _RE_PATTERN_C_COMMENTS + r'\s*$|' + - _RE_PATTERN_C_COMMENTS + r'\s+|' + - r'\s+' + _RE_PATTERN_C_COMMENTS + r'(?=\W)|' + - _RE_PATTERN_C_COMMENTS + r')') - - -def IsCppString(line): - """Does line terminate so, that the next symbol is in string constant. - - This function does not consider single-line nor multi-line comments. - - Args: - line: is a partial line of code starting from the 0..n. - - Returns: - True, if next character appended to 'line' is inside a - string constant. - """ - - line = line.replace(r'\\', 'XX') # after this, \\" does not match to \" - return ((line.count('"') - line.count(r'\"') - line.count("'\"'")) & 1) == 1 - - -def CleanseRawStrings(raw_lines): - """Removes C++11 raw strings from lines. - - Before: - static const char kData[] = R"( - multi-line string - )"; - - After: - static const char kData[] = "" - (replaced by blank line) - ""; - - Args: - raw_lines: list of raw lines. - - Returns: - list of lines with C++11 raw strings replaced by empty strings. - """ - - delimiter = None - lines_without_raw_strings = [] - for line in raw_lines: - if delimiter: - # Inside a raw string, look for the end - end = line.find(delimiter) - if end >= 0: - # Found the end of the string, match leading space for this - # line and resume copying the original lines, and also insert - # a "" on the last line. - leading_space = Match(r'^(\s*)\S', line) - line = leading_space.group(1) + '""' + line[end + len(delimiter):] - delimiter = None - else: - # Haven't found the end yet, append a blank line. - line = '""' - - # Look for beginning of a raw string, and replace them with - # empty strings. This is done in a loop to handle multiple raw - # strings on the same line. - while delimiter is None: - # Look for beginning of a raw string. - # See 2.14.15 [lex.string] for syntax. - # - # Once we have matched a raw string, we check the prefix of the - # line to make sure that the line is not part of a single line - # comment. It's done this way because we remove raw strings - # before removing comments as opposed to removing comments - # before removing raw strings. This is because there are some - # cpplint checks that requires the comments to be preserved, but - # we don't want to check comments that are inside raw strings. - matched = Match(r'^(.*?)\b(?:R|u8R|uR|UR|LR)"([^\s\\()]*)\((.*)$', line) - if (matched and - not Match(r'^([^\'"]|\'(\\.|[^\'])*\'|"(\\.|[^"])*")*//', - matched.group(1))): - delimiter = ')' + matched.group(2) + '"' - - end = matched.group(3).find(delimiter) - if end >= 0: - # Raw string ended on same line - line = (matched.group(1) + '""' + - matched.group(3)[end + len(delimiter):]) - delimiter = None - else: - # Start of a multi-line raw string - line = matched.group(1) + '""' - else: - break - - lines_without_raw_strings.append(line) - - # TODO(unknown): if delimiter is not None here, we might want to - # emit a warning for unterminated string. - return lines_without_raw_strings - - -def FindNextMultiLineCommentStart(lines, lineix): - """Find the beginning marker for a multiline comment.""" - while lineix < len(lines): - if lines[lineix].strip().startswith('/*'): - # Only return this marker if the comment goes beyond this line - if lines[lineix].strip().find('*/', 2) < 0: - return lineix - lineix += 1 - return len(lines) - - -def FindNextMultiLineCommentEnd(lines, lineix): - """We are inside a comment, find the end marker.""" - while lineix < len(lines): - if lines[lineix].strip().endswith('*/'): - return lineix - lineix += 1 - return len(lines) - - -def RemoveMultiLineCommentsFromRange(lines, begin, end): - """Clears a range of lines for multi-line comments.""" - # Having // dummy comments makes the lines non-empty, so we will not get - # unnecessary blank line warnings later in the code. - for i in range(begin, end): - lines[i] = '/**/' - - -def RemoveMultiLineComments(filename, lines, error): - """Removes multiline (c-style) comments from lines.""" - lineix = 0 - while lineix < len(lines): - lineix_begin = FindNextMultiLineCommentStart(lines, lineix) - if lineix_begin >= len(lines): - return - lineix_end = FindNextMultiLineCommentEnd(lines, lineix_begin) - if lineix_end >= len(lines): - error(filename, lineix_begin + 1, 'readability/multiline_comment', 5, - 'Could not find end of multi-line comment') - return - RemoveMultiLineCommentsFromRange(lines, lineix_begin, lineix_end + 1) - lineix = lineix_end + 1 - - -def CleanseComments(line): - """Removes //-comments and single-line C-style /* */ comments. - - Args: - line: A line of C++ source. - - Returns: - The line with single-line comments removed. - """ - commentpos = line.find('//') - if commentpos != -1 and not IsCppString(line[:commentpos]): - line = line[:commentpos].rstrip() - # get rid of /* ... */ - return _RE_PATTERN_CLEANSE_LINE_C_COMMENTS.sub('', line) - - -class CleansedLines(object): - """Holds 4 copies of all lines with different preprocessing applied to them. - - 1) elided member contains lines without strings and comments. - 2) lines member contains lines without comments. - 3) raw_lines member contains all the lines without processing. - 4) lines_without_raw_strings member is same as raw_lines, but with C++11 raw - strings removed. - All these members are of , and of the same length. - """ - - def __init__(self, lines): - self.elided = [] - self.lines = [] - self.raw_lines = lines - self.num_lines = len(lines) - self.lines_without_raw_strings = CleanseRawStrings(lines) - for linenum in range(len(self.lines_without_raw_strings)): - self.lines.append(CleanseComments( - self.lines_without_raw_strings[linenum])) - elided = self._CollapseStrings(self.lines_without_raw_strings[linenum]) - self.elided.append(CleanseComments(elided)) - - def NumLines(self): - """Returns the number of lines represented.""" - return self.num_lines - - @staticmethod - def _CollapseStrings(elided): - """Collapses strings and chars on a line to simple "" or '' blocks. - - We nix strings first so we're not fooled by text like '"http://"' - - Args: - elided: The line being processed. - - Returns: - The line with collapsed strings. - """ - if _RE_PATTERN_INCLUDE.match(elided): - return elided - - # Remove escaped characters first to make quote/single quote collapsing - # basic. Things that look like escaped characters shouldn't occur - # outside of strings and chars. - elided = _RE_PATTERN_CLEANSE_LINE_ESCAPES.sub('', elided) - - # Replace quoted strings and digit separators. Both single quotes - # and double quotes are processed in the same loop, otherwise - # nested quotes wouldn't work. - collapsed = '' - while True: - # Find the first quote character - match = Match(r'^([^\'"]*)([\'"])(.*)$', elided) - if not match: - collapsed += elided - break - head, quote, tail = match.groups() - - if quote == '"': - # Collapse double quoted strings - second_quote = tail.find('"') - if second_quote >= 0: - collapsed += head + '""' - elided = tail[second_quote + 1:] - else: - # Unmatched double quote, don't bother processing the rest - # of the line since this is probably a multiline string. - collapsed += elided - break - else: - # Found single quote, check nearby text to eliminate digit separators. - # - # There is no special handling for floating point here, because - # the integer/fractional/exponent parts would all be parsed - # correctly as long as there are digits on both sides of the - # separator. So we are fine as long as we don't see something - # like "0.'3" (gcc 4.9.0 will not allow this literal). - if Search(r'\b(?:0[bBxX]?|[1-9])[0-9a-fA-F]*$', head): - match_literal = Match(r'^((?:\'?[0-9a-zA-Z_])*)(.*)$', "'" + tail) - collapsed += head + match_literal.group(1).replace("'", '') - elided = match_literal.group(2) - else: - second_quote = tail.find('\'') - if second_quote >= 0: - collapsed += head + "''" - elided = tail[second_quote + 1:] - else: - # Unmatched single quote - collapsed += elided - break - - return collapsed - - -def FindEndOfExpressionInLine(line, startpos, stack): - """Find the position just after the end of current parenthesized expression. - - Args: - line: a CleansedLines line. - startpos: start searching at this position. - stack: nesting stack at startpos. - - Returns: - On finding matching end: (index just after matching end, None) - On finding an unclosed expression: (-1, None) - Otherwise: (-1, new stack at end of this line) - """ - for i in xrange(startpos, len(line)): - char = line[i] - if char in '([{': - # Found start of parenthesized expression, push to expression stack - stack.append(char) - elif char == '<': - # Found potential start of template argument list - if i > 0 and line[i - 1] == '<': - # Left shift operator - if stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - elif i > 0 and Search(r'\boperator\s*$', line[0:i]): - # operator<, don't add to stack - continue - else: - # Tentative start of template argument list - stack.append('<') - elif char in ')]}': - # Found end of parenthesized expression. - # - # If we are currently expecting a matching '>', the pending '<' - # must have been an operator. Remove them from expression stack. - while stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - if ((stack[-1] == '(' and char == ')') or - (stack[-1] == '[' and char == ']') or - (stack[-1] == '{' and char == '}')): - stack.pop() - if not stack: - return (i + 1, None) - else: - # Mismatched parentheses - return (-1, None) - elif char == '>': - # Found potential end of template argument list. - - # Ignore "->" and operator functions - if (i > 0 and - (line[i - 1] == '-' or Search(r'\boperator\s*$', line[0:i - 1]))): - continue - - # Pop the stack if there is a matching '<'. Otherwise, ignore - # this '>' since it must be an operator. - if stack: - if stack[-1] == '<': - stack.pop() - if not stack: - return (i + 1, None) - elif char == ';': - # Found something that look like end of statements. If we are currently - # expecting a '>', the matching '<' must have been an operator, since - # template argument list should not contain statements. - while stack and stack[-1] == '<': - stack.pop() - if not stack: - return (-1, None) - - # Did not find end of expression or unbalanced parentheses on this line - return (-1, stack) - - -def CloseExpression(clean_lines, linenum, pos): - """If input points to ( or { or [ or <, finds the position that closes it. - - If lines[linenum][pos] points to a '(' or '{' or '[' or '<', finds the - linenum/pos that correspond to the closing of the expression. - - TODO(unknown): cpplint spends a fair bit of time matching parentheses. - Ideally we would want to index all opening and closing parentheses once - and have CloseExpression be just a simple lookup, but due to preprocessor - tricks, this is not so easy. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: A position on the line. - - Returns: - A tuple (line, linenum, pos) pointer *past* the closing brace, or - (line, len(lines), -1) if we never find a close. Note we ignore - strings and comments when matching; and the line we return is the - 'cleansed' line at linenum. - """ - - line = clean_lines.elided[linenum] - if (line[pos] not in '({[<') or Match(r'<[<=]', line[pos:]): - return (line, clean_lines.NumLines(), -1) - - # Check first line - (end_pos, stack) = FindEndOfExpressionInLine(line, pos, []) - if end_pos > -1: - return (line, linenum, end_pos) - - # Continue scanning forward - while stack and linenum < clean_lines.NumLines() - 1: - linenum += 1 - line = clean_lines.elided[linenum] - (end_pos, stack) = FindEndOfExpressionInLine(line, 0, stack) - if end_pos > -1: - return (line, linenum, end_pos) - - # Did not find end of expression before end of file, give up - return (line, clean_lines.NumLines(), -1) - - -def FindStartOfExpressionInLine(line, endpos, stack): - """Find position at the matching start of current expression. - - This is almost the reverse of FindEndOfExpressionInLine, but note - that the input position and returned position differs by 1. - - Args: - line: a CleansedLines line. - endpos: start searching at this position. - stack: nesting stack at endpos. - - Returns: - On finding matching start: (index at matching start, None) - On finding an unclosed expression: (-1, None) - Otherwise: (-1, new stack at beginning of this line) - """ - i = endpos - while i >= 0: - char = line[i] - if char in ')]}': - # Found end of expression, push to expression stack - stack.append(char) - elif char == '>': - # Found potential end of template argument list. - # - # Ignore it if it's a "->" or ">=" or "operator>" - if (i > 0 and - (line[i - 1] == '-' or - Match(r'\s>=\s', line[i - 1:]) or - Search(r'\boperator\s*$', line[0:i]))): - i -= 1 - else: - stack.append('>') - elif char == '<': - # Found potential start of template argument list - if i > 0 and line[i - 1] == '<': - # Left shift operator - i -= 1 - else: - # If there is a matching '>', we can pop the expression stack. - # Otherwise, ignore this '<' since it must be an operator. - if stack and stack[-1] == '>': - stack.pop() - if not stack: - return (i, None) - elif char in '([{': - # Found start of expression. - # - # If there are any unmatched '>' on the stack, they must be - # operators. Remove those. - while stack and stack[-1] == '>': - stack.pop() - if not stack: - return (-1, None) - if ((char == '(' and stack[-1] == ')') or - (char == '[' and stack[-1] == ']') or - (char == '{' and stack[-1] == '}')): - stack.pop() - if not stack: - return (i, None) - else: - # Mismatched parentheses - return (-1, None) - elif char == ';': - # Found something that look like end of statements. If we are currently - # expecting a '<', the matching '>' must have been an operator, since - # template argument list should not contain statements. - while stack and stack[-1] == '>': - stack.pop() - if not stack: - return (-1, None) - - i -= 1 - - return (-1, stack) - - -def ReverseCloseExpression(clean_lines, linenum, pos): - """If input points to ) or } or ] or >, finds the position that opens it. - - If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the - linenum/pos that correspond to the opening of the expression. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: A position on the line. - - Returns: - A tuple (line, linenum, pos) pointer *at* the opening brace, or - (line, 0, -1) if we never find the matching opening brace. Note - we ignore strings and comments when matching; and the line we - return is the 'cleansed' line at linenum. - """ - line = clean_lines.elided[linenum] - if line[pos] not in ')}]>': - return (line, 0, -1) - - # Check last line - (start_pos, stack) = FindStartOfExpressionInLine(line, pos, []) - if start_pos > -1: - return (line, linenum, start_pos) - - # Continue scanning backward - while stack and linenum > 0: - linenum -= 1 - line = clean_lines.elided[linenum] - (start_pos, stack) = FindStartOfExpressionInLine(line, len(line) - 1, stack) - if start_pos > -1: - return (line, linenum, start_pos) - - # Did not find start of expression before beginning of file, give up - return (line, 0, -1) - - -def CheckForCopyright(filename, lines, error): - """Logs an error if no Copyright message appears at the top of the file.""" - - # We'll say it should occur by line 10. Don't forget there's a - # dummy line at the front. - for line in xrange(1, min(len(lines), 11)): - if re.search(r'Copyright', lines[line], re.I): break - else: # means no copyright line was found - error(filename, 0, 'legal/copyright', 5, - 'No copyright message found. ' - 'You should have a line: "Copyright [year] "') - - -def GetIndentLevel(line): - """Return the number of leading spaces in line. - - Args: - line: A string to check. - - Returns: - An integer count of leading spaces, possibly zero. - """ - indent = Match(r'^( *)\S', line) - if indent: - return len(indent.group(1)) - else: - return 0 - - -def GetHeaderGuardCPPVariable(filename): - """Returns the CPP variable that should be used as a header guard. - - Args: - filename: The name of a C++ header file. - - Returns: - The CPP variable that should be used as a header guard in the - named file. - - """ - - # Restores original filename in case that cpplint is invoked from Emacs's - # flymake. - filename = re.sub(r'_flymake\.h$', '.h', filename) - filename = re.sub(r'/\.flymake/([^/]*)$', r'/\1', filename) - # Replace 'c++' with 'cpp'. - filename = filename.replace('C++', 'cpp').replace('c++', 'cpp') - - fileinfo = FileInfo(filename) - file_path_from_root = fileinfo.RepositoryName() - if _root: - suffix = os.sep - # On Windows using directory separator will leave us with - # "bogus escape error" unless we properly escape regex. - if suffix == '\\': - suffix += '\\' - file_path_from_root = re.sub('^' + _root + suffix, '', file_path_from_root) - return re.sub(r'[^a-zA-Z0-9]', '_', file_path_from_root).upper() + '_' - - -def CheckForHeaderGuard(filename, clean_lines, error): - """Checks that the file contains a header guard. - - Logs an error if no #ifndef header guard is present. For other - headers, checks that the full pathname is used. - - Args: - filename: The name of the C++ header file. - clean_lines: A CleansedLines instance containing the file. - error: The function to call with any errors found. - """ - - # Don't check for header guards if there are error suppression - # comments somewhere in this file. - # - # Because this is silencing a warning for a nonexistent line, we - # only support the very specific NOLINT(build/header_guard) syntax, - # and not the general NOLINT or NOLINT(*) syntax. - raw_lines = clean_lines.lines_without_raw_strings - for i in raw_lines: - if Search(r'//\s*NOLINT\(build/header_guard\)', i): - return - - cppvar = GetHeaderGuardCPPVariable(filename) - - ifndef = '' - ifndef_linenum = 0 - define = '' - endif = '' - endif_linenum = 0 - for linenum, line in enumerate(raw_lines): - linesplit = line.split() - if len(linesplit) >= 2: - # find the first occurrence of #ifndef and #define, save arg - if not ifndef and linesplit[0] == '#ifndef': - # set ifndef to the header guard presented on the #ifndef line. - ifndef = linesplit[1] - ifndef_linenum = linenum - if not define and linesplit[0] == '#define': - define = linesplit[1] - # find the last occurrence of #endif, save entire line - if line.startswith('#endif'): - endif = line - endif_linenum = linenum - - if not ifndef or not define or ifndef != define: - error(filename, 0, 'build/header_guard', 5, - 'No #ifndef header guard found, suggested CPP variable is: %s' % - cppvar) - return - - # The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__ - # for backward compatibility. - if ifndef != cppvar: - error_level = 0 - if ifndef != cppvar + '_': - error_level = 5 - - ParseNolintSuppressions(filename, raw_lines[ifndef_linenum], ifndef_linenum, - error) - error(filename, ifndef_linenum, 'build/header_guard', error_level, - '#ifndef header guard has wrong style, please use: %s' % cppvar) - - # Check for "//" comments on endif line. - ParseNolintSuppressions(filename, raw_lines[endif_linenum], endif_linenum, - error) - match = Match(r'#endif\s*//\s*' + cppvar + r'(_)?\b', endif) - if match: - if match.group(1) == '_': - # Issue low severity warning for deprecated double trailing underscore - error(filename, endif_linenum, 'build/header_guard', 0, - '#endif line should be "#endif // %s"' % cppvar) - return - - # Didn't find the corresponding "//" comment. If this file does not - # contain any "//" comments at all, it could be that the compiler - # only wants "/**/" comments, look for those instead. - no_single_line_comments = True - for i in xrange(1, len(raw_lines) - 1): - line = raw_lines[i] - if Match(r'^(?:(?:\'(?:\.|[^\'])*\')|(?:"(?:\.|[^"])*")|[^\'"])*//', line): - no_single_line_comments = False - break - - if no_single_line_comments: - match = Match(r'#endif\s*/\*\s*' + cppvar + r'(_)?\s*\*/', endif) - if match: - if match.group(1) == '_': - # Low severity warning for double trailing underscore - error(filename, endif_linenum, 'build/header_guard', 0, - '#endif line should be "#endif /* %s */"' % cppvar) - return - - # Didn't find anything - error(filename, endif_linenum, 'build/header_guard', 5, - '#endif line should be "#endif // %s"' % cppvar) - - -def CheckHeaderFileIncluded(filename, include_state, error): - """Logs an error if a .cc file does not include its header.""" - - # Do not check test files - fileinfo = FileInfo(filename) - if Search(_TEST_FILE_SUFFIX, fileinfo.BaseName()): - return - - headerfile = filename[0:len(filename) - len(fileinfo.Extension())] + '.h' - if not os.path.exists(headerfile): - return - headername = FileInfo(headerfile).RepositoryName() - first_include = 0 - for section_list in include_state.include_list: - for f in section_list: - if headername in f[0] or f[0] in headername: - return - if not first_include: - first_include = f[1] - - error(filename, first_include, 'build/include', 5, - '%s should include its header file %s' % (fileinfo.RepositoryName(), - headername)) - - -def CheckForBadCharacters(filename, lines, error): - """Logs an error for each line containing bad characters. - - Two kinds of bad characters: - - 1. Unicode replacement characters: These indicate that either the file - contained invalid UTF-8 (likely) or Unicode replacement characters (which - it shouldn't). Note that it's possible for this to throw off line - numbering if the invalid UTF-8 occurred adjacent to a newline. - - 2. NUL bytes. These are problematic for some tools. - - Args: - filename: The name of the current file. - lines: An array of strings, each representing a line of the file. - error: The function to call with any errors found. - """ - for linenum, line in enumerate(lines): - if u'\ufffd' in line: - error(filename, linenum, 'readability/utf8', 5, - 'Line contains invalid UTF-8 (or Unicode replacement character).') - if '\0' in line: - error(filename, linenum, 'readability/nul', 5, 'Line contains NUL byte.') - - -def CheckForNewlineAtEOF(filename, lines, error): - """Logs an error if there is no newline char at the end of the file. - - Args: - filename: The name of the current file. - lines: An array of strings, each representing a line of the file. - error: The function to call with any errors found. - """ - - # The array lines() was created by adding two newlines to the - # original file (go figure), then splitting on \n. - # To verify that the file ends in \n, we just have to make sure the - # last-but-two element of lines() exists and is empty. - if len(lines) < 3 or lines[-2]: - error(filename, len(lines) - 2, 'whitespace/ending_newline', 5, - 'Could not find a newline character at the end of the file.') - - -def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): - """Logs an error if we see /* ... */ or "..." that extend past one line. - - /* ... */ comments are legit inside macros, for one line. - Otherwise, we prefer // comments, so it's ok to warn about the - other. Likewise, it's ok for strings to extend across multiple - lines, as long as a line continuation character (backslash) - terminates each line. Although not currently prohibited by the C++ - style guide, it's ugly and unnecessary. We don't do well with either - in this lint program, so we warn about both. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Remove all \\ (escaped backslashes) from the line. They are OK, and the - # second (escaped) slash may trigger later \" detection erroneously. - line = line.replace('\\\\', '') - - if line.count('/*') > line.count('*/'): - error(filename, linenum, 'readability/multiline_comment', 5, - 'Complex multi-line /*...*/-style comment found. ' - 'Lint may give bogus warnings. ' - 'Consider replacing these with //-style comments, ' - 'with #if 0...#endif, ' - 'or with more clearly structured multi-line comments.') - - if (line.count('"') - line.count('\\"')) % 2: - error(filename, linenum, 'readability/multiline_string', 5, - 'Multi-line string ("...") found. This lint script doesn\'t ' - 'do well with such strings, and may give bogus warnings. ' - 'Use C++11 raw strings or concatenation instead.') - - -# (non-threadsafe name, thread-safe alternative, validation pattern) -# -# The validation pattern is used to eliminate false positives such as: -# _rand(); // false positive due to substring match. -# ->rand(); // some member function rand(). -# ACMRandom rand(seed); // some variable named rand. -# ISAACRandom rand(); // another variable named rand. -# -# Basically we require the return value of these functions to be used -# in some expression context on the same line by matching on some -# operator before the function name. This eliminates constructors and -# member function calls. -_UNSAFE_FUNC_PREFIX = r'(?:[-+*/=%^&|(<]\s*|>\s+)' -_THREADING_LIST = ( - ('asctime(', 'asctime_r(', _UNSAFE_FUNC_PREFIX + r'asctime\([^)]+\)'), - ('ctime(', 'ctime_r(', _UNSAFE_FUNC_PREFIX + r'ctime\([^)]+\)'), - ('getgrgid(', 'getgrgid_r(', _UNSAFE_FUNC_PREFIX + r'getgrgid\([^)]+\)'), - ('getgrnam(', 'getgrnam_r(', _UNSAFE_FUNC_PREFIX + r'getgrnam\([^)]+\)'), - ('getlogin(', 'getlogin_r(', _UNSAFE_FUNC_PREFIX + r'getlogin\(\)'), - ('getpwnam(', 'getpwnam_r(', _UNSAFE_FUNC_PREFIX + r'getpwnam\([^)]+\)'), - ('getpwuid(', 'getpwuid_r(', _UNSAFE_FUNC_PREFIX + r'getpwuid\([^)]+\)'), - ('gmtime(', 'gmtime_r(', _UNSAFE_FUNC_PREFIX + r'gmtime\([^)]+\)'), - ('localtime(', 'localtime_r(', _UNSAFE_FUNC_PREFIX + r'localtime\([^)]+\)'), - ('rand(', 'rand_r(', _UNSAFE_FUNC_PREFIX + r'rand\(\)'), - ('strtok(', 'strtok_r(', - _UNSAFE_FUNC_PREFIX + r'strtok\([^)]+\)'), - ('ttyname(', 'ttyname_r(', _UNSAFE_FUNC_PREFIX + r'ttyname\([^)]+\)'), - ) - - -def CheckPosixThreading(filename, clean_lines, linenum, error): - """Checks for calls to thread-unsafe functions. - - Much code has been originally written without consideration of - multi-threading. Also, engineers are relying on their old experience; - they have learned posix before threading extensions were added. These - tests guide the engineers to use thread-safe functions (when using - posix directly). - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - for single_thread_func, multithread_safe_func, pattern in _THREADING_LIST: - # Additional pattern matching check to confirm that this is the - # function we are looking for - if Search(pattern, line): - error(filename, linenum, 'runtime/threadsafe_fn', 2, - 'Consider using ' + multithread_safe_func + - '...) instead of ' + single_thread_func + - '...) for improved thread safety.') - - -def CheckVlogArguments(filename, clean_lines, linenum, error): - """Checks that VLOG() is only used for defining a logging level. - - For example, VLOG(2) is correct. VLOG(INFO), VLOG(WARNING), VLOG(ERROR), and - VLOG(FATAL) are not. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - if Search(r'\bVLOG\((INFO|ERROR|WARNING|DFATAL|FATAL)\)', line): - error(filename, linenum, 'runtime/vlog', 5, - 'VLOG() should be used with numeric verbosity level. ' - 'Use LOG() if you want symbolic severity levels.') - -# Matches invalid increment: *count++, which moves pointer instead of -# incrementing a value. -_RE_PATTERN_INVALID_INCREMENT = re.compile( - r'^\s*\*\w+(\+\+|--);') - - -def CheckInvalidIncrement(filename, clean_lines, linenum, error): - """Checks for invalid increment *count++. - - For example following function: - void increment_counter(int* count) { - *count++; - } - is invalid, because it effectively does count++, moving pointer, and should - be replaced with ++*count, (*count)++ or *count += 1. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - if _RE_PATTERN_INVALID_INCREMENT.match(line): - error(filename, linenum, 'runtime/invalid_increment', 5, - 'Changing pointer instead of value (or unused value of operator*).') - - -def IsMacroDefinition(clean_lines, linenum): - if Search(r'^#define', clean_lines[linenum]): - return True - - if linenum > 0 and Search(r'\\$', clean_lines[linenum - 1]): - return True - - return False - - -def IsForwardClassDeclaration(clean_lines, linenum): - return Match(r'^\s*(\btemplate\b)*.*class\s+\w+;\s*$', clean_lines[linenum]) - - -class _BlockInfo(object): - """Stores information about a generic block of code.""" - - def __init__(self, linenum, seen_open_brace): - self.starting_linenum = linenum - self.seen_open_brace = seen_open_brace - self.open_parentheses = 0 - self.inline_asm = _NO_ASM - self.check_namespace_indentation = False - - def CheckBegin(self, filename, clean_lines, linenum, error): - """Run checks that applies to text up to the opening brace. - - This is mostly for checking the text after the class identifier - and the "{", usually where the base class is specified. For other - blocks, there isn't much to check, so we always pass. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - pass - - def CheckEnd(self, filename, clean_lines, linenum, error): - """Run checks that applies to text after the closing brace. - - This is mostly used for checking end of namespace comments. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - pass - - def IsBlockInfo(self): - """Returns true if this block is a _BlockInfo. - - This is convenient for verifying that an object is an instance of - a _BlockInfo, but not an instance of any of the derived classes. - - Returns: - True for this class, False for derived classes. - """ - return self.__class__ == _BlockInfo - - -class _ExternCInfo(_BlockInfo): - """Stores information about an 'extern "C"' block.""" - - def __init__(self, linenum): - _BlockInfo.__init__(self, linenum, True) - - -class _ClassInfo(_BlockInfo): - """Stores information about a class.""" - - def __init__(self, name, class_or_struct, clean_lines, linenum): - _BlockInfo.__init__(self, linenum, False) - self.name = name - self.is_derived = False - self.check_namespace_indentation = True - if class_or_struct == 'struct': - self.access = 'public' - self.is_struct = True - else: - self.access = 'private' - self.is_struct = False - - # Remember initial indentation level for this class. Using raw_lines here - # instead of elided to account for leading comments. - self.class_indent = GetIndentLevel(clean_lines.raw_lines[linenum]) - - # Try to find the end of the class. This will be confused by things like: - # class A { - # } *x = { ... - # - # But it's still good enough for CheckSectionSpacing. - self.last_line = 0 - depth = 0 - for i in range(linenum, clean_lines.NumLines()): - line = clean_lines.elided[i] - depth += line.count('{') - line.count('}') - if not depth: - self.last_line = i - break - - def CheckBegin(self, filename, clean_lines, linenum, error): - # Look for a bare ':' - if Search('(^|[^:]):($|[^:])', clean_lines.elided[linenum]): - self.is_derived = True - - def CheckEnd(self, filename, clean_lines, linenum, error): - # If there is a DISALLOW macro, it should appear near the end of - # the class. - seen_last_thing_in_class = False - for i in xrange(linenum - 1, self.starting_linenum, -1): - match = Search( - r'\b(DISALLOW_COPY_AND_ASSIGN|DISALLOW_IMPLICIT_CONSTRUCTORS)\(' + - self.name + r'\)', - clean_lines.elided[i]) - if match: - if seen_last_thing_in_class: - error(filename, i, 'readability/constructors', 3, - match.group(1) + ' should be the last thing in the class') - break - - if not Match(r'^\s*$', clean_lines.elided[i]): - seen_last_thing_in_class = True - - # Check that closing brace is aligned with beginning of the class. - # Only do this if the closing brace is indented by only whitespaces. - # This means we will not check single-line class definitions. - indent = Match(r'^( *)\}', clean_lines.elided[linenum]) - if indent and len(indent.group(1)) != self.class_indent: - if self.is_struct: - parent = 'struct ' + self.name - else: - parent = 'class ' + self.name - error(filename, linenum, 'whitespace/indent', 3, - 'Closing brace should be aligned with beginning of %s' % parent) - - -class _NamespaceInfo(_BlockInfo): - """Stores information about a namespace.""" - - def __init__(self, name, linenum): - _BlockInfo.__init__(self, linenum, False) - self.name = name or '' - self.check_namespace_indentation = True - - def CheckEnd(self, filename, clean_lines, linenum, error): - """Check end of namespace comments.""" - line = clean_lines.raw_lines[linenum] - - # Check how many lines is enclosed in this namespace. Don't issue - # warning for missing namespace comments if there aren't enough - # lines. However, do apply checks if there is already an end of - # namespace comment and it's incorrect. - # - # TODO(unknown): We always want to check end of namespace comments - # if a namespace is large, but sometimes we also want to apply the - # check if a short namespace contained nontrivial things (something - # other than forward declarations). There is currently no logic on - # deciding what these nontrivial things are, so this check is - # triggered by namespace size only, which works most of the time. - if (linenum - self.starting_linenum < 10 - and not Match(r'^\s*};*\s*(//|/\*).*\bnamespace\b', line)): - return - - # Look for matching comment at end of namespace. - # - # Note that we accept C style "/* */" comments for terminating - # namespaces, so that code that terminate namespaces inside - # preprocessor macros can be cpplint clean. - # - # We also accept stuff like "// end of namespace ." with the - # period at the end. - # - # Besides these, we don't accept anything else, otherwise we might - # get false negatives when existing comment is a substring of the - # expected namespace. - if self.name: - # Named namespace - if not Match((r'^\s*};*\s*(//|/\*).*\bnamespace\s+' + - re.escape(self.name) + r'[\*/\.\\\s]*$'), - line): - error(filename, linenum, 'readability/namespace', 5, - 'Namespace should be terminated with "// namespace %s"' % - self.name) - else: - # Anonymous namespace - if not Match(r'^\s*};*\s*(//|/\*).*\bnamespace[\*/\.\\\s]*$', line): - # If "// namespace anonymous" or "// anonymous namespace (more text)", - # mention "// anonymous namespace" as an acceptable form - if Match(r'^\s*}.*\b(namespace anonymous|anonymous namespace)\b', line): - error(filename, linenum, 'readability/namespace', 5, - 'Anonymous namespace should be terminated with "// namespace"' - ' or "// anonymous namespace"') - else: - error(filename, linenum, 'readability/namespace', 5, - 'Anonymous namespace should be terminated with "// namespace"') - - -class _PreprocessorInfo(object): - """Stores checkpoints of nesting stacks when #if/#else is seen.""" - - def __init__(self, stack_before_if): - # The entire nesting stack before #if - self.stack_before_if = stack_before_if - - # The entire nesting stack up to #else - self.stack_before_else = [] - - # Whether we have already seen #else or #elif - self.seen_else = False - - -class NestingState(object): - """Holds states related to parsing braces.""" - - def __init__(self): - # Stack for tracking all braces. An object is pushed whenever we - # see a "{", and popped when we see a "}". Only 3 types of - # objects are possible: - # - _ClassInfo: a class or struct. - # - _NamespaceInfo: a namespace. - # - _BlockInfo: some other type of block. - self.stack = [] - - # Top of the previous stack before each Update(). - # - # Because the nesting_stack is updated at the end of each line, we - # had to do some convoluted checks to find out what is the current - # scope at the beginning of the line. This check is simplified by - # saving the previous top of nesting stack. - # - # We could save the full stack, but we only need the top. Copying - # the full nesting stack would slow down cpplint by ~10%. - self.previous_stack_top = [] - - # Stack of _PreprocessorInfo objects. - self.pp_stack = [] - - def SeenOpenBrace(self): - """Check if we have seen the opening brace for the innermost block. - - Returns: - True if we have seen the opening brace, False if the innermost - block is still expecting an opening brace. - """ - return (not self.stack) or self.stack[-1].seen_open_brace - - def InNamespaceBody(self): - """Check if we are currently one level inside a namespace body. - - Returns: - True if top of the stack is a namespace block, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _NamespaceInfo) - - def InExternC(self): - """Check if we are currently one level inside an 'extern "C"' block. - - Returns: - True if top of the stack is an extern block, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _ExternCInfo) - - def InClassDeclaration(self): - """Check if we are currently one level inside a class or struct declaration. - - Returns: - True if top of the stack is a class/struct, False otherwise. - """ - return self.stack and isinstance(self.stack[-1], _ClassInfo) - - def InAsmBlock(self): - """Check if we are currently one level inside an inline ASM block. - - Returns: - True if the top of the stack is a block containing inline ASM. - """ - return self.stack and self.stack[-1].inline_asm != _NO_ASM - - def InTemplateArgumentList(self, clean_lines, linenum, pos): - """Check if current position is inside template argument list. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - pos: position just after the suspected template argument. - Returns: - True if (linenum, pos) is inside template arguments. - """ - while linenum < clean_lines.NumLines(): - # Find the earliest character that might indicate a template argument - line = clean_lines.elided[linenum] - match = Match(r'^[^{};=\[\]\.<>]*(.)', line[pos:]) - if not match: - linenum += 1 - pos = 0 - continue - token = match.group(1) - pos += len(match.group(0)) - - # These things do not look like template argument list: - # class Suspect { - # class Suspect x; } - if token in ('{', '}', ';'): return False - - # These things look like template argument list: - # template - # template - # template - # template - if token in ('>', '=', '[', ']', '.'): return True - - # Check if token is an unmatched '<'. - # If not, move on to the next character. - if token != '<': - pos += 1 - if pos >= len(line): - linenum += 1 - pos = 0 - continue - - # We can't be sure if we just find a single '<', and need to - # find the matching '>'. - (_, end_line, end_pos) = CloseExpression(clean_lines, linenum, pos - 1) - if end_pos < 0: - # Not sure if template argument list or syntax error in file - return False - linenum = end_line - pos = end_pos - return False - - def UpdatePreprocessor(self, line): - """Update preprocessor stack. - - We need to handle preprocessors due to classes like this: - #ifdef SWIG - struct ResultDetailsPageElementExtensionPoint { - #else - struct ResultDetailsPageElementExtensionPoint : public Extension { - #endif - - We make the following assumptions (good enough for most files): - - Preprocessor condition evaluates to true from #if up to first - #else/#elif/#endif. - - - Preprocessor condition evaluates to false from #else/#elif up - to #endif. We still perform lint checks on these lines, but - these do not affect nesting stack. - - Args: - line: current line to check. - """ - if Match(r'^\s*#\s*(if|ifdef|ifndef)\b', line): - # Beginning of #if block, save the nesting stack here. The saved - # stack will allow us to restore the parsing state in the #else case. - self.pp_stack.append(_PreprocessorInfo(copy.deepcopy(self.stack))) - elif Match(r'^\s*#\s*(else|elif)\b', line): - # Beginning of #else block - if self.pp_stack: - if not self.pp_stack[-1].seen_else: - # This is the first #else or #elif block. Remember the - # whole nesting stack up to this point. This is what we - # keep after the #endif. - self.pp_stack[-1].seen_else = True - self.pp_stack[-1].stack_before_else = copy.deepcopy(self.stack) - - # Restore the stack to how it was before the #if - self.stack = copy.deepcopy(self.pp_stack[-1].stack_before_if) - else: - # TODO(unknown): unexpected #else, issue warning? - pass - elif Match(r'^\s*#\s*endif\b', line): - # End of #if or #else blocks. - if self.pp_stack: - # If we saw an #else, we will need to restore the nesting - # stack to its former state before the #else, otherwise we - # will just continue from where we left off. - if self.pp_stack[-1].seen_else: - # Here we can just use a shallow copy since we are the last - # reference to it. - self.stack = self.pp_stack[-1].stack_before_else - # Drop the corresponding #if - self.pp_stack.pop() - else: - # TODO(unknown): unexpected #endif, issue warning? - pass - - # TODO(unknown): Update() is too long, but we will refactor later. - def Update(self, filename, clean_lines, linenum, error): - """Update nesting state with current line. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Remember top of the previous nesting stack. - # - # The stack is always pushed/popped and not modified in place, so - # we can just do a shallow copy instead of copy.deepcopy. Using - # deepcopy would slow down cpplint by ~28%. - if self.stack: - self.previous_stack_top = self.stack[-1] - else: - self.previous_stack_top = None - - # Update pp_stack - self.UpdatePreprocessor(line) - - # Count parentheses. This is to avoid adding struct arguments to - # the nesting stack. - if self.stack: - inner_block = self.stack[-1] - depth_change = line.count('(') - line.count(')') - inner_block.open_parentheses += depth_change - - # Also check if we are starting or ending an inline assembly block. - if inner_block.inline_asm in (_NO_ASM, _END_ASM): - if (depth_change != 0 and - inner_block.open_parentheses == 1 and - _MATCH_ASM.match(line)): - # Enter assembly block - inner_block.inline_asm = _INSIDE_ASM - else: - # Not entering assembly block. If previous line was _END_ASM, - # we will now shift to _NO_ASM state. - inner_block.inline_asm = _NO_ASM - elif (inner_block.inline_asm == _INSIDE_ASM and - inner_block.open_parentheses == 0): - # Exit assembly block - inner_block.inline_asm = _END_ASM - - # Consume namespace declaration at the beginning of the line. Do - # this in a loop so that we catch same line declarations like this: - # namespace proto2 { namespace bridge { class MessageSet; } } - while True: - # Match start of namespace. The "\b\s*" below catches namespace - # declarations even if it weren't followed by a whitespace, this - # is so that we don't confuse our namespace checker. The - # missing spaces will be flagged by CheckSpacing. - namespace_decl_match = Match(r'^\s*namespace\b\s*([:\w]+)?(.*)$', line) - if not namespace_decl_match: - break - - new_namespace = _NamespaceInfo(namespace_decl_match.group(1), linenum) - self.stack.append(new_namespace) - - line = namespace_decl_match.group(2) - if line.find('{') != -1: - new_namespace.seen_open_brace = True - line = line[line.find('{') + 1:] - - # Look for a class declaration in whatever is left of the line - # after parsing namespaces. The regexp accounts for decorated classes - # such as in: - # class LOCKABLE API Object { - # }; - class_decl_match = Match( - r'^(\s*(?:template\s*<[\w\s<>,:]*>\s*)?' - r'(class|struct)\s+(?:[A-Z_]+\s+)*(\w+(?:::\w+)*))' - r'(.*)$', line) - if (class_decl_match and - (not self.stack or self.stack[-1].open_parentheses == 0)): - # We do not want to accept classes that are actually template arguments: - # template , - # template class Ignore3> - # void Function() {}; - # - # To avoid template argument cases, we scan forward and look for - # an unmatched '>'. If we see one, assume we are inside a - # template argument list. - end_declaration = len(class_decl_match.group(1)) - if not self.InTemplateArgumentList(clean_lines, linenum, end_declaration): - self.stack.append(_ClassInfo( - class_decl_match.group(3), class_decl_match.group(2), - clean_lines, linenum)) - line = class_decl_match.group(4) - - # If we have not yet seen the opening brace for the innermost block, - # run checks here. - if not self.SeenOpenBrace(): - self.stack[-1].CheckBegin(filename, clean_lines, linenum, error) - - # Update access control if we are inside a class/struct - if self.stack and isinstance(self.stack[-1], _ClassInfo): - classinfo = self.stack[-1] - access_match = Match( - r'^(.*)\b(public|private|protected|signals)(\s+(?:slots\s*)?)?' - r':(?:[^:]|$)', - line) - if access_match: - classinfo.access = access_match.group(2) - - # Check that access keywords are indented +1 space. Skip this - # check if the keywords are not preceded by whitespaces. - indent = access_match.group(1) - if (len(indent) != classinfo.class_indent + 1 and - Match(r'^\s*$', indent)): - if classinfo.is_struct: - parent = 'struct ' + classinfo.name - else: - parent = 'class ' + classinfo.name - slots = '' - if access_match.group(3): - slots = access_match.group(3) - error(filename, linenum, 'whitespace/indent', 3, - '%s%s: should be indented +1 space inside %s' % ( - access_match.group(2), slots, parent)) - - # Consume braces or semicolons from what's left of the line - while True: - # Match first brace, semicolon, or closed parenthesis. - matched = Match(r'^[^{;)}]*([{;)}])(.*)$', line) - if not matched: - break - - token = matched.group(1) - if token == '{': - # If namespace or class hasn't seen a opening brace yet, mark - # namespace/class head as complete. Push a new block onto the - # stack otherwise. - if not self.SeenOpenBrace(): - self.stack[-1].seen_open_brace = True - elif Match(r'^extern\s*"[^"]*"\s*\{', line): - self.stack.append(_ExternCInfo(linenum)) - else: - self.stack.append(_BlockInfo(linenum, True)) - if _MATCH_ASM.match(line): - self.stack[-1].inline_asm = _BLOCK_ASM - - elif token == ';' or token == ')': - # If we haven't seen an opening brace yet, but we already saw - # a semicolon, this is probably a forward declaration. Pop - # the stack for these. - # - # Similarly, if we haven't seen an opening brace yet, but we - # already saw a closing parenthesis, then these are probably - # function arguments with extra "class" or "struct" keywords. - # Also pop these stack for these. - if not self.SeenOpenBrace(): - self.stack.pop() - else: # token == '}' - # Perform end of block checks and pop the stack. - if self.stack: - self.stack[-1].CheckEnd(filename, clean_lines, linenum, error) - self.stack.pop() - line = matched.group(2) - - def InnermostClass(self): - """Get class info on the top of the stack. - - Returns: - A _ClassInfo object if we are inside a class, or None otherwise. - """ - for i in range(len(self.stack), 0, -1): - classinfo = self.stack[i - 1] - if isinstance(classinfo, _ClassInfo): - return classinfo - return None - - def CheckCompletedBlocks(self, filename, error): - """Checks that all classes and namespaces have been completely parsed. - - Call this when all lines in a file have been processed. - Args: - filename: The name of the current file. - error: The function to call with any errors found. - """ - # Note: This test can result in false positives if #ifdef constructs - # get in the way of brace matching. See the testBuildClass test in - # cpplint_unittest.py for an example of this. - for obj in self.stack: - if isinstance(obj, _ClassInfo): - error(filename, obj.starting_linenum, 'build/class', 5, - 'Failed to find complete declaration of class %s' % - obj.name) - elif isinstance(obj, _NamespaceInfo): - error(filename, obj.starting_linenum, 'build/namespaces', 5, - 'Failed to find complete declaration of namespace %s' % - obj.name) - - -def CheckForNonStandardConstructs(filename, clean_lines, linenum, - nesting_state, error): - r"""Logs an error if we see certain non-ANSI constructs ignored by gcc-2. - - Complain about several constructs which gcc-2 accepts, but which are - not standard C++. Warning about these in lint is one way to ease the - transition to new compilers. - - put storage class first (e.g. "static const" instead of "const static"). - - "%lld" instead of %qd" in printf-type functions. - - "%1$d" is non-standard in printf-type functions. - - "\%" is an undefined character escape sequence. - - text after #endif is not allowed. - - invalid inner-style forward declaration. - - >? and ?= and )\?=?\s*(\w+|[+-]?\d+)(\.\d*)?', - line): - error(filename, linenum, 'build/deprecated', 3, - '>? and ))?' - # r'\s*const\s*' + type_name + '\s*&\s*\w+\s*;' - error(filename, linenum, 'runtime/member_string_references', 2, - 'const string& members are dangerous. It is much better to use ' - 'alternatives, such as pointers or simple constants.') - - # Everything else in this function operates on class declarations. - # Return early if the top of the nesting stack is not a class, or if - # the class head is not completed yet. - classinfo = nesting_state.InnermostClass() - if not classinfo or not classinfo.seen_open_brace: - return - - # The class may have been declared with namespace or classname qualifiers. - # The constructor and destructor will not have those qualifiers. - base_classname = classinfo.name.split('::')[-1] - - # Look for single-argument constructors that aren't marked explicit. - # Technically a valid construct, but against style. - explicit_constructor_match = Match( - r'\s+(?:(?:inline|constexpr)\s+)*(explicit\s+)?' - r'(?:(?:inline|constexpr)\s+)*%s\s*' - r'\(((?:[^()]|\([^()]*\))*)\)' - % re.escape(base_classname), - line) - - if explicit_constructor_match: - is_marked_explicit = explicit_constructor_match.group(1) - - if not explicit_constructor_match.group(2): - constructor_args = [] - else: - constructor_args = explicit_constructor_match.group(2).split(',') - - # collapse arguments so that commas in template parameter lists and function - # argument parameter lists don't split arguments in two - i = 0 - while i < len(constructor_args): - constructor_arg = constructor_args[i] - while (constructor_arg.count('<') > constructor_arg.count('>') or - constructor_arg.count('(') > constructor_arg.count(')')): - constructor_arg += ',' + constructor_args[i + 1] - del constructor_args[i + 1] - constructor_args[i] = constructor_arg - i += 1 - - defaulted_args = [arg for arg in constructor_args if '=' in arg] - noarg_constructor = (not constructor_args or # empty arg list - # 'void' arg specifier - (len(constructor_args) == 1 and - constructor_args[0].strip() == 'void')) - onearg_constructor = ((len(constructor_args) == 1 and # exactly one arg - not noarg_constructor) or - # all but at most one arg defaulted - (len(constructor_args) >= 1 and - not noarg_constructor and - len(defaulted_args) >= len(constructor_args) - 1)) - initializer_list_constructor = bool( - onearg_constructor and - Search(r'\bstd\s*::\s*initializer_list\b', constructor_args[0])) - copy_constructor = bool( - onearg_constructor and - Match(r'(const\s+)?%s(\s*<[^>]*>)?(\s+const)?\s*(?:<\w+>\s*)?&' - % re.escape(base_classname), constructor_args[0].strip())) - - if (not is_marked_explicit and - onearg_constructor and - not initializer_list_constructor and - not copy_constructor): - if defaulted_args: - error(filename, linenum, 'runtime/explicit', 5, - 'Constructors callable with one argument ' - 'should be marked explicit.') - else: - error(filename, linenum, 'runtime/explicit', 5, - 'Single-parameter constructors should be marked explicit.') - elif is_marked_explicit and not onearg_constructor: - if noarg_constructor: - error(filename, linenum, 'runtime/explicit', 5, - 'Zero-parameter constructors should not be marked explicit.') - - -def CheckSpacingForFunctionCall(filename, clean_lines, linenum, error): - """Checks for the correctness of various spacing around function calls. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Since function calls often occur inside if/for/while/switch - # expressions - which have their own, more liberal conventions - we - # first see if we should be looking inside such an expression for a - # function call, to which we can apply more strict standards. - fncall = line # if there's no control flow construct, look at whole line - for pattern in (r'\bif\s*\((.*)\)\s*{', - r'\bfor\s*\((.*)\)\s*{', - r'\bwhile\s*\((.*)\)\s*[{;]', - r'\bswitch\s*\((.*)\)\s*{'): - match = Search(pattern, line) - if match: - fncall = match.group(1) # look inside the parens for function calls - break - - # Except in if/for/while/switch, there should never be space - # immediately inside parens (eg "f( 3, 4 )"). We make an exception - # for nested parens ( (a+b) + c ). Likewise, there should never be - # a space before a ( when it's a function argument. I assume it's a - # function argument when the char before the whitespace is legal in - # a function name (alnum + _) and we're not starting a macro. Also ignore - # pointers and references to arrays and functions coz they're too tricky: - # we use a very simple way to recognize these: - # " (something)(maybe-something)" or - # " (something)(maybe-something," or - # " (something)[something]" - # Note that we assume the contents of [] to be short enough that - # they'll never need to wrap. - if ( # Ignore control structures. - not Search(r'\b(if|for|while|switch|return|new|delete|catch|sizeof)\b', - fncall) and - # Ignore pointers/references to functions. - not Search(r' \([^)]+\)\([^)]*(\)|,$)', fncall) and - # Ignore pointers/references to arrays. - not Search(r' \([^)]+\)\[[^\]]+\]', fncall)): - if Search(r'\w\s*\(\s(?!\s*\\$)', fncall): # a ( used for a fn call - error(filename, linenum, 'whitespace/parens', 4, - 'Extra space after ( in function call') - elif Search(r'\(\s+(?!(\s*\\)|\()', fncall): - error(filename, linenum, 'whitespace/parens', 2, - 'Extra space after (') - if (Search(r'\w\s+\(', fncall) and - not Search(r'_{0,2}asm_{0,2}\s+_{0,2}volatile_{0,2}\s+\(', fncall) and - not Search(r'#\s*define|typedef|using\s+\w+\s*=', fncall) and - not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall) and - not Search(r'\bcase\s+\(', fncall)): - # TODO(unknown): Space after an operator function seem to be a common - # error, silence those for now by restricting them to highest verbosity. - if Search(r'\boperator_*\b', line): - error(filename, linenum, 'whitespace/parens', 0, - 'Extra space before ( in function call') - else: - error(filename, linenum, 'whitespace/parens', 4, - 'Extra space before ( in function call') - # If the ) is followed only by a newline or a { + newline, assume it's - # part of a control statement (if/while/etc), and don't complain - if Search(r'[^)]\s+\)\s*[^{\s]', fncall): - # If the closing parenthesis is preceded by only whitespaces, - # try to give a more descriptive error message. - if Search(r'^\s+\)', fncall): - error(filename, linenum, 'whitespace/parens', 2, - 'Closing ) should be moved to the previous line') - else: - error(filename, linenum, 'whitespace/parens', 2, - 'Extra space before )') - - -def IsBlankLine(line): - """Returns true if the given line is blank. - - We consider a line to be blank if the line is empty or consists of - only white spaces. - - Args: - line: A line of a string. - - Returns: - True, if the given line is blank. - """ - return not line or line.isspace() - - -def CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, - error): - is_namespace_indent_item = ( - len(nesting_state.stack) > 1 and - nesting_state.stack[-1].check_namespace_indentation and - isinstance(nesting_state.previous_stack_top, _NamespaceInfo) and - nesting_state.previous_stack_top == nesting_state.stack[-2]) - - if ShouldCheckNamespaceIndentation(nesting_state, is_namespace_indent_item, - clean_lines.elided, line): - CheckItemIndentationInNamespace(filename, clean_lines.elided, - line, error) - - -def CheckForFunctionLengths(filename, clean_lines, linenum, - function_state, error): - """Reports for long function bodies. - - For an overview why this is done, see: - https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions - - Uses a simplistic algorithm assuming other style guidelines - (especially spacing) are followed. - Only checks unindented functions, so class members are unchecked. - Trivial bodies are unchecked, so constructors with huge initializer lists - may be missed. - Blank/comment lines are not counted so as to avoid encouraging the removal - of vertical space and comments just to get through a lint check. - NOLINT *on the last line of a function* disables this check. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - function_state: Current function name and lines in body so far. - error: The function to call with any errors found. - """ - lines = clean_lines.lines - line = lines[linenum] - joined_line = '' - - starting_func = False - regexp = r'(\w(\w|::|\*|\&|\s)*)\(' # decls * & space::name( ... - match_result = Match(regexp, line) - if match_result: - # If the name is all caps and underscores, figure it's a macro and - # ignore it, unless it's TEST or TEST_F. - function_name = match_result.group(1).split()[-1] - if function_name == 'TEST' or function_name == 'TEST_F' or ( - not Match(r'[A-Z_]+$', function_name)): - starting_func = True - - if starting_func: - body_found = False - for start_linenum in xrange(linenum, clean_lines.NumLines()): - start_line = lines[start_linenum] - joined_line += ' ' + start_line.lstrip() - if Search(r'(;|})', start_line): # Declarations and trivial functions - body_found = True - break # ... ignore - elif Search(r'{', start_line): - body_found = True - function = Search(r'((\w|:)*)\(', line).group(1) - if Match(r'TEST', function): # Handle TEST... macros - parameter_regexp = Search(r'(\(.*\))', joined_line) - if parameter_regexp: # Ignore bad syntax - function += parameter_regexp.group(1) - else: - function += '()' - function_state.Begin(function) - break - if not body_found: - # No body for the function (or evidence of a non-function) was found. - error(filename, linenum, 'readability/fn_size', 5, - 'Lint failed to find start of function body.') - elif Match(r'^\}\s*$', line): # function end - function_state.Check(error, filename, linenum) - function_state.End() - elif not Match(r'^\s*$', line): - function_state.Count() # Count non-blank/non-comment lines. - - -_RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?') - - -def CheckComment(line, filename, linenum, next_line_start, error): - """Checks for common mistakes in comments. - - Args: - line: The line in question. - filename: The name of the current file. - linenum: The number of the line to check. - next_line_start: The first non-whitespace column of the next line. - error: The function to call with any errors found. - """ - commentpos = line.find('//') - if commentpos != -1: - # Check if the // may be in quotes. If so, ignore it - if re.sub(r'\\.', '', line[0:commentpos]).count('"') % 2 == 0: - # Allow one space for new scopes, two spaces otherwise: - if (not (Match(r'^.*{ *//', line) and next_line_start == commentpos) and - ((commentpos >= 1 and - line[commentpos-1] not in string.whitespace) or - (commentpos >= 2 and - line[commentpos-2] not in string.whitespace))): - error(filename, linenum, 'whitespace/comments', 2, - 'At least two spaces is best between code and comments') - - # Checks for common mistakes in TODO comments. - comment = line[commentpos:] - match = _RE_PATTERN_TODO.match(comment) - if match: - # One whitespace is correct; zero whitespace is handled elsewhere. - leading_whitespace = match.group(1) - if len(leading_whitespace) > 1: - error(filename, linenum, 'whitespace/todo', 2, - 'Too many spaces before TODO') - - username = match.group(2) - if not username: - error(filename, linenum, 'readability/todo', 2, - 'Missing username in TODO; it should look like ' - '"// TODO(my_username): Stuff."') - - middle_whitespace = match.group(3) - # Comparisons made explicit for correctness -- pylint: disable=g-explicit-bool-comparison - if middle_whitespace != ' ' and middle_whitespace != '': - error(filename, linenum, 'whitespace/todo', 2, - 'TODO(my_username) should be followed by a space') - - # If the comment contains an alphanumeric character, there - # should be a space somewhere between it and the // unless - # it's a /// or //! Doxygen comment. - if (Match(r'//[^ ]*\w', comment) and - not Match(r'(///|//\!)(\s+|$)', comment)): - error(filename, linenum, 'whitespace/comments', 4, - 'Should have a space between // and comment') - - -def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): - """Checks for the correctness of various spacing issues in the code. - - Things we check for: spaces around operators, spaces after - if/for/while/switch, no spaces around parens in function calls, two - spaces between code and comment, don't start a block with a blank - line, don't end a function with a blank line, don't add a blank line - after public/protected/private, don't have too many blank lines in a row. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - - # Don't use "elided" lines here, otherwise we can't check commented lines. - # Don't want to use "raw" either, because we don't want to check inside C++11 - # raw strings, - raw = clean_lines.lines_without_raw_strings - line = raw[linenum] - - # Before nixing comments, check if the line is blank for no good - # reason. This includes the first line after a block is opened, and - # blank lines at the end of a function (ie, right before a line like '}' - # - # Skip all the blank line checks if we are immediately inside a - # namespace body. In other words, don't issue blank line warnings - # for this block: - # namespace { - # - # } - # - # A warning about missing end of namespace comments will be issued instead. - # - # Also skip blank line checks for 'extern "C"' blocks, which are formatted - # like namespaces. - if (IsBlankLine(line) and - not nesting_state.InNamespaceBody() and - not nesting_state.InExternC()): - elided = clean_lines.elided - prev_line = elided[linenum - 1] - prevbrace = prev_line.rfind('{') - # TODO(unknown): Don't complain if line before blank line, and line after, - # both start with alnums and are indented the same amount. - # This ignores whitespace at the start of a namespace block - # because those are not usually indented. - if prevbrace != -1 and prev_line[prevbrace:].find('}') == -1: - # OK, we have a blank line at the start of a code block. Before we - # complain, we check if it is an exception to the rule: The previous - # non-empty line has the parameters of a function header that are indented - # 4 spaces (because they did not fit in a 80 column line when placed on - # the same line as the function name). We also check for the case where - # the previous line is indented 6 spaces, which may happen when the - # initializers of a constructor do not fit into a 80 column line. - exception = False - if Match(r' {6}\w', prev_line): # Initializer list? - # We are looking for the opening column of initializer list, which - # should be indented 4 spaces to cause 6 space indentation afterwards. - search_position = linenum-2 - while (search_position >= 0 - and Match(r' {6}\w', elided[search_position])): - search_position -= 1 - exception = (search_position >= 0 - and elided[search_position][:5] == ' :') - else: - # Search for the function arguments or an initializer list. We use a - # simple heuristic here: If the line is indented 4 spaces; and we have a - # closing paren, without the opening paren, followed by an opening brace - # or colon (for initializer lists) we assume that it is the last line of - # a function header. If we have a colon indented 4 spaces, it is an - # initializer list. - exception = (Match(r' {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)', - prev_line) - or Match(r' {4}:', prev_line)) - - if not exception: - error(filename, linenum, 'whitespace/blank_line', 2, - 'Redundant blank line at the start of a code block ' - 'should be deleted.') - # Ignore blank lines at the end of a block in a long if-else - # chain, like this: - # if (condition1) { - # // Something followed by a blank line - # - # } else if (condition2) { - # // Something else - # } - if linenum + 1 < clean_lines.NumLines(): - next_line = raw[linenum + 1] - if (next_line - and Match(r'\s*}', next_line) - and next_line.find('} else ') == -1): - error(filename, linenum, 'whitespace/blank_line', 3, - 'Redundant blank line at the end of a code block ' - 'should be deleted.') - - matched = Match(r'\s*(public|protected|private):', prev_line) - if matched: - error(filename, linenum, 'whitespace/blank_line', 3, - 'Do not leave a blank line after "%s:"' % matched.group(1)) - - # Next, check comments - next_line_start = 0 - if linenum + 1 < clean_lines.NumLines(): - next_line = raw[linenum + 1] - next_line_start = len(next_line) - len(next_line.lstrip()) - CheckComment(line, filename, linenum, next_line_start, error) - - # get rid of comments and strings - line = clean_lines.elided[linenum] - - # You shouldn't have spaces before your brackets, except maybe after - # 'delete []' or 'return []() {};' - if Search(r'\w\s+\[', line) and not Search(r'(?:delete|return)\s+\[', line): - error(filename, linenum, 'whitespace/braces', 5, - 'Extra space before [') - - # In range-based for, we wanted spaces before and after the colon, but - # not around "::" tokens that might appear. - if (Search(r'for *\(.*[^:]:[^: ]', line) or - Search(r'for *\(.*[^: ]:[^:]', line)): - error(filename, linenum, 'whitespace/forcolon', 2, - 'Missing space around colon in range-based for loop') - - -def CheckOperatorSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing around operators. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Don't try to do spacing checks for operator methods. Do this by - # replacing the troublesome characters with something else, - # preserving column position for all other characters. - # - # The replacement is done repeatedly to avoid false positives from - # operators that call operators. - while True: - match = Match(r'^(.*\boperator\b)(\S+)(\s*\(.*)$', line) - if match: - line = match.group(1) + ('_' * len(match.group(2))) + match.group(3) - else: - break - - # We allow no-spaces around = within an if: "if ( (a=Foo()) == 0 )". - # Otherwise not. Note we only check for non-spaces on *both* sides; - # sometimes people put non-spaces on one side when aligning ='s among - # many lines (not that this is behavior that I approve of...) - if ((Search(r'[\w.]=', line) or - Search(r'=[\w.]', line)) - and not Search(r'\b(if|while|for) ', line) - # Operators taken from [lex.operators] in C++11 standard. - and not Search(r'(>=|<=|==|!=|&=|\^=|\|=|\+=|\*=|\/=|\%=)', line) - and not Search(r'operator=', line)): - error(filename, linenum, 'whitespace/operators', 4, - 'Missing spaces around =') - - # It's ok not to have spaces around binary operators like + - * /, but if - # there's too little whitespace, we get concerned. It's hard to tell, - # though, so we punt on this one for now. TODO. - - # You should always have whitespace around binary operators. - # - # Check <= and >= first to avoid false positives with < and >, then - # check non-include lines for spacing around < and >. - # - # If the operator is followed by a comma, assume it's be used in a - # macro context and don't do any checks. This avoids false - # positives. - # - # Note that && is not included here. This is because there are too - # many false positives due to RValue references. - match = Search(r'[^<>=!\s](==|!=|<=|>=|\|\|)[^<>=!\s,;\)]', line) - if match: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around %s' % match.group(1)) - elif not Match(r'#.*include', line): - # Look for < that is not surrounded by spaces. This is only - # triggered if both sides are missing spaces, even though - # technically should should flag if at least one side is missing a - # space. This is done to avoid some false positives with shifts. - match = Match(r'^(.*[^\s<])<[^\s=<,]', line) - if match: - (_, _, end_pos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - if end_pos <= -1: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around <') - - # Look for > that is not surrounded by spaces. Similar to the - # above, we only trigger if both sides are missing spaces to avoid - # false positives with shifts. - match = Match(r'^(.*[^-\s>])>[^\s=>,]', line) - if match: - (_, _, start_pos) = ReverseCloseExpression( - clean_lines, linenum, len(match.group(1))) - if start_pos <= -1: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around >') - - # We allow no-spaces around << when used like this: 10<<20, but - # not otherwise (particularly, not when used as streams) - # - # We also allow operators following an opening parenthesis, since - # those tend to be macros that deal with operators. - match = Search(r'(operator|[^\s(<])(?:L|UL|LL|ULL|l|ul|ll|ull)?<<([^\s,=<])', line) - if (match and not (match.group(1).isdigit() and match.group(2).isdigit()) and - not (match.group(1) == 'operator' and match.group(2) == ';')): - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around <<') - - # We allow no-spaces around >> for almost anything. This is because - # C++11 allows ">>" to close nested templates, which accounts for - # most cases when ">>" is not followed by a space. - # - # We still warn on ">>" followed by alpha character, because that is - # likely due to ">>" being used for right shifts, e.g.: - # value >> alpha - # - # When ">>" is used to close templates, the alphanumeric letter that - # follows would be part of an identifier, and there should still be - # a space separating the template type and the identifier. - # type> alpha - match = Search(r'>>[a-zA-Z_]', line) - if match: - error(filename, linenum, 'whitespace/operators', 3, - 'Missing spaces around >>') - - # There shouldn't be space around unary operators - match = Search(r'(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])', line) - if match: - error(filename, linenum, 'whitespace/operators', 4, - 'Extra space for operator %s' % match.group(1)) - - -def CheckParenthesisSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing around parentheses. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # No spaces after an if, while, switch, or for - match = Search(r' (if\(|for\(|while\(|switch\()', line) - if match: - error(filename, linenum, 'whitespace/parens', 5, - 'Missing space before ( in %s' % match.group(1)) - - # For if/for/while/switch, the left and right parens should be - # consistent about how many spaces are inside the parens, and - # there should either be zero or one spaces inside the parens. - # We don't want: "if ( foo)" or "if ( foo )". - # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed. - match = Search(r'\b(if|for|while|switch)\s*' - r'\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$', - line) - if match: - if len(match.group(2)) != len(match.group(4)): - if not (match.group(3) == ';' and - len(match.group(2)) == 1 + len(match.group(4)) or - not match.group(2) and Search(r'\bfor\s*\(.*; \)', line)): - error(filename, linenum, 'whitespace/parens', 5, - 'Mismatching spaces inside () in %s' % match.group(1)) - if len(match.group(2)) not in [0, 1]: - error(filename, linenum, 'whitespace/parens', 5, - 'Should have zero or one spaces inside ( and ) in %s' % - match.group(1)) - - -def CheckCommaSpacing(filename, clean_lines, linenum, error): - """Checks for horizontal spacing near commas and semicolons. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - raw = clean_lines.lines_without_raw_strings - line = clean_lines.elided[linenum] - - # You should always have a space after a comma (either as fn arg or operator) - # - # This does not apply when the non-space character following the - # comma is another comma, since the only time when that happens is - # for empty macro arguments. - # - # We run this check in two passes: first pass on elided lines to - # verify that lines contain missing whitespaces, second pass on raw - # lines to confirm that those missing whitespaces are not due to - # elided comments. - if (Search(r',[^,\s]', ReplaceAll(r'\boperator\s*,\s*\(', 'F(', line)) and - Search(r',[^,\s]', raw[linenum])): - error(filename, linenum, 'whitespace/comma', 3, - 'Missing space after ,') - - # You should always have a space after a semicolon - # except for few corner cases - # TODO(unknown): clarify if 'if (1) { return 1;}' is requires one more - # space after ; - if Search(r';[^\s};\\)/]', line): - error(filename, linenum, 'whitespace/semicolon', 3, - 'Missing space after ;') - - -def _IsType(clean_lines, nesting_state, expr): - """Check if expression looks like a type name, returns true if so. - - Args: - clean_lines: A CleansedLines instance containing the file. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - expr: The expression to check. - Returns: - True, if token looks like a type. - """ - # Keep only the last token in the expression - last_word = Match(r'^.*(\b\S+)$', expr) - if last_word: - token = last_word.group(1) - else: - token = expr - - # Match native types and stdint types - if _TYPES.match(token): - return True - - # Try a bit harder to match templated types. Walk up the nesting - # stack until we find something that resembles a typename - # declaration for what we are looking for. - typename_pattern = (r'\b(?:typename|class|struct)\s+' + re.escape(token) + - r'\b') - block_index = len(nesting_state.stack) - 1 - while block_index >= 0: - if isinstance(nesting_state.stack[block_index], _NamespaceInfo): - return False - - # Found where the opening brace is. We want to scan from this - # line up to the beginning of the function, minus a few lines. - # template - # class C - # : public ... { // start scanning here - last_line = nesting_state.stack[block_index].starting_linenum - - next_block_start = 0 - if block_index > 0: - next_block_start = nesting_state.stack[block_index - 1].starting_linenum - first_line = last_line - while first_line >= next_block_start: - if clean_lines.elided[first_line].find('template') >= 0: - break - first_line -= 1 - if first_line < next_block_start: - # Didn't find any "template" keyword before reaching the next block, - # there are probably no template things to check for this block - block_index -= 1 - continue - - # Look for typename in the specified range - for i in xrange(first_line, last_line + 1, 1): - if Search(typename_pattern, clean_lines.elided[i]): - return True - block_index -= 1 - - return False - - -def CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error): - """Checks for horizontal spacing near commas. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Except after an opening paren, or after another opening brace (in case of - # an initializer list, for instance), you should have spaces before your - # braces when they are delimiting blocks, classes, namespaces etc. - # And since you should never have braces at the beginning of a line, - # this is an easy test. Except that braces used for initialization don't - # follow the same rule; we often don't want spaces before those. - match = Match(r'^(.*[^ ({>]){', line) - - if match: - # Try a bit harder to check for brace initialization. This - # happens in one of the following forms: - # Constructor() : initializer_list_{} { ... } - # Constructor{}.MemberFunction() - # Type variable{}; - # FunctionCall(type{}, ...); - # LastArgument(..., type{}); - # LOG(INFO) << type{} << " ..."; - # map_of_type[{...}] = ...; - # ternary = expr ? new type{} : nullptr; - # OuterTemplate{}> - # - # We check for the character following the closing brace, and - # silence the warning if it's one of those listed above, i.e. - # "{.;,)<>]:". - # - # To account for nested initializer list, we allow any number of - # closing braces up to "{;,)<". We can't simply silence the - # warning on first sight of closing brace, because that would - # cause false negatives for things that are not initializer lists. - # Silence this: But not this: - # Outer{ if (...) { - # Inner{...} if (...){ // Missing space before { - # }; } - # - # There is a false negative with this approach if people inserted - # spurious semicolons, e.g. "if (cond){};", but we will catch the - # spurious semicolon with a separate check. - leading_text = match.group(1) - (endline, endlinenum, endpos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - trailing_text = '' - if endpos > -1: - trailing_text = endline[endpos:] - for offset in xrange(endlinenum + 1, - min(endlinenum + 3, clean_lines.NumLines() - 1)): - trailing_text += clean_lines.elided[offset] - # We also suppress warnings for `uint64_t{expression}` etc., as the style - # guide recommends brace initialization for integral types to avoid - # overflow/truncation. - if (not Match(r'^[\s}]*[{.;,)<>\]:]', trailing_text) - and not _IsType(clean_lines, nesting_state, leading_text)): - error(filename, linenum, 'whitespace/braces', 5, - 'Missing space before {') - - # Make sure '} else {' has spaces. - if Search(r'}else', line): - error(filename, linenum, 'whitespace/braces', 5, - 'Missing space before else') - - # You shouldn't have a space before a semicolon at the end of the line. - # There's a special case for "for" since the style guide allows space before - # the semicolon there. - if Search(r':\s*;\s*$', line): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Semicolon defining empty statement. Use {} instead.') - elif Search(r'^\s*;\s*$', line): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Line contains only semicolon. If this should be an empty statement, ' - 'use {} instead.') - elif (Search(r'\s+;\s*$', line) and - not Search(r'\bfor\b', line)): - error(filename, linenum, 'whitespace/semicolon', 5, - 'Extra space before last semicolon. If this should be an empty ' - 'statement, use {} instead.') - - -def IsDecltype(clean_lines, linenum, column): - """Check if the token ending on (linenum, column) is decltype(). - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: the number of the line to check. - column: end column of the token to check. - Returns: - True if this token is decltype() expression, False otherwise. - """ - (text, _, start_col) = ReverseCloseExpression(clean_lines, linenum, column) - if start_col < 0: - return False - if Search(r'\bdecltype\s*$', text[0:start_col]): - return True - return False - - -def CheckSectionSpacing(filename, clean_lines, class_info, linenum, error): - """Checks for additional blank line issues related to sections. - - Currently the only thing checked here is blank line before protected/private. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - class_info: A _ClassInfo objects. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Skip checks if the class is small, where small means 25 lines or less. - # 25 lines seems like a good cutoff since that's the usual height of - # terminals, and any class that can't fit in one screen can't really - # be considered "small". - # - # Also skip checks if we are on the first line. This accounts for - # classes that look like - # class Foo { public: ... }; - # - # If we didn't find the end of the class, last_line would be zero, - # and the check will be skipped by the first condition. - if (class_info.last_line - class_info.starting_linenum <= 24 or - linenum <= class_info.starting_linenum): - return - - matched = Match(r'\s*(public|protected|private):', clean_lines.lines[linenum]) - if matched: - # Issue warning if the line before public/protected/private was - # not a blank line, but don't do this if the previous line contains - # "class" or "struct". This can happen two ways: - # - We are at the beginning of the class. - # - We are forward-declaring an inner class that is semantically - # private, but needed to be public for implementation reasons. - # Also ignores cases where the previous line ends with a backslash as can be - # common when defining classes in C macros. - prev_line = clean_lines.lines[linenum - 1] - if (not IsBlankLine(prev_line) and - not Search(r'\b(class|struct)\b', prev_line) and - not Search(r'\\$', prev_line)): - # Try a bit harder to find the beginning of the class. This is to - # account for multi-line base-specifier lists, e.g.: - # class Derived - # : public Base { - end_class_head = class_info.starting_linenum - for i in range(class_info.starting_linenum, linenum): - if Search(r'\{\s*$', clean_lines.lines[i]): - end_class_head = i - break - if end_class_head < linenum - 1: - error(filename, linenum, 'whitespace/blank_line', 3, - '"%s:" should be preceded by a blank line' % matched.group(1)) - - -def GetPreviousNonBlankLine(clean_lines, linenum): - """Return the most recent non-blank line and its line number. - - Args: - clean_lines: A CleansedLines instance containing the file contents. - linenum: The number of the line to check. - - Returns: - A tuple with two elements. The first element is the contents of the last - non-blank line before the current line, or the empty string if this is the - first non-blank line. The second is the line number of that line, or -1 - if this is the first non-blank line. - """ - - prevlinenum = linenum - 1 - while prevlinenum >= 0: - prevline = clean_lines.elided[prevlinenum] - if not IsBlankLine(prevline): # if not a blank line... - return (prevline, prevlinenum) - prevlinenum -= 1 - return ('', -1) - - -def CheckBraces(filename, clean_lines, linenum, error): - """Looks for misplaced braces (e.g. at the end of line). - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - line = clean_lines.elided[linenum] # get rid of comments and strings - - if Match(r'\s*{\s*$', line): - # We allow an open brace to start a line in the case where someone is using - # braces in a block to explicitly create a new scope, which is commonly used - # to control the lifetime of stack-allocated variables. Braces are also - # used for brace initializers inside function calls. We don't detect this - # perfectly: we just don't complain if the last non-whitespace character on - # the previous non-blank line is ',', ';', ':', '(', '{', or '}', or if the - # previous line starts a preprocessor block. We also allow a brace on the - # following line if it is part of an array initialization and would not fit - # within the 80 character limit of the preceding line. - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if (not Search(r'[,;:}{(]\s*$', prevline) and - not Match(r'\s*#', prevline) and - not (GetLineWidth(prevline) > _line_length - 2 and '[]' in prevline)): - error(filename, linenum, 'whitespace/braces', 4, - '{ should almost always be at the end of the previous line') - - # An else clause should be on the same line as the preceding closing brace. - if Match(r'\s*else\b\s*(?:if\b|\{|$)', line): - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if Match(r'\s*}\s*$', prevline): - error(filename, linenum, 'whitespace/newline', 4, - 'An else should appear on the same line as the preceding }') - - # If braces come on one side of an else, they should be on both. - # However, we have to worry about "else if" that spans multiple lines! - if Search(r'else if\s*\(', line): # could be multi-line if - brace_on_left = bool(Search(r'}\s*else if\s*\(', line)) - # find the ( after the if - pos = line.find('else if') - pos = line.find('(', pos) - if pos > 0: - (endline, _, endpos) = CloseExpression(clean_lines, linenum, pos) - brace_on_right = endline[endpos:].find('{') != -1 - if brace_on_left != brace_on_right: # must be brace after if - error(filename, linenum, 'readability/braces', 5, - 'If an else has a brace on one side, it should have it on both') - elif Search(r'}\s*else[^{]*$', line) or Match(r'[^}]*else\s*{', line): - error(filename, linenum, 'readability/braces', 5, - 'If an else has a brace on one side, it should have it on both') - - # Likewise, an else should never have the else clause on the same line - if Search(r'\belse [^\s{]', line) and not Search(r'\belse if\b', line): - error(filename, linenum, 'whitespace/newline', 4, - 'Else clause should never be on same line as else (use 2 lines)') - - # In the same way, a do/while should never be on one line - if Match(r'\s*do [^\s{]', line): - error(filename, linenum, 'whitespace/newline', 4, - 'do/while clauses should not be on a single line') - - # Check single-line if/else bodies. The style guide says 'curly braces are not - # required for single-line statements'. We additionally allow multi-line, - # single statements, but we reject anything with more than one semicolon in - # it. This means that the first semicolon after the if should be at the end of - # its line, and the line after that should have an indent level equal to or - # lower than the if. We also check for ambiguous if/else nesting without - # braces. - if_else_match = Search(r'\b(if\s*\(|else\b)', line) - if if_else_match and not Match(r'\s*#', line): - if_indent = GetIndentLevel(line) - endline, endlinenum, endpos = line, linenum, if_else_match.end() - if_match = Search(r'\bif\s*\(', line) - if if_match: - # This could be a multiline if condition, so find the end first. - pos = if_match.end() - 1 - (endline, endlinenum, endpos) = CloseExpression(clean_lines, linenum, pos) - # Check for an opening brace, either directly after the if or on the next - # line. If found, this isn't a single-statement conditional. - if (not Match(r'\s*{', endline[endpos:]) - and not (Match(r'\s*$', endline[endpos:]) - and endlinenum < (len(clean_lines.elided) - 1) - and Match(r'\s*{', clean_lines.elided[endlinenum + 1]))): - while (endlinenum < len(clean_lines.elided) - and ';' not in clean_lines.elided[endlinenum][endpos:]): - endlinenum += 1 - endpos = 0 - if endlinenum < len(clean_lines.elided): - endline = clean_lines.elided[endlinenum] - # We allow a mix of whitespace and closing braces (e.g. for one-liner - # methods) and a single \ after the semicolon (for macros) - endpos = endline.find(';') - if not Match(r';[\s}]*(\\?)$', endline[endpos:]): - # Semicolon isn't the last character, there's something trailing. - # Output a warning if the semicolon is not contained inside - # a lambda expression. - if not Match(r'^[^{};]*\[[^\[\]]*\][^{}]*\{[^{}]*\}\s*\)*[;,]\s*$', - endline): - error(filename, linenum, 'readability/braces', 4, - 'If/else bodies with multiple statements require braces') - elif endlinenum < len(clean_lines.elided) - 1: - # Make sure the next line is dedented - next_line = clean_lines.elided[endlinenum + 1] - next_indent = GetIndentLevel(next_line) - # With ambiguous nested if statements, this will error out on the - # if that *doesn't* match the else, regardless of whether it's the - # inner one or outer one. - if (if_match and Match(r'\s*else\b', next_line) - and next_indent != if_indent): - error(filename, linenum, 'readability/braces', 4, - 'Else clause should be indented at the same level as if. ' - 'Ambiguous nested if/else chains require braces.') - elif next_indent > if_indent: - error(filename, linenum, 'readability/braces', 4, - 'If/else bodies with multiple statements require braces') - - -def CheckTrailingSemicolon(filename, clean_lines, linenum, error): - """Looks for redundant trailing semicolon. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - line = clean_lines.elided[linenum] - - # Block bodies should not be followed by a semicolon. Due to C++11 - # brace initialization, there are more places where semicolons are - # required than not, so we use a whitelist approach to check these - # rather than a blacklist. These are the places where "};" should - # be replaced by just "}": - # 1. Some flavor of block following closing parenthesis: - # for (;;) {}; - # while (...) {}; - # switch (...) {}; - # Function(...) {}; - # if (...) {}; - # if (...) else if (...) {}; - # - # 2. else block: - # if (...) else {}; - # - # 3. const member function: - # Function(...) const {}; - # - # 4. Block following some statement: - # x = 42; - # {}; - # - # 5. Block at the beginning of a function: - # Function(...) { - # {}; - # } - # - # Note that naively checking for the preceding "{" will also match - # braces inside multi-dimensional arrays, but this is fine since - # that expression will not contain semicolons. - # - # 6. Block following another block: - # while (true) {} - # {}; - # - # 7. End of namespaces: - # namespace {}; - # - # These semicolons seems far more common than other kinds of - # redundant semicolons, possibly due to people converting classes - # to namespaces. For now we do not warn for this case. - # - # Try matching case 1 first. - match = Match(r'^(.*\)\s*)\{', line) - if match: - # Matched closing parenthesis (case 1). Check the token before the - # matching opening parenthesis, and don't warn if it looks like a - # macro. This avoids these false positives: - # - macro that defines a base class - # - multi-line macro that defines a base class - # - macro that defines the whole class-head - # - # But we still issue warnings for macros that we know are safe to - # warn, specifically: - # - TEST, TEST_F, TEST_P, MATCHER, MATCHER_P - # - TYPED_TEST - # - INTERFACE_DEF - # - EXCLUSIVE_LOCKS_REQUIRED, SHARED_LOCKS_REQUIRED, LOCKS_EXCLUDED: - # - # We implement a whitelist of safe macros instead of a blacklist of - # unsafe macros, even though the latter appears less frequently in - # google code and would have been easier to implement. This is because - # the downside for getting the whitelist wrong means some extra - # semicolons, while the downside for getting the blacklist wrong - # would result in compile errors. - # - # In addition to macros, we also don't want to warn on - # - Compound literals - # - Lambdas - # - alignas specifier with anonymous structs - # - decltype - closing_brace_pos = match.group(1).rfind(')') - opening_parenthesis = ReverseCloseExpression( - clean_lines, linenum, closing_brace_pos) - if opening_parenthesis[2] > -1: - line_prefix = opening_parenthesis[0][0:opening_parenthesis[2]] - macro = Search(r'\b([A-Z_][A-Z0-9_]*)\s*$', line_prefix) - func = Match(r'^(.*\])\s*$', line_prefix) - if ((macro and - macro.group(1) not in ( - 'TEST', 'TEST_F', 'MATCHER', 'MATCHER_P', 'TYPED_TEST', - 'EXCLUSIVE_LOCKS_REQUIRED', 'SHARED_LOCKS_REQUIRED', - 'LOCKS_EXCLUDED', 'INTERFACE_DEF')) or - (func and not Search(r'\boperator\s*\[\s*\]', func.group(1))) or - Search(r'\b(?:struct|union)\s+alignas\s*$', line_prefix) or - Search(r'\bdecltype$', line_prefix) or - Search(r'\s+=\s*$', line_prefix)): - match = None - if (match and - opening_parenthesis[1] > 1 and - Search(r'\]\s*$', clean_lines.elided[opening_parenthesis[1] - 1])): - # Multi-line lambda-expression - match = None - - else: - # Try matching cases 2-3. - match = Match(r'^(.*(?:else|\)\s*const)\s*)\{', line) - if not match: - # Try matching cases 4-6. These are always matched on separate lines. - # - # Note that we can't simply concatenate the previous line to the - # current line and do a single match, otherwise we may output - # duplicate warnings for the blank line case: - # if (cond) { - # // blank line - # } - prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if prevline and Search(r'[;{}]\s*$', prevline): - match = Match(r'^(\s*)\{', line) - - # Check matching closing brace - if match: - (endline, endlinenum, endpos) = CloseExpression( - clean_lines, linenum, len(match.group(1))) - if endpos > -1 and Match(r'^\s*;', endline[endpos:]): - # Current {} pair is eligible for semicolon check, and we have found - # the redundant semicolon, output warning here. - # - # Note: because we are scanning forward for opening braces, and - # outputting warnings for the matching closing brace, if there are - # nested blocks with trailing semicolons, we will get the error - # messages in reversed order. - - # We need to check the line forward for NOLINT - raw_lines = clean_lines.raw_lines - ParseNolintSuppressions(filename, raw_lines[endlinenum-1], endlinenum-1, - error) - ParseNolintSuppressions(filename, raw_lines[endlinenum], endlinenum, - error) - - error(filename, endlinenum, 'readability/braces', 4, - "You don't need a ; after a }") - - -def CheckEmptyBlockBody(filename, clean_lines, linenum, error): - """Look for empty loop/conditional body with only a single semicolon. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - # Search for loop keywords at the beginning of the line. Because only - # whitespaces are allowed before the keywords, this will also ignore most - # do-while-loops, since those lines should start with closing brace. - # - # We also check "if" blocks here, since an empty conditional block - # is likely an error. - line = clean_lines.elided[linenum] - matched = Match(r'\s*(for|while|if)\s*\(', line) - if matched: - # Find the end of the conditional expression. - (end_line, end_linenum, end_pos) = CloseExpression( - clean_lines, linenum, line.find('(')) - - # Output warning if what follows the condition expression is a semicolon. - # No warning for all other cases, including whitespace or newline, since we - # have a separate check for semicolons preceded by whitespace. - if end_pos >= 0 and Match(r';', end_line[end_pos:]): - if matched.group(1) == 'if': - error(filename, end_linenum, 'whitespace/empty_conditional_body', 5, - 'Empty conditional bodies should use {}') - else: - error(filename, end_linenum, 'whitespace/empty_loop_body', 5, - 'Empty loop bodies should use {} or continue') - - # Check for if statements that have completely empty bodies (no comments) - # and no else clauses. - if end_pos >= 0 and matched.group(1) == 'if': - # Find the position of the opening { for the if statement. - # Return without logging an error if it has no brackets. - opening_linenum = end_linenum - opening_line_fragment = end_line[end_pos:] - # Loop until EOF or find anything that's not whitespace or opening {. - while not Search(r'^\s*\{', opening_line_fragment): - if Search(r'^(?!\s*$)', opening_line_fragment): - # Conditional has no brackets. - return - opening_linenum += 1 - if opening_linenum == len(clean_lines.elided): - # Couldn't find conditional's opening { or any code before EOF. - return - opening_line_fragment = clean_lines.elided[opening_linenum] - # Set opening_line (opening_line_fragment may not be entire opening line). - opening_line = clean_lines.elided[opening_linenum] - - # Find the position of the closing }. - opening_pos = opening_line_fragment.find('{') - if opening_linenum == end_linenum: - # We need to make opening_pos relative to the start of the entire line. - opening_pos += end_pos - (closing_line, closing_linenum, closing_pos) = CloseExpression( - clean_lines, opening_linenum, opening_pos) - if closing_pos < 0: - return - - # Now construct the body of the conditional. This consists of the portion - # of the opening line after the {, all lines until the closing line, - # and the portion of the closing line before the }. - if (clean_lines.raw_lines[opening_linenum] != - CleanseComments(clean_lines.raw_lines[opening_linenum])): - # Opening line ends with a comment, so conditional isn't empty. - return - if closing_linenum > opening_linenum: - # Opening line after the {. Ignore comments here since we checked above. - body = list(opening_line[opening_pos+1:]) - # All lines until closing line, excluding closing line, with comments. - body.extend(clean_lines.raw_lines[opening_linenum+1:closing_linenum]) - # Closing line before the }. Won't (and can't) have comments. - body.append(clean_lines.elided[closing_linenum][:closing_pos-1]) - body = '\n'.join(body) - else: - # If statement has brackets and fits on a single line. - body = opening_line[opening_pos+1:closing_pos-1] - - # Check if the body is empty - if not _EMPTY_CONDITIONAL_BODY_PATTERN.search(body): - return - # The body is empty. Now make sure there's not an else clause. - current_linenum = closing_linenum - current_line_fragment = closing_line[closing_pos:] - # Loop until EOF or find anything that's not whitespace or else clause. - while Search(r'^\s*$|^(?=\s*else)', current_line_fragment): - if Search(r'^(?=\s*else)', current_line_fragment): - # Found an else clause, so don't log an error. - return - current_linenum += 1 - if current_linenum == len(clean_lines.elided): - break - current_line_fragment = clean_lines.elided[current_linenum] - - # The body is empty and there's no else clause until EOF or other code. - error(filename, end_linenum, 'whitespace/empty_if_body', 4, - ('If statement had no body and no else clause')) - - -def FindCheckMacro(line): - """Find a replaceable CHECK-like macro. - - Args: - line: line to search on. - Returns: - (macro name, start position), or (None, -1) if no replaceable - macro is found. - """ - for macro in _CHECK_MACROS: - i = line.find(macro) - if i >= 0: - # Find opening parenthesis. Do a regular expression match here - # to make sure that we are matching the expected CHECK macro, as - # opposed to some other macro that happens to contain the CHECK - # substring. - matched = Match(r'^(.*\b' + macro + r'\s*)\(', line) - if not matched: - continue - return (macro, len(matched.group(1))) - return (None, -1) - - -def CheckCheck(filename, clean_lines, linenum, error): - """Checks the use of CHECK and EXPECT macros. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - - # Decide the set of replacement macros that should be suggested - lines = clean_lines.elided - (check_macro, start_pos) = FindCheckMacro(lines[linenum]) - if not check_macro: - return - - # Find end of the boolean expression by matching parentheses - (last_line, end_line, end_pos) = CloseExpression( - clean_lines, linenum, start_pos) - if end_pos < 0: - return - - # If the check macro is followed by something other than a - # semicolon, assume users will log their own custom error messages - # and don't suggest any replacements. - if not Match(r'\s*;', last_line[end_pos:]): - return - - if linenum == end_line: - expression = lines[linenum][start_pos + 1:end_pos - 1] - else: - expression = lines[linenum][start_pos + 1:] - for i in xrange(linenum + 1, end_line): - expression += lines[i] - expression += last_line[0:end_pos - 1] - - # Parse expression so that we can take parentheses into account. - # This avoids false positives for inputs like "CHECK((a < 4) == b)", - # which is not replaceable by CHECK_LE. - lhs = '' - rhs = '' - operator = None - while expression: - matched = Match(r'^\s*(<<|<<=|>>|>>=|->\*|->|&&|\|\||' - r'==|!=|>=|>|<=|<|\()(.*)$', expression) - if matched: - token = matched.group(1) - if token == '(': - # Parenthesized operand - expression = matched.group(2) - (end, _) = FindEndOfExpressionInLine(expression, 0, ['(']) - if end < 0: - return # Unmatched parenthesis - lhs += '(' + expression[0:end] - expression = expression[end:] - elif token in ('&&', '||'): - # Logical and/or operators. This means the expression - # contains more than one term, for example: - # CHECK(42 < a && a < b); - # - # These are not replaceable with CHECK_LE, so bail out early. - return - elif token in ('<<', '<<=', '>>', '>>=', '->*', '->'): - # Non-relational operator - lhs += token - expression = matched.group(2) - else: - # Relational operator - operator = token - rhs = matched.group(2) - break - else: - # Unparenthesized operand. Instead of appending to lhs one character - # at a time, we do another regular expression match to consume several - # characters at once if possible. Trivial benchmark shows that this - # is more efficient when the operands are longer than a single - # character, which is generally the case. - matched = Match(r'^([^-=!<>()&|]+)(.*)$', expression) - if not matched: - matched = Match(r'^(\s*\S)(.*)$', expression) - if not matched: - break - lhs += matched.group(1) - expression = matched.group(2) - - # Only apply checks if we got all parts of the boolean expression - if not (lhs and operator and rhs): - return - - # Check that rhs do not contain logical operators. We already know - # that lhs is fine since the loop above parses out && and ||. - if rhs.find('&&') > -1 or rhs.find('||') > -1: - return - - # At least one of the operands must be a constant literal. This is - # to avoid suggesting replacements for unprintable things like - # CHECK(variable != iterator) - # - # The following pattern matches decimal, hex integers, strings, and - # characters (in that order). - lhs = lhs.strip() - rhs = rhs.strip() - match_constant = r'^([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')$' - if Match(match_constant, lhs) or Match(match_constant, rhs): - # Note: since we know both lhs and rhs, we can provide a more - # descriptive error message like: - # Consider using CHECK_EQ(x, 42) instead of CHECK(x == 42) - # Instead of: - # Consider using CHECK_EQ instead of CHECK(a == b) - # - # We are still keeping the less descriptive message because if lhs - # or rhs gets long, the error message might become unreadable. - error(filename, linenum, 'readability/check', 2, - 'Consider using %s instead of %s(a %s b)' % ( - _CHECK_REPLACEMENT[check_macro][operator], - check_macro, operator)) - - -def CheckAltTokens(filename, clean_lines, linenum, error): - """Check alternative keywords being used in boolean expressions. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Avoid preprocessor lines - if Match(r'^\s*#', line): - return - - # Last ditch effort to avoid multi-line comments. This will not help - # if the comment started before the current line or ended after the - # current line, but it catches most of the false positives. At least, - # it provides a way to workaround this warning for people who use - # multi-line comments in preprocessor macros. - # - # TODO(unknown): remove this once cpplint has better support for - # multi-line comments. - if line.find('/*') >= 0 or line.find('*/') >= 0: - return - - for match in _ALT_TOKEN_REPLACEMENT_PATTERN.finditer(line): - error(filename, linenum, 'readability/alt_tokens', 2, - 'Use operator %s instead of %s' % ( - _ALT_TOKEN_REPLACEMENT[match.group(1)], match.group(1))) - - -def GetLineWidth(line): - """Determines the width of the line in column positions. - - Args: - line: A string, which may be a Unicode string. - - Returns: - The width of the line in column positions, accounting for Unicode - combining characters and wide characters. - """ - if isinstance(line, unicode): - width = 0 - for uc in unicodedata.normalize('NFC', line): - if unicodedata.east_asian_width(uc) in ('W', 'F'): - width += 2 - elif not unicodedata.combining(uc): - width += 1 - return width - else: - return len(line) - - -def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, - error): - """Checks rules from the 'C++ style rules' section of cppguide.html. - - Most of these rules are hard to test (naming, comment style), but we - do what we can. In particular we check for 2-space indents, line lengths, - tab usage, spaces inside code, etc. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - file_extension: The extension (without the dot) of the filename. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - - # Don't use "elided" lines here, otherwise we can't check commented lines. - # Don't want to use "raw" either, because we don't want to check inside C++11 - # raw strings, - raw_lines = clean_lines.lines_without_raw_strings - line = raw_lines[linenum] - prev = raw_lines[linenum - 1] if linenum > 0 else '' - - if line.find('\t') != -1: - error(filename, linenum, 'whitespace/tab', 1, - 'Tab found; better to use spaces') - - # One or three blank spaces at the beginning of the line is weird; it's - # hard to reconcile that with 2-space indents. - # NOTE: here are the conditions rob pike used for his tests. Mine aren't - # as sophisticated, but it may be worth becoming so: RLENGTH==initial_spaces - # if(RLENGTH > 20) complain = 0; - # if(match($0, " +(error|private|public|protected):")) complain = 0; - # if(match(prev, "&& *$")) complain = 0; - # if(match(prev, "\\|\\| *$")) complain = 0; - # if(match(prev, "[\",=><] *$")) complain = 0; - # if(match($0, " <<")) complain = 0; - # if(match(prev, " +for \\(")) complain = 0; - # if(prevodd && match(prevprev, " +for \\(")) complain = 0; - scope_or_label_pattern = r'\s*\w+\s*:\s*\\?$' - classinfo = nesting_state.InnermostClass() - initial_spaces = 0 - cleansed_line = clean_lines.elided[linenum] - while initial_spaces < len(line) and line[initial_spaces] == ' ': - initial_spaces += 1 - # There are certain situations we allow one space, notably for - # section labels, and also lines containing multi-line raw strings. - # We also don't check for lines that look like continuation lines - # (of lines ending in double quotes, commas, equals, or angle brackets) - # because the rules for how to indent those are non-trivial. - if (not Search(r'[",=><] *$', prev) and - (initial_spaces == 1 or initial_spaces == 3) and - not Match(scope_or_label_pattern, cleansed_line) and - not (clean_lines.raw_lines[linenum] != line and - Match(r'^\s*""', line))): - error(filename, linenum, 'whitespace/indent', 3, - 'Weird number of spaces at line-start. ' - 'Are you using a 2-space indent?') - - if line and line[-1].isspace(): - error(filename, linenum, 'whitespace/end_of_line', 4, - 'Line ends in whitespace. Consider deleting these extra spaces.') - - # Check if the line is a header guard. - is_header_guard = False - if IsHeaderExtension(file_extension): - cppvar = GetHeaderGuardCPPVariable(filename) - if (line.startswith('#ifndef %s' % cppvar) or - line.startswith('#define %s' % cppvar) or - line.startswith('#endif // %s' % cppvar)): - is_header_guard = True - # #include lines and header guards can be long, since there's no clean way to - # split them. - # - # URLs can be long too. It's possible to split these, but it makes them - # harder to cut&paste. - # - # The "$Id:...$" comment may also get very long without it being the - # developers fault. - if (not line.startswith('#include') and not is_header_guard and - not Match(r'^\s*//.*http(s?)://\S*$', line) and - not Match(r'^\s*//\s*[^\s]*$', line) and - not Match(r'^// \$Id:.*#[0-9]+ \$$', line)): - line_width = GetLineWidth(line) - if line_width > _line_length: - error(filename, linenum, 'whitespace/line_length', 2, - 'Lines should be <= %i characters long' % _line_length) - - if (cleansed_line.count(';') > 1 and - # for loops are allowed two ;'s (and may run over two lines). - cleansed_line.find('for') == -1 and - (GetPreviousNonBlankLine(clean_lines, linenum)[0].find('for') == -1 or - GetPreviousNonBlankLine(clean_lines, linenum)[0].find(';') != -1) and - # It's ok to have many commands in a switch case that fits in 1 line - not ((cleansed_line.find('case ') != -1 or - cleansed_line.find('default:') != -1) and - cleansed_line.find('break;') != -1)): - error(filename, linenum, 'whitespace/newline', 0, - 'More than one command on the same line') - - # Some more style checks - CheckBraces(filename, clean_lines, linenum, error) - CheckTrailingSemicolon(filename, clean_lines, linenum, error) - CheckEmptyBlockBody(filename, clean_lines, linenum, error) - CheckSpacing(filename, clean_lines, linenum, nesting_state, error) - CheckOperatorSpacing(filename, clean_lines, linenum, error) - CheckParenthesisSpacing(filename, clean_lines, linenum, error) - CheckCommaSpacing(filename, clean_lines, linenum, error) - CheckBracesSpacing(filename, clean_lines, linenum, nesting_state, error) - CheckSpacingForFunctionCall(filename, clean_lines, linenum, error) - CheckCheck(filename, clean_lines, linenum, error) - CheckAltTokens(filename, clean_lines, linenum, error) - classinfo = nesting_state.InnermostClass() - if classinfo: - CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) - - -_RE_PATTERN_INCLUDE = re.compile(r'^\s*#\s*include\s*([<"])([^>"]*)[>"].*$') -# Matches the first component of a filename delimited by -s and _s. That is: -# _RE_FIRST_COMPONENT.match('foo').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo.cc').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo-bar_baz.cc').group(0) == 'foo' -# _RE_FIRST_COMPONENT.match('foo_bar-baz.cc').group(0) == 'foo' -_RE_FIRST_COMPONENT = re.compile(r'^[^-_.]+') - - -def _DropCommonSuffixes(filename): - """Drops common suffixes like _test.cc or -inl.h from filename. - - For example: - >>> _DropCommonSuffixes('foo/foo-inl.h') - 'foo/foo' - >>> _DropCommonSuffixes('foo/bar/foo.cc') - 'foo/bar/foo' - >>> _DropCommonSuffixes('foo/foo_internal.h') - 'foo/foo' - >>> _DropCommonSuffixes('foo/foo_unusualinternal.h') - 'foo/foo_unusualinternal' - - Args: - filename: The input filename. - - Returns: - The filename with the common suffix removed. - """ - for suffix in ('test.cc', 'regtest.cc', 'unittest.cc', - 'inl.h', 'impl.h', 'internal.h'): - if (filename.endswith(suffix) and len(filename) > len(suffix) and - filename[-len(suffix) - 1] in ('-', '_')): - return filename[:-len(suffix) - 1] - return os.path.splitext(filename)[0] - - -def _ClassifyInclude(fileinfo, include, is_system): - """Figures out what kind of header 'include' is. - - Args: - fileinfo: The current file cpplint is running over. A FileInfo instance. - include: The path to a #included file. - is_system: True if the #include used <> rather than "". - - Returns: - One of the _XXX_HEADER constants. - - For example: - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'stdio.h', True) - _C_SYS_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'string', True) - _CPP_SYS_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', False) - _LIKELY_MY_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo_unknown_extension.cc'), - ... 'bar/foo_other_ext.h', False) - _POSSIBLE_MY_HEADER - >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/bar.h', False) - _OTHER_HEADER - """ - # This is a list of all standard c++ header files, except - # those already checked for above. - is_cpp_h = include in _CPP_HEADERS - - if is_system: - if is_cpp_h: - return _CPP_SYS_HEADER - else: - return _C_SYS_HEADER - - # If the target file and the include we're checking share a - # basename when we drop common extensions, and the include - # lives in . , then it's likely to be owned by the target file. - target_dir, target_base = ( - os.path.split(_DropCommonSuffixes(fileinfo.RepositoryName()))) - include_dir, include_base = os.path.split(_DropCommonSuffixes(include)) - if target_base == include_base and ( - include_dir == target_dir or - include_dir == os.path.normpath(target_dir + '/../public')): - return _LIKELY_MY_HEADER - - # If the target and include share some initial basename - # component, it's possible the target is implementing the - # include, so it's allowed to be first, but we'll never - # complain if it's not there. - target_first_component = _RE_FIRST_COMPONENT.match(target_base) - include_first_component = _RE_FIRST_COMPONENT.match(include_base) - if (target_first_component and include_first_component and - target_first_component.group(0) == - include_first_component.group(0)): - return _POSSIBLE_MY_HEADER - - return _OTHER_HEADER - - - -def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): - """Check rules that are applicable to #include lines. - - Strings on #include lines are NOT removed from elided line, to make - certain tasks easier. However, to prevent false positives, checks - applicable to #include lines in CheckLanguage must be put here. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - include_state: An _IncludeState instance in which the headers are inserted. - error: The function to call with any errors found. - """ - fileinfo = FileInfo(filename) - line = clean_lines.lines[linenum] - - # "include" should use the new style "foo/bar.h" instead of just "bar.h" - # Only do this check if the included header follows google naming - # conventions. If not, assume that it's a 3rd party API that - # requires special include conventions. - # - # We also make an exception for Lua headers, which follow google - # naming convention but not the include convention. - match = Match(r'#include\s*"([^/]+\.h)"', line) - if match and not _THIRD_PARTY_HEADERS_PATTERN.match(match.group(1)): - error(filename, linenum, 'build/include', 4, - 'Include the directory when naming .h files') - - # we shouldn't include a file more than once. actually, there are a - # handful of instances where doing so is okay, but in general it's - # not. - match = _RE_PATTERN_INCLUDE.search(line) - if match: - include = match.group(2) - is_system = (match.group(1) == '<') - duplicate_line = include_state.FindHeader(include) - if duplicate_line >= 0: - error(filename, linenum, 'build/include', 4, - '"%s" already included at %s:%s' % - (include, filename, duplicate_line)) - elif (include.endswith('.cc') and - os.path.dirname(fileinfo.RepositoryName()) != os.path.dirname(include)): - error(filename, linenum, 'build/include', 4, - 'Do not include .cc files from other packages') - elif not _THIRD_PARTY_HEADERS_PATTERN.match(include): - include_state.include_list[-1].append((include, linenum)) - - # We want to ensure that headers appear in the right order: - # 1) for foo.cc, foo.h (preferred location) - # 2) c system files - # 3) cpp system files - # 4) for foo.cc, foo.h (deprecated location) - # 5) other google headers - # - # We classify each include statement as one of those 5 types - # using a number of techniques. The include_state object keeps - # track of the highest type seen, and complains if we see a - # lower type after that. - error_message = include_state.CheckNextIncludeOrder( - _ClassifyInclude(fileinfo, include, is_system)) - if error_message: - error(filename, linenum, 'build/include_order', 4, - '%s. Should be: %s.h, c system, c++ system, other.' % - (error_message, fileinfo.BaseName())) - canonical_include = include_state.CanonicalizeAlphabeticalOrder(include) - if not include_state.IsInAlphabeticalOrder( - clean_lines, linenum, canonical_include): - error(filename, linenum, 'build/include_alpha', 4, - 'Include "%s" not in alphabetical order' % include) - include_state.SetLastHeader(canonical_include) - - - -def _GetTextInside(text, start_pattern): - r"""Retrieves all the text between matching open and close parentheses. - - Given a string of lines and a regular expression string, retrieve all the text - following the expression and between opening punctuation symbols like - (, [, or {, and the matching close-punctuation symbol. This properly nested - occurrences of the punctuations, so for the text like - printf(a(), b(c())); - a call to _GetTextInside(text, r'printf\(') will return 'a(), b(c())'. - start_pattern must match string having an open punctuation symbol at the end. - - Args: - text: The lines to extract text. Its comments and strings must be elided. - It can be single line and can span multiple lines. - start_pattern: The regexp string indicating where to start extracting - the text. - Returns: - The extracted text. - None if either the opening string or ending punctuation could not be found. - """ - # TODO(unknown): Audit cpplint.py to see what places could be profitably - # rewritten to use _GetTextInside (and use inferior regexp matching today). - - # Give opening punctuations to get the matching close-punctuations. - matching_punctuation = {'(': ')', '{': '}', '[': ']'} - closing_punctuation = set(matching_punctuation.itervalues()) - - # Find the position to start extracting text. - match = re.search(start_pattern, text, re.M) - if not match: # start_pattern not found in text. - return None - start_position = match.end(0) - - assert start_position > 0, ( - 'start_pattern must ends with an opening punctuation.') - assert text[start_position - 1] in matching_punctuation, ( - 'start_pattern must ends with an opening punctuation.') - # Stack of closing punctuations we expect to have in text after position. - punctuation_stack = [matching_punctuation[text[start_position - 1]]] - position = start_position - while punctuation_stack and position < len(text): - if text[position] == punctuation_stack[-1]: - punctuation_stack.pop() - elif text[position] in closing_punctuation: - # A closing punctuation without matching opening punctuations. - return None - elif text[position] in matching_punctuation: - punctuation_stack.append(matching_punctuation[text[position]]) - position += 1 - if punctuation_stack: - # Opening punctuations left without matching close-punctuations. - return None - # punctuations match. - return text[start_position:position - 1] - - -# Patterns for matching call-by-reference parameters. -# -# Supports nested templates up to 2 levels deep using this messy pattern: -# < (?: < (?: < [^<>]* -# > -# | [^<>] )* -# > -# | [^<>] )* -# > -_RE_PATTERN_IDENT = r'[_a-zA-Z]\w*' # =~ [[:alpha:]][[:alnum:]]* -_RE_PATTERN_TYPE = ( - r'(?:const\s+)?(?:typename\s+|class\s+|struct\s+|union\s+|enum\s+)?' - r'(?:\w|' - r'\s*<(?:<(?:<[^<>]*>|[^<>])*>|[^<>])*>|' - r'::)+') -# A call-by-reference parameter ends with '& identifier'. -_RE_PATTERN_REF_PARAM = re.compile( - r'(' + _RE_PATTERN_TYPE + r'(?:\s*(?:\bconst\b|[*]))*\s*' - r'&\s*' + _RE_PATTERN_IDENT + r')\s*(?:=[^,()]+)?[,)]') -# A call-by-const-reference parameter either ends with 'const& identifier' -# or looks like 'const type& identifier' when 'type' is atomic. -_RE_PATTERN_CONST_REF_PARAM = ( - r'(?:.*\s*\bconst\s*&\s*' + _RE_PATTERN_IDENT + - r'|const\s+' + _RE_PATTERN_TYPE + r'\s*&\s*' + _RE_PATTERN_IDENT + r')') -# Stream types. -_RE_PATTERN_REF_STREAM_PARAM = ( - r'(?:.*stream\s*&\s*' + _RE_PATTERN_IDENT + r')') - - -def CheckLanguage(filename, clean_lines, linenum, file_extension, - include_state, nesting_state, error): - """Checks rules from the 'C++ language rules' section of cppguide.html. - - Some of these rules are hard to test (function overloading, using - uint32 inappropriately), but we do the best we can. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - file_extension: The extension (without the dot) of the filename. - include_state: An _IncludeState instance in which the headers are inserted. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - # If the line is empty or consists of entirely a comment, no need to - # check it. - line = clean_lines.elided[linenum] - if not line: - return - - match = _RE_PATTERN_INCLUDE.search(line) - if match: - CheckIncludeLine(filename, clean_lines, linenum, include_state, error) - return - - # Reset include state across preprocessor directives. This is meant - # to silence warnings for conditional includes. - match = Match(r'^\s*#\s*(if|ifdef|ifndef|elif|else|endif)\b', line) - if match: - include_state.ResetSection(match.group(1)) - - # Make Windows paths like Unix. - fullname = os.path.abspath(filename).replace('\\', '/') - - # Perform other checks now that we are sure that this is not an include line - CheckCasts(filename, clean_lines, linenum, error) - CheckGlobalStatic(filename, clean_lines, linenum, error) - CheckPrintf(filename, clean_lines, linenum, error) - - if IsHeaderExtension(file_extension): - # TODO(unknown): check that 1-arg constructors are explicit. - # How to tell it's a constructor? - # (handled in CheckForNonStandardConstructs for now) - # TODO(unknown): check that classes declare or disable copy/assign - # (level 1 error) - pass - - # Check if people are using the verboten C basic types. The only exception - # we regularly allow is "unsigned short port" for port. - if Search(r'\bshort port\b', line): - if not Search(r'\bunsigned short port\b', line): - error(filename, linenum, 'runtime/int', 4, - 'Use "unsigned short" for ports, not "short"') - else: - match = Search(r'\b(short|long(?! +double)|long long)\b', line) - if match: - error(filename, linenum, 'runtime/int', 4, - 'Use int16/int64/etc, rather than the C type %s' % match.group(1)) - - # Check if some verboten operator overloading is going on - # TODO(unknown): catch out-of-line unary operator&: - # class X {}; - # int operator&(const X& x) { return 42; } // unary operator& - # The trick is it's hard to tell apart from binary operator&: - # class Y { int operator&(const Y& x) { return 23; } }; // binary operator& - if Search(r'\boperator\s*&\s*\(\s*\)', line): - error(filename, linenum, 'runtime/operator', 4, - 'Unary operator& is dangerous. Do not use it.') - - # Check for suspicious usage of "if" like - # } if (a == b) { - if Search(r'\}\s*if\s*\(', line): - error(filename, linenum, 'readability/braces', 4, - 'Did you mean "else if"? If not, start a new line for "if".') - - # Check for potential format string bugs like printf(foo). - # We constrain the pattern not to pick things like DocidForPrintf(foo). - # Not perfect but it can catch printf(foo.c_str()) and printf(foo->c_str()) - # TODO(unknown): Catch the following case. Need to change the calling - # convention of the whole function to process multiple line to handle it. - # printf( - # boy_this_is_a_really_long_variable_that_cannot_fit_on_the_prev_line); - printf_args = _GetTextInside(line, r'(?i)\b(string)?printf\s*\(') - if printf_args: - match = Match(r'([\w.\->()]+)$', printf_args) - if match and match.group(1) != '__VA_ARGS__': - function_name = re.search(r'\b((?:string)?printf)\s*\(', - line, re.I).group(1) - error(filename, linenum, 'runtime/printf', 4, - 'Potential format string bug. Do %s("%%s", %s) instead.' - % (function_name, match.group(1))) - - # Check for potential memset bugs like memset(buf, sizeof(buf), 0). - match = Search(r'memset\s*\(([^,]*),\s*([^,]*),\s*0\s*\)', line) - if match and not Match(r"^''|-?[0-9]+|0x[0-9A-Fa-f]$", match.group(2)): - error(filename, linenum, 'runtime/memset', 4, - 'Did you mean "memset(%s, 0, %s)"?' - % (match.group(1), match.group(2))) - - if Search(r'\busing namespace\b', line): - error(filename, linenum, 'build/namespaces', 5, - 'Do not use namespace using-directives. ' - 'Use using-declarations instead.') - - # Detect variable-length arrays. - match = Match(r'\s*(.+::)?(\w+) [a-z]\w*\[(.+)];', line) - if (match and match.group(2) != 'return' and match.group(2) != 'delete' and - match.group(3).find(']') == -1): - # Split the size using space and arithmetic operators as delimiters. - # If any of the resulting tokens are not compile time constants then - # report the error. - tokens = re.split(r'\s|\+|\-|\*|\/|<<|>>]', match.group(3)) - is_const = True - skip_next = False - for tok in tokens: - if skip_next: - skip_next = False - continue - - if Search(r'sizeof\(.+\)', tok): continue - if Search(r'arraysize\(\w+\)', tok): continue - - tok = tok.lstrip('(') - tok = tok.rstrip(')') - if not tok: continue - if Match(r'\d+', tok): continue - if Match(r'0[xX][0-9a-fA-F]+', tok): continue - if Match(r'k[A-Z0-9]\w*', tok): continue - if Match(r'(.+::)?k[A-Z0-9]\w*', tok): continue - if Match(r'(.+::)?[A-Z][A-Z0-9_]*', tok): continue - # A catch all for tricky sizeof cases, including 'sizeof expression', - # 'sizeof(*type)', 'sizeof(const type)', 'sizeof(struct StructName)' - # requires skipping the next token because we split on ' ' and '*'. - if tok.startswith('sizeof'): - skip_next = True - continue - is_const = False - break - if not is_const: - error(filename, linenum, 'runtime/arrays', 1, - 'Do not use variable-length arrays. Use an appropriately named ' - "('k' followed by CamelCase) compile-time constant for the size.") - - # Check for use of unnamed namespaces in header files. Registration - # macros are typically OK, so we allow use of "namespace {" on lines - # that end with backslashes. - if (IsHeaderExtension(file_extension) - and Search(r'\bnamespace\s*{', line) - and line[-1] != '\\'): - error(filename, linenum, 'build/namespaces', 4, - 'Do not use unnamed namespaces in header files. See ' - 'https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces' - ' for more information.') - - -def CheckGlobalStatic(filename, clean_lines, linenum, error): - """Check for unsafe global or static objects. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Match two lines at a time to support multiline declarations - if linenum + 1 < clean_lines.NumLines() and not Search(r'[;({]', line): - line += clean_lines.elided[linenum + 1].strip() - - # Check for people declaring static/global STL strings at the top level. - # This is dangerous because the C++ language does not guarantee that - # globals with constructors are initialized before the first access, and - # also because globals can be destroyed when some threads are still running. - # TODO(unknown): Generalize this to also find static unique_ptr instances. - # TODO(unknown): File bugs for clang-tidy to find these. - match = Match( - r'((?:|static +)(?:|const +))(?::*std::)?string( +const)? +' - r'([a-zA-Z0-9_:]+)\b(.*)', - line) - - # Remove false positives: - # - String pointers (as opposed to values). - # string *pointer - # const string *pointer - # string const *pointer - # string *const pointer - # - # - Functions and template specializations. - # string Function(... - # string Class::Method(... - # - # - Operators. These are matched separately because operator names - # cross non-word boundaries, and trying to match both operators - # and functions at the same time would decrease accuracy of - # matching identifiers. - # string Class::operator*() - if (match and - not Search(r'\bstring\b(\s+const)?\s*[\*\&]\s*(const\s+)?\w', line) and - not Search(r'\boperator\W', line) and - not Match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)*\s*\(([^"]|$)', match.group(4))): - if Search(r'\bconst\b', line): - error(filename, linenum, 'runtime/string', 4, - 'For a static/global string constant, use a C style string ' - 'instead: "%schar%s %s[]".' % - (match.group(1), match.group(2) or '', match.group(3))) - else: - error(filename, linenum, 'runtime/string', 4, - 'Static/global string variables are not permitted.') - - if (Search(r'\b([A-Za-z0-9_]*_)\(\1\)', line) or - Search(r'\b([A-Za-z0-9_]*_)\(CHECK_NOTNULL\(\1\)\)', line)): - error(filename, linenum, 'runtime/init', 4, - 'You seem to be initializing a member variable with itself.') - - -def CheckPrintf(filename, clean_lines, linenum, error): - """Check for printf related issues. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # When snprintf is used, the second argument shouldn't be a literal. - match = Search(r'snprintf\s*\(([^,]*),\s*([0-9]*)\s*,', line) - if match and match.group(2) != '0': - # If 2nd arg is zero, snprintf is used to calculate size. - error(filename, linenum, 'runtime/printf', 3, - 'If you can, use sizeof(%s) instead of %s as the 2nd arg ' - 'to snprintf.' % (match.group(1), match.group(2))) - - # Check if some verboten C functions are being used. - if Search(r'\bsprintf\s*\(', line): - error(filename, linenum, 'runtime/printf', 5, - 'Never use sprintf. Use snprintf instead.') - match = Search(r'\b(strcpy|strcat)\s*\(', line) - if match: - error(filename, linenum, 'runtime/printf', 4, - 'Almost always, snprintf is better than %s' % match.group(1)) - - -def IsDerivedFunction(clean_lines, linenum): - """Check if current line contains an inherited function. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line contains a function with "override" - virt-specifier. - """ - # Scan back a few lines for start of current function - for i in xrange(linenum, max(-1, linenum - 10), -1): - match = Match(r'^([^()]*\w+)\(', clean_lines.elided[i]) - if match: - # Look for "override" after the matching closing parenthesis - line, _, closing_paren = CloseExpression( - clean_lines, i, len(match.group(1))) - return (closing_paren >= 0 and - Search(r'\boverride\b', line[closing_paren:])) - return False - - -def IsOutOfLineMethodDefinition(clean_lines, linenum): - """Check if current line contains an out-of-line method definition. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line contains an out-of-line method definition. - """ - # Scan back a few lines for start of current function - for i in xrange(linenum, max(-1, linenum - 10), -1): - if Match(r'^([^()]*\w+)\(', clean_lines.elided[i]): - return Match(r'^[^()]*\w+::\w+\(', clean_lines.elided[i]) is not None - return False - - -def IsInitializerList(clean_lines, linenum): - """Check if current line is inside constructor initializer list. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - Returns: - True if current line appears to be inside constructor initializer - list, False otherwise. - """ - for i in xrange(linenum, 1, -1): - line = clean_lines.elided[i] - if i == linenum: - remove_function_body = Match(r'^(.*)\{\s*$', line) - if remove_function_body: - line = remove_function_body.group(1) - - if Search(r'\s:\s*\w+[({]', line): - # A lone colon tend to indicate the start of a constructor - # initializer list. It could also be a ternary operator, which - # also tend to appear in constructor initializer lists as - # opposed to parameter lists. - return True - if Search(r'\}\s*,\s*$', line): - # A closing brace followed by a comma is probably the end of a - # brace-initialized member in constructor initializer list. - return True - if Search(r'[{};]\s*$', line): - # Found one of the following: - # - A closing brace or semicolon, probably the end of the previous - # function. - # - An opening brace, probably the start of current class or namespace. - # - # Current line is probably not inside an initializer list since - # we saw one of those things without seeing the starting colon. - return False - - # Got to the beginning of the file without seeing the start of - # constructor initializer list. - return False - - -def CheckForNonConstReference(filename, clean_lines, linenum, - nesting_state, error): - """Check for non-const references. - - Separate from CheckLanguage since it scans backwards from current - line, instead of scanning forward. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: The function to call with any errors found. - """ - # Do nothing if there is no '&' on current line. - line = clean_lines.elided[linenum] - if '&' not in line: - return - - # If a function is inherited, current function doesn't have much of - # a choice, so any non-const references should not be blamed on - # derived function. - if IsDerivedFunction(clean_lines, linenum): - return - - # Don't warn on out-of-line method definitions, as we would warn on the - # in-line declaration, if it isn't marked with 'override'. - if IsOutOfLineMethodDefinition(clean_lines, linenum): - return - - # Long type names may be broken across multiple lines, usually in one - # of these forms: - # LongType - # ::LongTypeContinued &identifier - # LongType:: - # LongTypeContinued &identifier - # LongType< - # ...>::LongTypeContinued &identifier - # - # If we detected a type split across two lines, join the previous - # line to current line so that we can match const references - # accordingly. - # - # Note that this only scans back one line, since scanning back - # arbitrary number of lines would be expensive. If you have a type - # that spans more than 2 lines, please use a typedef. - if linenum > 1: - previous = None - if Match(r'\s*::(?:[\w<>]|::)+\s*&\s*\S', line): - # previous_line\n + ::current_line - previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+[\w<>])\s*$', - clean_lines.elided[linenum - 1]) - elif Match(r'\s*[a-zA-Z_]([\w<>]|::)+\s*&\s*\S', line): - # previous_line::\n + current_line - previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+::)\s*$', - clean_lines.elided[linenum - 1]) - if previous: - line = previous.group(1) + line.lstrip() - else: - # Check for templated parameter that is split across multiple lines - endpos = line.rfind('>') - if endpos > -1: - (_, startline, startpos) = ReverseCloseExpression( - clean_lines, linenum, endpos) - if startpos > -1 and startline < linenum: - # Found the matching < on an earlier line, collect all - # pieces up to current line. - line = '' - for i in xrange(startline, linenum + 1): - line += clean_lines.elided[i].strip() - - # Check for non-const references in function parameters. A single '&' may - # found in the following places: - # inside expression: binary & for bitwise AND - # inside expression: unary & for taking the address of something - # inside declarators: reference parameter - # We will exclude the first two cases by checking that we are not inside a - # function body, including one that was just introduced by a trailing '{'. - # TODO(unknown): Doesn't account for 'catch(Exception& e)' [rare]. - if (nesting_state.previous_stack_top and - not (isinstance(nesting_state.previous_stack_top, _ClassInfo) or - isinstance(nesting_state.previous_stack_top, _NamespaceInfo))): - # Not at toplevel, not within a class, and not within a namespace - return - - # Avoid initializer lists. We only need to scan back from the - # current line for something that starts with ':'. - # - # We don't need to check the current line, since the '&' would - # appear inside the second set of parentheses on the current line as - # opposed to the first set. - if linenum > 0: - for i in xrange(linenum - 1, max(0, linenum - 10), -1): - previous_line = clean_lines.elided[i] - if not Search(r'[),]\s*$', previous_line): - break - if Match(r'^\s*:\s+\S', previous_line): - return - - # Avoid preprocessors - if Search(r'\\\s*$', line): - return - - # Avoid constructor initializer lists - if IsInitializerList(clean_lines, linenum): - return - - # We allow non-const references in a few standard places, like functions - # called "swap()" or iostream operators like "<<" or ">>". Do not check - # those function parameters. - # - # We also accept & in static_assert, which looks like a function but - # it's actually a declaration expression. - whitelisted_functions = (r'(?:[sS]wap(?:<\w:+>)?|' - r'operator\s*[<>][<>]|' - r'static_assert|COMPILE_ASSERT' - r')\s*\(') - if Search(whitelisted_functions, line): - return - elif not Search(r'\S+\([^)]*$', line): - # Don't see a whitelisted function on this line. Actually we - # didn't see any function name on this line, so this is likely a - # multi-line parameter list. Try a bit harder to catch this case. - for i in xrange(2): - if (linenum > i and - Search(whitelisted_functions, clean_lines.elided[linenum - i - 1])): - return - - decls = ReplaceAll(r'{[^}]*}', ' ', line) # exclude function body - for parameter in re.findall(_RE_PATTERN_REF_PARAM, decls): - if (not Match(_RE_PATTERN_CONST_REF_PARAM, parameter) and - not Match(_RE_PATTERN_REF_STREAM_PARAM, parameter)): - error(filename, linenum, 'runtime/references', 2, - 'Is this a non-const reference? ' - 'If so, make const or use a pointer: ' + - ReplaceAll(' *<', '<', parameter)) - - -def CheckCasts(filename, clean_lines, linenum, error): - """Various cast related checks. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - # Check to see if they're using an conversion function cast. - # I just try to capture the most common basic types, though there are more. - # Parameterless conversion functions, such as bool(), are allowed as they are - # probably a member operator declaration or default constructor. - match = Search( - r'(\bnew\s+(?:const\s+)?|\S<\s*(?:const\s+)?)?\b' - r'(int|float|double|bool|char|int32|uint32|int64|uint64)' - r'(\([^)].*)', line) - expecting_function = ExpectingFunctionArgs(clean_lines, linenum) - if match and not expecting_function: - matched_type = match.group(2) - - # matched_new_or_template is used to silence two false positives: - # - New operators - # - Template arguments with function types - # - # For template arguments, we match on types immediately following - # an opening bracket without any spaces. This is a fast way to - # silence the common case where the function type is the first - # template argument. False negative with less-than comparison is - # avoided because those operators are usually followed by a space. - # - # function // bracket + no space = false positive - # value < double(42) // bracket + space = true positive - matched_new_or_template = match.group(1) - - # Avoid arrays by looking for brackets that come after the closing - # parenthesis. - if Match(r'\([^()]+\)\s*\[', match.group(3)): - return - - # Other things to ignore: - # - Function pointers - # - Casts to pointer types - # - Placement new - # - Alias declarations - matched_funcptr = match.group(3) - if (matched_new_or_template is None and - not (matched_funcptr and - (Match(r'\((?:[^() ]+::\s*\*\s*)?[^() ]+\)\s*\(', - matched_funcptr) or - matched_funcptr.startswith('(*)'))) and - not Match(r'\s*using\s+\S+\s*=\s*' + matched_type, line) and - not Search(r'new\(\S+\)\s*' + matched_type, line)): - error(filename, linenum, 'readability/casting', 4, - 'Using deprecated casting style. ' - 'Use static_cast<%s>(...) instead' % - matched_type) - - if not expecting_function: - CheckCStyleCast(filename, clean_lines, linenum, 'static_cast', - r'\((int|float|double|bool|char|u?int(16|32|64))\)', error) - - # This doesn't catch all cases. Consider (const char * const)"hello". - # - # (char *) "foo" should always be a const_cast (reinterpret_cast won't - # compile). - if CheckCStyleCast(filename, clean_lines, linenum, 'const_cast', - r'\((char\s?\*+\s?)\)\s*"', error): - pass - else: - # Check pointer casts for other than string constants - CheckCStyleCast(filename, clean_lines, linenum, 'reinterpret_cast', - r'\((\w+\s?\*+\s?)\)', error) - - # In addition, we look for people taking the address of a cast. This - # is dangerous -- casts can assign to temporaries, so the pointer doesn't - # point where you think. - # - # Some non-identifier character is required before the '&' for the - # expression to be recognized as a cast. These are casts: - # expression = &static_cast(temporary()); - # function(&(int*)(temporary())); - # - # This is not a cast: - # reference_type&(int* function_param); - match = Search( - r'(?:[^\w]&\(([^)*][^)]*)\)[\w(])|' - r'(?:[^\w]&(static|dynamic|down|reinterpret)_cast\b)', line) - if match: - # Try a better error message when the & is bound to something - # dereferenced by the casted pointer, as opposed to the casted - # pointer itself. - parenthesis_error = False - match = Match(r'^(.*&(?:static|dynamic|down|reinterpret)_cast\b)<', line) - if match: - _, y1, x1 = CloseExpression(clean_lines, linenum, len(match.group(1))) - if x1 >= 0 and clean_lines.elided[y1][x1] == '(': - _, y2, x2 = CloseExpression(clean_lines, y1, x1) - if x2 >= 0: - extended_line = clean_lines.elided[y2][x2:] - if y2 < clean_lines.NumLines() - 1: - extended_line += clean_lines.elided[y2 + 1] - if Match(r'\s*(?:->|\[)', extended_line): - parenthesis_error = True - - if parenthesis_error: - error(filename, linenum, 'readability/casting', 4, - ('Are you taking an address of something dereferenced ' - 'from a cast? Wrapping the dereferenced expression in ' - 'parentheses will make the binding more obvious')) - else: - error(filename, linenum, 'runtime/casting', 4, - ('Are you taking an address of a cast? ' - 'This is dangerous: could be a temp var. ' - 'Take the address before doing the cast, rather than after')) - - -def CheckCStyleCast(filename, clean_lines, linenum, cast_type, pattern, error): - """Checks for a C-style cast by looking for the pattern. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - cast_type: The string for the C++ cast to recommend. This is either - reinterpret_cast, static_cast, or const_cast, depending. - pattern: The regular expression used to find C-style casts. - error: The function to call with any errors found. - - Returns: - True if an error was emitted. - False otherwise. - """ - line = clean_lines.elided[linenum] - match = Search(pattern, line) - if not match: - return False - - # Exclude lines with keywords that tend to look like casts - context = line[0:match.start(1) - 1] - if Match(r'.*\b(?:sizeof|alignof|alignas|[_A-Z][_A-Z0-9]*)\s*$', context): - return False - - # Try expanding current context to see if we one level of - # parentheses inside a macro. - if linenum > 0: - for i in xrange(linenum - 1, max(0, linenum - 5), -1): - context = clean_lines.elided[i] + context - if Match(r'.*\b[_A-Z][_A-Z0-9]*\s*\((?:\([^()]*\)|[^()])*$', context): - return False - - # operator++(int) and operator--(int) - if context.endswith(' operator++') or context.endswith(' operator--'): - return False - - # A single unnamed argument for a function tends to look like old style cast. - # If we see those, don't issue warnings for deprecated casts. - remainder = line[match.end(0):] - if Match(r'^\s*(?:;|const\b|throw\b|final\b|override\b|[=>{),]|->)', - remainder): - return False - - # At this point, all that should be left is actual casts. - error(filename, linenum, 'readability/casting', 4, - 'Using C-style cast. Use %s<%s>(...) instead' % - (cast_type, match.group(1))) - - return True - - -def ExpectingFunctionArgs(clean_lines, linenum): - """Checks whether where function type arguments are expected. - - Args: - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - - Returns: - True if the line at 'linenum' is inside something that expects arguments - of function types. - """ - line = clean_lines.elided[linenum] - return (Match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(', line) or - (linenum >= 2 and - (Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\((?:\S+,)?\s*$', - clean_lines.elided[linenum - 1]) or - Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\(\s*$', - clean_lines.elided[linenum - 2]) or - Search(r'\bstd::m?function\s*\<\s*$', - clean_lines.elided[linenum - 1])))) - - -_HEADERS_CONTAINING_TEMPLATES = ( - ('', ('deque',)), - ('', ('unary_function', 'binary_function', - 'plus', 'minus', 'multiplies', 'divides', 'modulus', - 'negate', - 'equal_to', 'not_equal_to', 'greater', 'less', - 'greater_equal', 'less_equal', - 'logical_and', 'logical_or', 'logical_not', - 'unary_negate', 'not1', 'binary_negate', 'not2', - 'bind1st', 'bind2nd', - 'pointer_to_unary_function', - 'pointer_to_binary_function', - 'ptr_fun', - 'mem_fun_t', 'mem_fun', 'mem_fun1_t', 'mem_fun1_ref_t', - 'mem_fun_ref_t', - 'const_mem_fun_t', 'const_mem_fun1_t', - 'const_mem_fun_ref_t', 'const_mem_fun1_ref_t', - 'mem_fun_ref', - )), - ('', ('numeric_limits',)), - ('', ('list',)), - ('', ('map', 'multimap',)), - ('', ('allocator', 'make_shared', 'make_unique', 'shared_ptr', - 'unique_ptr', 'weak_ptr')), - ('', ('queue', 'priority_queue',)), - ('', ('set', 'multiset',)), - ('', ('stack',)), - ('', ('char_traits', 'basic_string',)), - ('', ('tuple',)), - ('', ('unordered_map', 'unordered_multimap')), - ('', ('unordered_set', 'unordered_multiset')), - ('', ('pair',)), - ('', ('vector',)), - - # gcc extensions. - # Note: std::hash is their hash, ::hash is our hash - ('', ('hash_map', 'hash_multimap',)), - ('', ('hash_set', 'hash_multiset',)), - ('', ('slist',)), - ) - -_HEADERS_MAYBE_TEMPLATES = ( - ('', ('copy', 'max', 'min', 'min_element', 'sort', - 'transform', - )), - ('', ('forward', 'make_pair', 'move', 'swap')), - ) - -_RE_PATTERN_STRING = re.compile(r'\bstring\b') - -_re_pattern_headers_maybe_templates = [] -for _header, _templates in _HEADERS_MAYBE_TEMPLATES: - for _template in _templates: - # Match max(..., ...), max(..., ...), but not foo->max, foo.max or - # type::max(). - _re_pattern_headers_maybe_templates.append( - (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'), - _template, - _header)) - -# Other scripts may reach in and modify this pattern. -_re_pattern_templates = [] -for _header, _templates in _HEADERS_CONTAINING_TEMPLATES: - for _template in _templates: - _re_pattern_templates.append( - (re.compile(r'(\<|\b)' + _template + r'\s*\<'), - _template + '<>', - _header)) - - -def FilesBelongToSameModule(filename_cc, filename_h): - """Check if these two filenames belong to the same module. - - The concept of a 'module' here is a as follows: - foo.h, foo-inl.h, foo.cc, foo_test.cc and foo_unittest.cc belong to the - same 'module' if they are in the same directory. - some/path/public/xyzzy and some/path/internal/xyzzy are also considered - to belong to the same module here. - - If the filename_cc contains a longer path than the filename_h, for example, - '/absolute/path/to/base/sysinfo.cc', and this file would include - 'base/sysinfo.h', this function also produces the prefix needed to open the - header. This is used by the caller of this function to more robustly open the - header file. We don't have access to the real include paths in this context, - so we need this guesswork here. - - Known bugs: tools/base/bar.cc and base/bar.h belong to the same module - according to this implementation. Because of this, this function gives - some false positives. This should be sufficiently rare in practice. - - Args: - filename_cc: is the path for the .cc file - filename_h: is the path for the header path - - Returns: - Tuple with a bool and a string: - bool: True if filename_cc and filename_h belong to the same module. - string: the additional prefix needed to open the header file. - """ - - fileinfo = FileInfo(filename_cc) - if not fileinfo.IsSource(): - return (False, '') - filename_cc = filename_cc[:-len(fileinfo.Extension())] - matched_test_suffix = Search(_TEST_FILE_SUFFIX, fileinfo.BaseName()) - if matched_test_suffix: - filename_cc = filename_cc[:-len(matched_test_suffix.group(1))] - filename_cc = filename_cc.replace('/public/', '/') - filename_cc = filename_cc.replace('/internal/', '/') - - if not filename_h.endswith('.h'): - return (False, '') - filename_h = filename_h[:-len('.h')] - if filename_h.endswith('-inl'): - filename_h = filename_h[:-len('-inl')] - filename_h = filename_h.replace('/public/', '/') - filename_h = filename_h.replace('/internal/', '/') - - files_belong_to_same_module = filename_cc.endswith(filename_h) - common_path = '' - if files_belong_to_same_module: - common_path = filename_cc[:-len(filename_h)] - return files_belong_to_same_module, common_path - - -def UpdateIncludeState(filename, include_dict, io=codecs): - """Fill up the include_dict with new includes found from the file. - - Args: - filename: the name of the header to read. - include_dict: a dictionary in which the headers are inserted. - io: The io factory to use to read the file. Provided for testability. - - Returns: - True if a header was successfully added. False otherwise. - """ - headerfile = None - try: - headerfile = io.open(filename, 'r', 'utf8', 'replace') - except IOError: - return False - linenum = 0 - for line in headerfile: - linenum += 1 - clean_line = CleanseComments(line) - match = _RE_PATTERN_INCLUDE.search(clean_line) - if match: - include = match.group(2) - include_dict.setdefault(include, linenum) - return True - - -def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, - io=codecs): - """Reports for missing stl includes. - - This function will output warnings to make sure you are including the headers - necessary for the stl containers and functions that you use. We only give one - reason to include a header. For example, if you use both equal_to<> and - less<> in a .h file, only one (the latter in the file) of these will be - reported as a reason to include the . - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - include_state: An _IncludeState instance. - error: The function to call with any errors found. - io: The IO factory to use to read the header file. Provided for unittest - injection. - """ - required = {} # A map of header name to linenumber and the template entity. - # Example of required: { '': (1219, 'less<>') } - - for linenum in xrange(clean_lines.NumLines()): - line = clean_lines.elided[linenum] - if not line or line[0] == '#': - continue - - # String is special -- it is a non-templatized type in STL. - matched = _RE_PATTERN_STRING.search(line) - if matched: - # Don't warn about strings in non-STL namespaces: - # (We check only the first match per line; good enough.) - prefix = line[:matched.start()] - if prefix.endswith('std::') or not prefix.endswith('::'): - required[''] = (linenum, 'string') - - for pattern, template, header in _re_pattern_headers_maybe_templates: - if pattern.search(line): - required[header] = (linenum, template) - - # The following function is just a speed up, no semantics are changed. - if not '<' in line: # Reduces the cpu time usage by skipping lines. - continue - - for pattern, template, header in _re_pattern_templates: - matched = pattern.search(line) - if matched: - # Don't warn about IWYU in non-STL namespaces: - # (We check only the first match per line; good enough.) - prefix = line[:matched.start()] - if prefix.endswith('std::') or not prefix.endswith('::'): - required[header] = (linenum, template) - - # The policy is that if you #include something in foo.h you don't need to - # include it again in foo.cc. Here, we will look at possible includes. - # Let's flatten the include_state include_list and copy it into a dictionary. - include_dict = dict([item for sublist in include_state.include_list - for item in sublist]) - - # Did we find the header for this file (if any) and successfully load it? - header_found = False - - # Use the absolute path so that matching works properly. - abs_filename = FileInfo(filename).FullName() - - # For Emacs's flymake. - # If cpplint is invoked from Emacs's flymake, a temporary file is generated - # by flymake and that file name might end with '_flymake.cc'. In that case, - # restore original file name here so that the corresponding header file can be - # found. - # e.g. If the file name is 'foo_flymake.cc', we should search for 'foo.h' - # instead of 'foo_flymake.h' - abs_filename = re.sub(r'_flymake\.cc$', '.cc', abs_filename) - - # include_dict is modified during iteration, so we iterate over a copy of - # the keys. - header_keys = include_dict.keys() - for header in header_keys: - (same_module, common_path) = FilesBelongToSameModule(abs_filename, header) - fullpath = common_path + header - if same_module and UpdateIncludeState(fullpath, include_dict, io): - header_found = True - - # If we can't find the header file for a .cc, assume it's because we don't - # know where to look. In that case we'll give up as we're not sure they - # didn't include it in the .h file. - # TODO(unknown): Do a better job of finding .h files so we are confident that - # not having the .h file means there isn't one. - if filename.endswith('.cc') and not header_found: - return - - # All the lines have been processed, report the errors found. - for required_header_unstripped in required: - template = required[required_header_unstripped][1] - if required_header_unstripped.strip('<>"') not in include_dict: - error(filename, required[required_header_unstripped][0], - 'build/include_what_you_use', 4, - 'Add #include ' + required_header_unstripped + ' for ' + template) - - -_RE_PATTERN_EXPLICIT_MAKEPAIR = re.compile(r'\bmake_pair\s*<') - - -def CheckMakePairUsesDeduction(filename, clean_lines, linenum, error): - """Check that make_pair's template arguments are deduced. - - G++ 4.6 in C++11 mode fails badly if make_pair's template arguments are - specified explicitly, and such use isn't intended in any case. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - match = _RE_PATTERN_EXPLICIT_MAKEPAIR.search(line) - if match: - error(filename, linenum, 'build/explicit_make_pair', - 4, # 4 = high confidence - 'For C++11-compatibility, omit template arguments from make_pair' - ' OR use pair directly OR if appropriate, construct a pair directly') - - -def CheckRedundantVirtual(filename, clean_lines, linenum, error): - """Check if line contains a redundant "virtual" function-specifier. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Look for "virtual" on current line. - line = clean_lines.elided[linenum] - virtual = Match(r'^(.*)(\bvirtual\b)(.*)$', line) - if not virtual: return - - # Ignore "virtual" keywords that are near access-specifiers. These - # are only used in class base-specifier and do not apply to member - # functions. - if (Search(r'\b(public|protected|private)\s+$', virtual.group(1)) or - Match(r'^\s+(public|protected|private)\b', virtual.group(3))): - return - - # Ignore the "virtual" keyword from virtual base classes. Usually - # there is a column on the same line in these cases (virtual base - # classes are rare in google3 because multiple inheritance is rare). - if Match(r'^.*[^:]:[^:].*$', line): return - - # Look for the next opening parenthesis. This is the start of the - # parameter list (possibly on the next line shortly after virtual). - # TODO(unknown): doesn't work if there are virtual functions with - # decltype() or other things that use parentheses, but csearch suggests - # that this is rare. - end_col = -1 - end_line = -1 - start_col = len(virtual.group(2)) - for start_line in xrange(linenum, min(linenum + 3, clean_lines.NumLines())): - line = clean_lines.elided[start_line][start_col:] - parameter_list = Match(r'^([^(]*)\(', line) - if parameter_list: - # Match parentheses to find the end of the parameter list - (_, end_line, end_col) = CloseExpression( - clean_lines, start_line, start_col + len(parameter_list.group(1))) - break - start_col = 0 - - if end_col < 0: - return # Couldn't find end of parameter list, give up - - # Look for "override" or "final" after the parameter list - # (possibly on the next few lines). - for i in xrange(end_line, min(end_line + 3, clean_lines.NumLines())): - line = clean_lines.elided[i][end_col:] - match = Search(r'\b(override|final)\b', line) - if match: - error(filename, linenum, 'readability/inheritance', 4, - ('"virtual" is redundant since function is ' - 'already declared as "%s"' % match.group(1))) - - # Set end_col to check whole lines after we are done with the - # first line. - end_col = 0 - if Search(r'[^\w]\s*$', line): - break - - -def CheckRedundantOverrideOrFinal(filename, clean_lines, linenum, error): - """Check if line contains a redundant "override" or "final" virt-specifier. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - # Look for closing parenthesis nearby. We need one to confirm where - # the declarator ends and where the virt-specifier starts to avoid - # false positives. - line = clean_lines.elided[linenum] - declarator_end = line.rfind(')') - if declarator_end >= 0: - fragment = line[declarator_end:] - else: - if linenum > 1 and clean_lines.elided[linenum - 1].rfind(')') >= 0: - fragment = line - else: - return - - # Check that at most one of "override" or "final" is present, not both - if Search(r'\boverride\b', fragment) and Search(r'\bfinal\b', fragment): - error(filename, linenum, 'readability/inheritance', 4, - ('"override" is redundant since function is ' - 'already declared as "final"')) - - - - -# Returns true if we are at a new block, and it is directly -# inside of a namespace. -def IsBlockInNameSpace(nesting_state, is_forward_declaration): - """Checks that the new block is directly in a namespace. - - Args: - nesting_state: The _NestingState object that contains info about our state. - is_forward_declaration: If the class is a forward declared class. - Returns: - Whether or not the new block is directly in a namespace. - """ - if is_forward_declaration: - if len(nesting_state.stack) >= 1 and ( - isinstance(nesting_state.stack[-1], _NamespaceInfo)): - return True - else: - return False - - return (len(nesting_state.stack) > 1 and - nesting_state.stack[-1].check_namespace_indentation and - isinstance(nesting_state.stack[-2], _NamespaceInfo)) - - -def ShouldCheckNamespaceIndentation(nesting_state, is_namespace_indent_item, - raw_lines_no_comments, linenum): - """This method determines if we should apply our namespace indentation check. - - Args: - nesting_state: The current nesting state. - is_namespace_indent_item: If we just put a new class on the stack, True. - If the top of the stack is not a class, or we did not recently - add the class, False. - raw_lines_no_comments: The lines without the comments. - linenum: The current line number we are processing. - - Returns: - True if we should apply our namespace indentation check. Currently, it - only works for classes and namespaces inside of a namespace. - """ - - is_forward_declaration = IsForwardClassDeclaration(raw_lines_no_comments, - linenum) - - if not (is_namespace_indent_item or is_forward_declaration): - return False - - # If we are in a macro, we do not want to check the namespace indentation. - if IsMacroDefinition(raw_lines_no_comments, linenum): - return False - - return IsBlockInNameSpace(nesting_state, is_forward_declaration) - - -# Call this method if the line is directly inside of a namespace. -# If the line above is blank (excluding comments) or the start of -# an inner namespace, it cannot be indented. -def CheckItemIndentationInNamespace(filename, raw_lines_no_comments, linenum, - error): - line = raw_lines_no_comments[linenum] - if Match(r'^\s+', line): - error(filename, linenum, 'runtime/indentation_namespace', 4, - 'Do not indent within a namespace') - - -def ProcessLine(filename, file_extension, clean_lines, line, - include_state, function_state, nesting_state, error, - extra_check_functions=[]): - """Processes a single line in the file. - - Args: - filename: Filename of the file that is being processed. - file_extension: The extension (dot not included) of the file. - clean_lines: An array of strings, each representing a line of the file, - with comments stripped. - line: Number of line being processed. - include_state: An _IncludeState instance in which the headers are inserted. - function_state: A _FunctionState instance which counts function lines, etc. - nesting_state: A NestingState instance which maintains information about - the current stack of nested blocks being parsed. - error: A callable to which errors are reported, which takes 4 arguments: - filename, line number, error level, and message - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - raw_lines = clean_lines.raw_lines - ParseNolintSuppressions(filename, raw_lines[line], line, error) - nesting_state.Update(filename, clean_lines, line, error) - CheckForNamespaceIndentation(filename, nesting_state, clean_lines, line, - error) - if nesting_state.InAsmBlock(): return - CheckForFunctionLengths(filename, clean_lines, line, function_state, error) - CheckForMultilineCommentsAndStrings(filename, clean_lines, line, error) - CheckStyle(filename, clean_lines, line, file_extension, nesting_state, error) - CheckLanguage(filename, clean_lines, line, file_extension, include_state, - nesting_state, error) - CheckForNonConstReference(filename, clean_lines, line, nesting_state, error) - CheckForNonStandardConstructs(filename, clean_lines, line, - nesting_state, error) - CheckVlogArguments(filename, clean_lines, line, error) - CheckPosixThreading(filename, clean_lines, line, error) - CheckInvalidIncrement(filename, clean_lines, line, error) - CheckMakePairUsesDeduction(filename, clean_lines, line, error) - CheckRedundantVirtual(filename, clean_lines, line, error) - CheckRedundantOverrideOrFinal(filename, clean_lines, line, error) - for check_fn in extra_check_functions: - check_fn(filename, clean_lines, line, error) - -def FlagCxx11Features(filename, clean_lines, linenum, error): - """Flag those c++11 features that we only allow in certain places. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - include = Match(r'\s*#\s*include\s+[<"]([^<"]+)[">]', line) - - # Flag unapproved C++ TR1 headers. - if include and include.group(1).startswith('tr1/'): - error(filename, linenum, 'build/c++tr1', 5, - ('C++ TR1 headers such as <%s> are unapproved.') % include.group(1)) - - # Flag unapproved C++11 headers. - if include and include.group(1) in ('cfenv', - 'condition_variable', - 'fenv.h', - 'future', - 'mutex', - 'thread', - 'chrono', - 'ratio', - 'regex', - 'system_error', - ): - error(filename, linenum, 'build/c++11', 5, - ('<%s> is an unapproved C++11 header.') % include.group(1)) - - # The only place where we need to worry about C++11 keywords and library - # features in preprocessor directives is in macro definitions. - if Match(r'\s*#', line) and not Match(r'\s*#\s*define\b', line): return - - # These are classes and free functions. The classes are always - # mentioned as std::*, but we only catch the free functions if - # they're not found by ADL. They're alphabetical by header. - for top_name in ( - # type_traits - 'alignment_of', - 'aligned_union', - ): - if Search(r'\bstd::%s\b' % top_name, line): - error(filename, linenum, 'build/c++11', 5, - ('std::%s is an unapproved C++11 class or function. Send c-style ' - 'an example of where it would make your code more readable, and ' - 'they may let you use it.') % top_name) - - -def FlagCxx14Features(filename, clean_lines, linenum, error): - """Flag those C++14 features that we restrict. - - Args: - filename: The name of the current file. - clean_lines: A CleansedLines instance containing the file. - linenum: The number of the line to check. - error: The function to call with any errors found. - """ - line = clean_lines.elided[linenum] - - include = Match(r'\s*#\s*include\s+[<"]([^<"]+)[">]', line) - - # Flag unapproved C++14 headers. - if include and include.group(1) in ('scoped_allocator', 'shared_mutex'): - error(filename, linenum, 'build/c++14', 5, - ('<%s> is an unapproved C++14 header.') % include.group(1)) - - -def ProcessFileData(filename, file_extension, lines, error, - extra_check_functions=[]): - """Performs lint checks and reports any errors to the given error function. - - Args: - filename: Filename of the file that is being processed. - file_extension: The extension (dot not included) of the file. - lines: An array of strings, each representing a line of the file, with the - last element being empty if the file is terminated with a newline. - error: A callable to which errors are reported, which takes 4 arguments: - filename, line number, error level, and message - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - lines = (['// marker so line numbers and indices both start at 1'] + lines + - ['// marker so line numbers end in a known way']) - - include_state = _IncludeState() - function_state = _FunctionState() - nesting_state = NestingState() - - ResetNolintSuppressions() - - CheckForCopyright(filename, lines, error) - ProcessGlobalSuppresions(lines) - RemoveMultiLineComments(filename, lines, error) - clean_lines = CleansedLines(lines) - - if IsHeaderExtension(file_extension): - CheckForHeaderGuard(filename, clean_lines, error) - - for line in xrange(clean_lines.NumLines()): - ProcessLine(filename, file_extension, clean_lines, line, - include_state, function_state, nesting_state, error, - extra_check_functions) - FlagCxx11Features(filename, clean_lines, line, error) - nesting_state.CheckCompletedBlocks(filename, error) - - CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) - - # Check that the .cc file has included its header if it exists. - if _IsSourceExtension(file_extension): - CheckHeaderFileIncluded(filename, include_state, error) - - # We check here rather than inside ProcessLine so that we see raw - # lines rather than "cleaned" lines. - CheckForBadCharacters(filename, lines, error) - - CheckForNewlineAtEOF(filename, lines, error) - -def ProcessConfigOverrides(filename): - """ Loads the configuration files and processes the config overrides. - - Args: - filename: The name of the file being processed by the linter. - - Returns: - False if the current |filename| should not be processed further. - """ - - abs_filename = os.path.abspath(filename) - cfg_filters = [] - keep_looking = True - while keep_looking: - abs_path, base_name = os.path.split(abs_filename) - if not base_name: - break # Reached the root directory. - - cfg_file = os.path.join(abs_path, "CPPLINT.cfg") - abs_filename = abs_path - if not os.path.isfile(cfg_file): - continue - - try: - with open(cfg_file) as file_handle: - for line in file_handle: - line, _, _ = line.partition('#') # Remove comments. - if not line.strip(): - continue - - name, _, val = line.partition('=') - name = name.strip() - val = val.strip() - if name == 'set noparent': - keep_looking = False - elif name == 'filter': - cfg_filters.append(val) - elif name == 'exclude_files': - # When matching exclude_files pattern, use the base_name of - # the current file name or the directory name we are processing. - # For example, if we are checking for lint errors in /foo/bar/baz.cc - # and we found the .cfg file at /foo/CPPLINT.cfg, then the config - # file's "exclude_files" filter is meant to be checked against "bar" - # and not "baz" nor "bar/baz.cc". - if base_name: - pattern = re.compile(val) - if pattern.match(base_name): - sys.stderr.write('Ignoring "%s": file excluded by "%s". ' - 'File path component "%s" matches ' - 'pattern "%s"\n' % - (filename, cfg_file, base_name, val)) - return False - elif name == 'linelength': - global _line_length - try: - _line_length = int(val) - except ValueError: - sys.stderr.write('Line length must be numeric.') - elif name == 'root': - global _root - _root = val - elif name == 'headers': - ProcessHppHeadersOption(val) - else: - sys.stderr.write( - 'Invalid configuration option (%s) in file %s\n' % - (name, cfg_file)) - - except IOError: - sys.stderr.write( - "Skipping config file '%s': Can't open for reading\n" % cfg_file) - keep_looking = False - - # Apply all the accumulated filters in reverse order (top-level directory - # config options having the least priority). - for filter in reversed(cfg_filters): - _AddFilters(filter) - - return True - - -def ProcessFile(filename, vlevel, extra_check_functions=[]): - """Does google-lint on a single file. - - Args: - filename: The name of the file to parse. - - vlevel: The level of errors to report. Every error of confidence - >= verbose_level will be reported. 0 is a good default. - - extra_check_functions: An array of additional check functions that will be - run on each source line. Each function takes 4 - arguments: filename, clean_lines, line, error - """ - - _SetVerboseLevel(vlevel) - _BackupFilters() - - if not ProcessConfigOverrides(filename): - _RestoreFilters() - return - - lf_lines = [] - crlf_lines = [] - try: - # Support the UNIX convention of using "-" for stdin. Note that - # we are not opening the file with universal newline support - # (which codecs doesn't support anyway), so the resulting lines do - # contain trailing '\r' characters if we are reading a file that - # has CRLF endings. - # If after the split a trailing '\r' is present, it is removed - # below. - if filename == '-': - lines = codecs.StreamReaderWriter(sys.stdin, - codecs.getreader('utf8'), - codecs.getwriter('utf8'), - 'replace').read().split('\n') - else: - lines = codecs.open(filename, 'r', 'utf8', 'replace').read().split('\n') - - # Remove trailing '\r'. - # The -1 accounts for the extra trailing blank line we get from split() - for linenum in range(len(lines) - 1): - if lines[linenum].endswith('\r'): - lines[linenum] = lines[linenum].rstrip('\r') - crlf_lines.append(linenum + 1) - else: - lf_lines.append(linenum + 1) - - except IOError: - sys.stderr.write( - "Skipping input '%s': Can't open for reading\n" % filename) - _RestoreFilters() - return - - # Note, if no dot is found, this will give the entire filename as the ext. - file_extension = filename[filename.rfind('.') + 1:] - - # When reading from stdin, the extension is unknown, so no cpplint tests - # should rely on the extension. - if filename != '-' and file_extension not in _valid_extensions: - sys.stderr.write('Ignoring %s; not a valid file name ' - '(%s)\n' % (filename, ', '.join(_valid_extensions))) - else: - ProcessFileData(filename, file_extension, lines, Error, - extra_check_functions) - - # If end-of-line sequences are a mix of LF and CR-LF, issue - # warnings on the lines with CR. - # - # Don't issue any warnings if all lines are uniformly LF or CR-LF, - # since critique can handle these just fine, and the style guide - # doesn't dictate a particular end of line sequence. - # - # We can't depend on os.linesep to determine what the desired - # end-of-line sequence should be, since that will return the - # server-side end-of-line sequence. - if lf_lines and crlf_lines: - # Warn on every line with CR. An alternative approach might be to - # check whether the file is mostly CRLF or just LF, and warn on the - # minority, we bias toward LF here since most tools prefer LF. - for linenum in crlf_lines: - Error(filename, linenum, 'whitespace/newline', 1, - 'Unexpected \\r (^M) found; better to use only \\n') - - sys.stdout.write('Done processing %s\n' % filename) - _RestoreFilters() - - -def PrintUsage(message): - """Prints a brief usage string and exits, optionally with an error message. - - Args: - message: The optional error message. - """ - sys.stderr.write(_USAGE) - if message: - sys.exit('\nFATAL ERROR: ' + message) - else: - sys.exit(1) - - -def PrintCategories(): - """Prints a list of all the error-categories used by error messages. - - These are the categories used to filter messages via --filter. - """ - sys.stderr.write(''.join(' %s\n' % cat for cat in _ERROR_CATEGORIES)) - sys.exit(0) - - -def ParseArguments(args): - """Parses the command line arguments. - - This may set the output format and verbosity level as side-effects. - - Args: - args: The command line arguments: - - Returns: - The list of filenames to lint. - """ - try: - (opts, filenames) = getopt.getopt(args, '', ['help', 'output=', 'verbose=', - 'counting=', - 'filter=', - 'root=', - 'linelength=', - 'extensions=', - 'headers=']) - except getopt.GetoptError: - PrintUsage('Invalid arguments.') - - verbosity = _VerboseLevel() - output_format = _OutputFormat() - filters = '' - counting_style = '' - - for (opt, val) in opts: - if opt == '--help': - PrintUsage(None) - elif opt == '--output': - if val not in ('emacs', 'vs7', 'eclipse'): - PrintUsage('The only allowed output formats are emacs, vs7 and eclipse.') - output_format = val - elif opt == '--verbose': - verbosity = int(val) - elif opt == '--filter': - filters = val - if not filters: - PrintCategories() - elif opt == '--counting': - if val not in ('total', 'toplevel', 'detailed'): - PrintUsage('Valid counting options are total, toplevel, and detailed') - counting_style = val - elif opt == '--root': - global _root - _root = val - elif opt == '--linelength': - global _line_length - try: - _line_length = int(val) - except ValueError: - PrintUsage('Line length must be digits.') - elif opt == '--extensions': - global _valid_extensions - try: - _valid_extensions = set(val.split(',')) - except ValueError: - PrintUsage('Extensions must be comma seperated list.') - elif opt == '--headers': - ProcessHppHeadersOption(val) - - if not filenames: - PrintUsage('No files were specified.') - - _SetOutputFormat(output_format) - _SetVerboseLevel(verbosity) - _SetFilters(filters) - _SetCountingStyle(counting_style) - - return filenames - - -def main(): - filenames = ParseArguments(sys.argv[1:]) - - # Change stderr to write with replacement characters so we don't die - # if we try to print something containing non-ASCII characters. - sys.stderr = codecs.StreamReaderWriter(sys.stderr, - codecs.getreader('utf8'), - codecs.getwriter('utf8'), - 'replace') - - _cpplint_state.ResetErrorCounts() - for filename in filenames: - ProcessFile(filename, _cpplint_state.verbose_level) - _cpplint_state.PrintErrorCounts() - - sys.exit(_cpplint_state.error_count > 0) - - -if __name__ == '__main__': - main() diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/cpplint.sh b/extra-libraries/SDFat/SdFat-1.1.0/extras/cpplint.sh deleted file mode 100644 index daf45aa2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/cpplint.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -export PATH=/cygdrive/c/Python27:/cygdrive/c/Python27/DLLs:/cygdrive/c/Python27/Scripts:$PATH -echo $PATH -python cpplint.py --filter=-build/include,-runtime/references,-build/header_guard ../src/*.* ../src/*/*.* 2>cpplint.txt \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/cpplint.txt b/extra-libraries/SDFat/SdFat-1.1.0/extras/cpplint.txt deleted file mode 100644 index 696803d1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/cpplint.txt +++ /dev/null @@ -1 +0,0 @@ -../src/FatLib/FatLibConfig.h:137: Lines should be <= 80 characters long [whitespace/line_length] [2] diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h.html deleted file mode 100644 index df89b2fc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/ArduinoFiles.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
ArduinoFiles.h File Reference
-
-
- -

PrintFile class. -More...

-
#include "FatLibConfig.h"
-#include "FatFile.h"
-#include <limits.h>
-
-Include dependency graph for ArduinoFiles.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
- - - - - - - -

-Classes

class  File
 Arduino SD.h style File API. More...
 
class  PrintFile
 FatFile with Print. More...
 
- - - - - -

-Macros

#define FILE_READ   O_RDONLY
 
#define FILE_WRITE   (O_RDWR | O_CREAT | O_AT_END)
 
-

Detailed Description

-

PrintFile class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ FILE_READ

- -
-
- - - - -
#define FILE_READ   O_RDONLY
-
-

Arduino SD.h style flag for open for read.

- -
-
- -

◆ FILE_WRITE

- -
-
- - - - -
#define FILE_WRITE   (O_RDWR | O_CREAT | O_AT_END)
-
-

Arduino SD.h style flag for open at EOF for read/write with create.

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h__dep__incl.png deleted file mode 100644 index 6e72f2d9..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h__incl.png deleted file mode 100644 index 7dd58c58..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_files_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h.html deleted file mode 100644 index c718605c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/ArduinoStream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
ArduinoStream.h File Reference
-
-
- -

ArduinoInStream and ArduinoOutStream classes. -More...

-
#include "FatLibConfig.h"
-#include "bufstream.h"
-
-Include dependency graph for ArduinoStream.h:
-
-
- - - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
- - - - - - - -

-Classes

class  ArduinoInStream
 Input stream for Arduino Stream objects. More...
 
class  ArduinoOutStream
 Output stream for Arduino Print objects. More...
 
-

Detailed Description

-

ArduinoInStream and ArduinoOutStream classes.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h__dep__incl.png deleted file mode 100644 index c510f4c5..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h__incl.png deleted file mode 100644 index d780e459..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_arduino_stream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h.html deleted file mode 100644 index 750aa630..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/BlockDriver.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
BlockDriver.h File Reference
-
-
- -

Define block driver. -More...

-
#include "FatLib/BaseBlockDriver.h"
-#include "SdCard/SdSpiCard.h"
-
-Include dependency graph for BlockDriver.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - -
-
- - - -

-Typedefs

typedef SdSpiCard BlockDriver
 
-

Detailed Description

-

Define block driver.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Typedef Documentation

- -

◆ BlockDriver

- -
-
- - - - -
typedef SdSpiCard BlockDriver
-
-

typedef for BlockDriver

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h__dep__incl.png deleted file mode 100644 index b12fc564..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h__incl.png deleted file mode 100644 index bd829946..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_block_driver_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h.html deleted file mode 100644 index 3402ced6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatFile.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatFile.h File Reference
-
-
- -

FatFile class. -More...

-
#include <string.h>
-#include <stddef.h>
-#include <limits.h>
-#include "FatLibConfig.h"
-#include "FatApiConstants.h"
-#include "FatStructs.h"
-#include "FatVolume.h"
-
-Include dependency graph for FatFile.h:
-
-
- - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - -
-
- - - - - - - - - - -

-Classes

class  FatFile
 Basic file class. More...
 
struct  FatPos_t
 Internal type for file position - do not use in user apps. More...
 
struct  fname_t
 Internal type for Short File Name - do not use in user apps. More...
 
- - - - - - - - - - - -

-Macros

#define isDirSeparator(c)   ((c) == '/')
 
#define pgm_read_byte(addr)   (*(const unsigned char*)(addr))
 
#define pgm_read_word(addr)   (*(const uint16_t*)(addr))
 
#define PROGMEM
 
#define PSTR(x)   (x)
 
- - - - - - - - - - - -

-Variables

const uint8_t FNAME_FLAG_LC_BASE = DIR_NT_LC_BASE
 
const uint8_t FNAME_FLAG_LC_EXT = DIR_NT_LC_EXT
 
const uint8_t FNAME_FLAG_LOST_CHARS = 0X01
 
const uint8_t FNAME_FLAG_MIXED_CASE = 0X02
 
const uint8_t FNAME_FLAG_NEED_LFN
 
-

Detailed Description

-

FatFile class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ isDirSeparator

- -
-
- - - - - - - - -
#define isDirSeparator( c)   ((c) == '/')
-
-

Expression for path name separator.

- -
-
- -

◆ pgm_read_byte

- -
-
- - - - - - - - -
#define pgm_read_byte( addr)   (*(const unsigned char*)(addr))
-
-

read 8-bits from flash for ARM

- -
-
- -

◆ pgm_read_word

- -
-
- - - - - - - - -
#define pgm_read_word( addr)   (*(const uint16_t*)(addr))
-
-

read 16-bits from flash for ARM

- -
-
- -

◆ PROGMEM

- -
-
- - - - -
#define PROGMEM
-
-

store in flash for ARM

- -
-
- -

◆ PSTR

- -
-
- - - - - - - - -
#define PSTR( x)   (x)
-
-

store literal string in flash for ARM

- -
-
-

Variable Documentation

- -

◆ FNAME_FLAG_LC_BASE

- -
-
- - - - -
const uint8_t FNAME_FLAG_LC_BASE = DIR_NT_LC_BASE
-
-

Filename base-name is all lower case

- -
-
- -

◆ FNAME_FLAG_LC_EXT

- -
-
- - - - -
const uint8_t FNAME_FLAG_LC_EXT = DIR_NT_LC_EXT
-
-

Filename extension is all lower case.

- -
-
- -

◆ FNAME_FLAG_LOST_CHARS

- -
-
- - - - -
const uint8_t FNAME_FLAG_LOST_CHARS = 0X01
-
-

Derived from a LFN with loss or conversion of characters.

- -
-
- -

◆ FNAME_FLAG_MIXED_CASE

- -
-
- - - - -
const uint8_t FNAME_FLAG_MIXED_CASE = 0X02
-
-

Base-name or extension has mixed case.

- -
-
- -

◆ FNAME_FLAG_NEED_LFN

- -
-
- - - - -
const uint8_t FNAME_FLAG_NEED_LFN
-
-Initial value:
=
const uint8_t FNAME_FLAG_MIXED_CASE
Definition: FatFile.h:97
-
const uint8_t FNAME_FLAG_LOST_CHARS
Definition: FatFile.h:95
-

LFN entries are required for file name.

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h__dep__incl.png deleted file mode 100644 index 82fa8871..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h__incl.png deleted file mode 100644 index d7558619..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_system_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_system_8h.html deleted file mode 100644 index 3083e800..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_system_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatFileSystem.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatFileSystem.h File Reference
-
-
- -

FatFileSystem class. -More...

-
#include "FatVolume.h"
-#include "FatFile.h"
-#include "ArduinoFiles.h"
-
-Include dependency graph for FatFileSystem.h:
-
-
- - - - - - - - - - - -
-
- - - - -

-Classes

class  FatFileSystem
 Integration class for the FatLib library. More...
 
-

Detailed Description

-

FatFileSystem class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_system_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_system_8h__incl.png deleted file mode 100644 index 7c830bc9..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_file_system_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h.html deleted file mode 100644 index ecf5feb2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h.html +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatLibConfig.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatLibConfig.h File Reference
-
-
- -

configuration definitions -More...

-
#include <stdint.h>
-#include "SdFatConfig.h"
-#include <Arduino.h>
-
-Include dependency graph for FatLibConfig.h:
-
-
- - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - -

-Macros

#define DESTRUCTOR_CLOSES_FILE   0
 
#define ENABLE_ARDUINO_FEATURES   1
 
#define ENDL_CALLS_FLUSH   0
 
#define FAT12_SUPPORT   0
 
#define MAINTAIN_FREE_CLUSTER_COUNT   0
 
#define USE_LONG_FILE_NAMES   1
 
#define USE_MULTI_BLOCK_IO   1
 
#define USE_SEPARATE_FAT_CACHE   0
 
-

Detailed Description

-

configuration definitions

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ DESTRUCTOR_CLOSES_FILE

- -
-
- - - - -
#define DESTRUCTOR_CLOSES_FILE   0
-
-

Set DESTRUCTOR_CLOSES_FILE non-zero to close a file in its destructor.

-

Causes use of lots of heap in ARM.

- -
-
- -

◆ ENABLE_ARDUINO_FEATURES

- -
-
- - - - -
#define ENABLE_ARDUINO_FEATURES   1
-
-

Enable Extra features for Arduino.

- -
-
- -

◆ ENDL_CALLS_FLUSH

- -
-
- - - - -
#define ENDL_CALLS_FLUSH   0
-
-

Call flush for endl if ENDL_CALLS_FLUSH is non-zero

-

The standard for iostreams is to call flush. This is very costly for SdFat. Each call to flush causes 2048 bytes of I/O to the SD.

-

SdFat has a single 512 byte buffer for I/O so it must write the current data block to the SD, read the directory block from the SD, update the directory entry, write the directory block to the SD and read the data block back into the buffer.

-

The SD flash memory controller is not designed for this many rewrites so performance may be reduced by more than a factor of 100.

-

If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force all data to be written to the SD.

- -
-
- -

◆ FAT12_SUPPORT

- -
-
- - - - -
#define FAT12_SUPPORT   0
-
-

Allow FAT12 volumes if FAT12_SUPPORT is non-zero. FAT12 has not been well tested.

- -
-
- -

◆ MAINTAIN_FREE_CLUSTER_COUNT

- -
-
- - - - -
#define MAINTAIN_FREE_CLUSTER_COUNT   0
-
-

Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters updated. This will increase the speed of the freeClusterCount() call after the first call. Extra flash will be required.

- -
-
- -

◆ USE_LONG_FILE_NAMES

- -
-
- - - - -
#define USE_LONG_FILE_NAMES   1
-
-

Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). Long File Name are limited to a maximum length of 255 characters.

-

This implementation allows 7-bit characters in the range 0X20 to 0X7E. The following characters are not allowed:

-

< (less than)

-

(greater than)

-
-

: (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark)

    -
  • (asterisk)
  • -
- -
-
- -

◆ USE_MULTI_BLOCK_IO

- -
-
- - - - -
#define USE_MULTI_BLOCK_IO   1
-
-

Set USE_MULTI_BLOCK_IO non-zero to use multi-block SD read/write.

-

Don't use mult-block read/write on small AVR boards.

- -
-
- -

◆ USE_SEPARATE_FAT_CACHE

- -
-
- - - - -
#define USE_SEPARATE_FAT_CACHE   0
-
-

Set USE_SEPARATE_FAT_CACHE non-zero to use a second 512 byte cache for FAT table entries. Improves performance for large writes that are not a multiple of 512 bytes.

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h__dep__incl.png deleted file mode 100644 index e0f6c08c..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h__incl.png deleted file mode 100644 index 630dabfa..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_lib_config_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_structs_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_structs_8h.html deleted file mode 100644 index fdab6f66..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_structs_8h.html +++ /dev/null @@ -1,1379 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatStructs.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatStructs.h File Reference
-
-
- -

FAT file structures. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  biosParmBlock
 BIOS parameter block. More...
 
struct  directoryEntry
 FAT short directory entry. More...
 
struct  fat32_boot
 Boot sector for a FAT32 volume. More...
 
struct  fat32_fsinfo
 FSINFO sector for a FAT32 volume. More...
 
struct  fat_boot
 Boot sector for a FAT12/FAT16 volume. More...
 
struct  longDirectoryEntry
 FAT long directory entry. More...
 
struct  masterBootRecord
 Master Boot Record. More...
 
struct  partitionTable
 MBR partition table entry. More...
 
- - - - - - - - - - - - - - - - - -

-Typedefs

typedef struct biosParmBlock bpb_t
 
typedef struct directoryEntry dir_t
 
typedef struct fat32_boot fat32_boot_t
 
typedef struct fat32_fsinfo fat32_fsinfo_t
 
typedef struct fat_boot fat_boot_t
 
typedef struct longDirectoryEntry ldir_t
 
typedef struct masterBootRecord mbr_t
 
typedef struct partitionTable part_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

static uint8_t DIR_IS_FILE (const dir_t *dir)
 
static uint8_t DIR_IS_FILE_OR_SUBDIR (const dir_t *dir)
 
static uint8_t DIR_IS_HIDDEN (const dir_t *dir)
 
static uint8_t DIR_IS_LONG_NAME (const dir_t *dir)
 
static uint8_t DIR_IS_SUBDIR (const dir_t *dir)
 
static uint8_t DIR_IS_SYSTEM (const dir_t *dir)
 
static uint16_t FAT_DATE (uint16_t year, uint8_t month, uint8_t day)
 
static uint8_t FAT_DAY (uint16_t fatDate)
 
static uint8_t FAT_HOUR (uint16_t fatTime)
 
static uint8_t FAT_MINUTE (uint16_t fatTime)
 
static uint8_t FAT_MONTH (uint16_t fatDate)
 
static uint8_t FAT_SECOND (uint16_t fatTime)
 
static uint16_t FAT_TIME (uint8_t hour, uint8_t minute, uint8_t second)
 
static uint16_t FAT_YEAR (uint16_t fatDate)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

const uint8_t BOOTSIG0 = 0X55
 
const uint8_t BOOTSIG1 = 0XAA
 
const uint8_t DIR_ATT_ARCHIVE = 0X20
 
const uint8_t DIR_ATT_DEFINED_BITS = 0X3F
 
const uint8_t DIR_ATT_DIRECTORY = 0X10
 
const uint8_t DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY)
 
const uint8_t DIR_ATT_HIDDEN = 0X02
 
const uint8_t DIR_ATT_LONG_NAME = 0X0F
 
const uint8_t DIR_ATT_LONG_NAME_MASK = 0X3F
 
const uint8_t DIR_ATT_READ_ONLY = 0X01
 
const uint8_t DIR_ATT_SYSTEM = 0X04
 
const uint8_t DIR_ATT_VOLUME_ID = 0X08
 
const uint8_t DIR_NAME_0XE5 = 0X05
 
const uint8_t DIR_NAME_DELETED = 0XE5
 
const uint8_t DIR_NAME_FREE = 0X00
 
const uint8_t DIR_NT_LC_BASE = 0X08
 
const uint8_t DIR_NT_LC_EXT = 0X10
 
const uint8_t EXTENDED_BOOT_SIG = 0X29
 
const uint16_t FAT12EOC = 0XFFF
 
const uint16_t FAT12EOC_MIN = 0XFF8
 
const uint16_t FAT16EOC = 0XFFFF
 
const uint16_t FAT16EOC_MIN = 0XFFF8
 
const uint32_t FAT32EOC = 0X0FFFFFFF
 
const uint32_t FAT32EOC_MIN = 0X0FFFFFF8
 
const uint32_t FAT32MASK = 0X0FFFFFFF
 
const uint16_t FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1
 
const uint16_t FAT_DEFAULT_TIME = (1 << 11)
 
const uint32_t FSINFO_LEAD_SIG = 0x41615252
 
const uint32_t FSINFO_STRUCT_SIG = 0x61417272
 
const uint8_t LDIR_NAME1_DIM = 5
 
const uint8_t LDIR_NAME2_DIM = 6
 
const uint8_t LDIR_NAME3_DIM = 2
 
const uint8_t LDIR_ORD_LAST_LONG_ENTRY = 0X40
 
-

Detailed Description

-

FAT file structures.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Typedef Documentation

- -

◆ bpb_t

- -
-
- - - - -
typedef struct biosParmBlock bpb_t
-
-

Type name for biosParmBlock

- -
-
- -

◆ dir_t

- -
-
- - - - -
typedef struct directoryEntry dir_t
-
-

Type name for directoryEntry

- -
-
- -

◆ fat32_boot_t

- -
-
- - - - -
typedef struct fat32_boot fat32_boot_t
-
-

Type name for FAT32 Boot Sector

- -
-
- -

◆ fat32_fsinfo_t

- -
-
- - - - -
typedef struct fat32_fsinfo fat32_fsinfo_t
-
-

Type name for FAT32 FSINFO Sector

- -
-
- -

◆ fat_boot_t

- -
-
- - - - -
typedef struct fat_boot fat_boot_t
-
-

Type name for FAT Boot Sector

- -
-
- -

◆ ldir_t

- -
-
- - - - -
typedef struct longDirectoryEntry ldir_t
-
-

Type name for longDirectoryEntry

- -
-
- -

◆ mbr_t

- -
-
- - - - -
typedef struct masterBootRecord mbr_t
-
-

Type name for masterBootRecord

- -
-
- -

◆ part_t

- -
-
- - - - -
typedef struct partitionTable part_t
-
-

Type name for partitionTable

- -
-
-

Function Documentation

- -

◆ DIR_IS_FILE()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_FILE (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is for a file

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for a normal file else false.
- -
-
- -

◆ DIR_IS_FILE_OR_SUBDIR()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_FILE_OR_SUBDIR (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is for a file or subdirectory

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for a normal file or subdirectory else false.
- -
-
- -

◆ DIR_IS_HIDDEN()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_HIDDEN (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is hidden

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is hidden else false.
- -
-
- -

◆ DIR_IS_LONG_NAME()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_LONG_NAME (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is part of a long name

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for part of a long name else false.
- -
-
- -

◆ DIR_IS_SUBDIR()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_SUBDIR (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is for a subdirectory

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is for a subdirectory else false.
- -
-
- -

◆ DIR_IS_SYSTEM()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t DIR_IS_SYSTEM (const dir_tdir)
-
-inlinestatic
-
-

Directory entry is system type

Parameters
- - -
[in]dirPointer to a directory entry.
-
-
-
Returns
true if the entry is system else false.
- -
-
- -

◆ FAT_DATE()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static uint16_t FAT_DATE (uint16_t year,
uint8_t month,
uint8_t day 
)
-
-inlinestatic
-
-

date field for FAT directory entry

Parameters
- - - - -
[in]year[1980,2107]
[in]month[1,12]
[in]day[1,31]
-
-
-
Returns
Packed date for dir_t entry.
- -
-
- -

◆ FAT_DAY()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_DAY (uint16_t fatDate)
-
-inlinestatic
-
-

day part of FAT directory date field

Parameters
- - -
[in]fatDateDate in packed dir format.
-
-
-
Returns
Extracted day [1,31]
- -
-
- -

◆ FAT_HOUR()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_HOUR (uint16_t fatTime)
-
-inlinestatic
-
-

hour part of FAT directory time field

Parameters
- - -
[in]fatTimeTime in packed dir format.
-
-
-
Returns
Extracted hour [0,23]
- -
-
- -

◆ FAT_MINUTE()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_MINUTE (uint16_t fatTime)
-
-inlinestatic
-
-

minute part of FAT directory time field

Parameters
- - -
[in]fatTimeTime in packed dir format.
-
-
-
Returns
Extracted minute [0,59]
- -
-
- -

◆ FAT_MONTH()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_MONTH (uint16_t fatDate)
-
-inlinestatic
-
-

month part of FAT directory date field

Parameters
- - -
[in]fatDateDate in packed dir format.
-
-
-
Returns
Extracted month [1,12]
- -
-
- -

◆ FAT_SECOND()

- -
-
- - - - - -
- - - - - - - - -
static uint8_t FAT_SECOND (uint16_t fatTime)
-
-inlinestatic
-
-

second part of FAT directory time field Note second/2 is stored in packed time.

-
Parameters
- - -
[in]fatTimeTime in packed dir format.
-
-
-
Returns
Extracted second [0,58]
- -
-
- -

◆ FAT_TIME()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
static uint16_t FAT_TIME (uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inlinestatic
-
-

time field for FAT directory entry

Parameters
- - - - -
[in]hour[0,23]
[in]minute[0,59]
[in]second[0,59]
-
-
-
Returns
Packed time for dir_t entry.
- -
-
- -

◆ FAT_YEAR()

- -
-
- - - - - -
- - - - - - - - -
static uint16_t FAT_YEAR (uint16_t fatDate)
-
-inlinestatic
-
-

year part of FAT directory date field

Parameters
- - -
[in]fatDateDate in packed dir format.
-
-
-
Returns
Extracted year [1980,2107]
- -
-
-

Variable Documentation

- -

◆ BOOTSIG0

- -
-
- - - - -
const uint8_t BOOTSIG0 = 0X55
-
-

Value for byte 510 of boot block or MBR

- -
-
- -

◆ BOOTSIG1

- -
-
- - - - -
const uint8_t BOOTSIG1 = 0XAA
-
-

Value for byte 511 of boot block or MBR

- -
-
- -

◆ DIR_ATT_ARCHIVE

- -
-
- - - - -
const uint8_t DIR_ATT_ARCHIVE = 0X20
-
-

Old DOS archive bit for backup support

- -
-
- -

◆ DIR_ATT_DEFINED_BITS

- -
-
- - - - -
const uint8_t DIR_ATT_DEFINED_BITS = 0X3F
-
-

defined attribute bits

- -
-
- -

◆ DIR_ATT_DIRECTORY

- -
-
- - - - -
const uint8_t DIR_ATT_DIRECTORY = 0X10
-
-

Entry is for a directory

- -
-
- -

◆ DIR_ATT_FILE_TYPE_MASK

- -
-
- - - - -
const uint8_t DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY)
-
-

Mask for file/subdirectory tests

- -
-
- -

◆ DIR_ATT_HIDDEN

- -
-
- - - - -
const uint8_t DIR_ATT_HIDDEN = 0X02
-
-

File should e hidden in directory listings

- -
-
- -

◆ DIR_ATT_LONG_NAME

- -
-
- - - - -
const uint8_t DIR_ATT_LONG_NAME = 0X0F
-
-

Test value for long name entry. Test is (d->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME.

- -
-
- -

◆ DIR_ATT_LONG_NAME_MASK

- -
-
- - - - -
const uint8_t DIR_ATT_LONG_NAME_MASK = 0X3F
-
-

Test mask for long name entry

- -
-
- -

◆ DIR_ATT_READ_ONLY

- -
-
- - - - -
const uint8_t DIR_ATT_READ_ONLY = 0X01
-
-

file is read-only

- -
-
- -

◆ DIR_ATT_SYSTEM

- -
-
- - - - -
const uint8_t DIR_ATT_SYSTEM = 0X04
-
-

Entry is for a system file

- -
-
- -

◆ DIR_ATT_VOLUME_ID

- -
-
- - - - -
const uint8_t DIR_ATT_VOLUME_ID = 0X08
-
-

Directory entry contains the volume label

- -
-
- -

◆ DIR_NAME_0XE5

- -
-
- - - - -
const uint8_t DIR_NAME_0XE5 = 0X05
-
-

escape for name[0] = 0XE5

- -
-
- -

◆ DIR_NAME_DELETED

- -
-
- - - - -
const uint8_t DIR_NAME_DELETED = 0XE5
-
-

name[0] value for entry that is free after being "deleted"

- -
-
- -

◆ DIR_NAME_FREE

- -
-
- - - - -
const uint8_t DIR_NAME_FREE = 0X00
-
-

name[0] value for entry that is free and no allocated entries follow

- -
-
- -

◆ DIR_NT_LC_BASE

- -
-
- - - - -
const uint8_t DIR_NT_LC_BASE = 0X08
-
-

Filename base-name is all lower case

- -
-
- -

◆ DIR_NT_LC_EXT

- -
-
- - - - -
const uint8_t DIR_NT_LC_EXT = 0X10
-
-

Filename extension is all lower case.

- -
-
- -

◆ EXTENDED_BOOT_SIG

- -
-
- - - - -
const uint8_t EXTENDED_BOOT_SIG = 0X29
-
-

Value for bootSignature field int FAT/FAT32 boot sector

- -
-
- -

◆ FAT12EOC

- -
-
- - - - -
const uint16_t FAT12EOC = 0XFFF
-
-

FAT12 end of chain value used by Microsoft.

- -
-
- -

◆ FAT12EOC_MIN

- -
-
- - - - -
const uint16_t FAT12EOC_MIN = 0XFF8
-
-

Minimum value for FAT12 EOC. Use to test for EOC.

- -
-
- -

◆ FAT16EOC

- -
-
- - - - -
const uint16_t FAT16EOC = 0XFFFF
-
-

FAT16 end of chain value used by Microsoft.

- -
-
- -

◆ FAT16EOC_MIN

- -
-
- - - - -
const uint16_t FAT16EOC_MIN = 0XFFF8
-
-

Minimum value for FAT16 EOC. Use to test for EOC.

- -
-
- -

◆ FAT32EOC

- -
-
- - - - -
const uint32_t FAT32EOC = 0X0FFFFFFF
-
-

FAT32 end of chain value used by Microsoft.

- -
-
- -

◆ FAT32EOC_MIN

- -
-
- - - - -
const uint32_t FAT32EOC_MIN = 0X0FFFFFF8
-
-

Minimum value for FAT32 EOC. Use to test for EOC.

- -
-
- -

◆ FAT32MASK

- -
-
- - - - -
const uint32_t FAT32MASK = 0X0FFFFFFF
-
-

Mask a for FAT32 entry. Entries are 28 bits.

- -
-
- -

◆ FAT_DEFAULT_DATE

- -
-
- - - - -
const uint16_t FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1
-
-

Default date for file timestamps is 1 Jan 2000

- -
-
- -

◆ FAT_DEFAULT_TIME

- -
-
- - - - -
const uint16_t FAT_DEFAULT_TIME = (1 << 11)
-
-

Default time for file timestamp is 1 am

- -
-
- -

◆ FSINFO_LEAD_SIG

- -
-
- - - - -
const uint32_t FSINFO_LEAD_SIG = 0x41615252
-
-

Lead signature for a FSINFO sector

- -
-
- -

◆ FSINFO_STRUCT_SIG

- -
-
- - - - -
const uint32_t FSINFO_STRUCT_SIG = 0x61417272
-
-

Struct signature for a FSINFO sector

- -
-
- -

◆ LDIR_NAME1_DIM

- -
-
- - - - -
const uint8_t LDIR_NAME1_DIM = 5
-
-

Dimension of first name field in long directory entry

- -
-
- -

◆ LDIR_NAME2_DIM

- -
-
- - - - -
const uint8_t LDIR_NAME2_DIM = 6
-
-

Dimension of first name field in long directory entry

- -
-
- -

◆ LDIR_NAME3_DIM

- -
-
- - - - -
const uint8_t LDIR_NAME3_DIM = 2
-
-

Dimension of first name field in long directory entry

- -
-
- -

◆ LDIR_ORD_LAST_LONG_ENTRY

- -
-
- - - - -
const uint8_t LDIR_ORD_LAST_LONG_ENTRY = 0X40
-
-

Ord mast that indicates the entry is the last long dir entry in a set of long dir entries. All valid sets of long dir entries must begin with an entry having this mask.

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_structs_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_structs_8h__dep__incl.png deleted file mode 100644 index ca4de392..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_structs_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h.html deleted file mode 100644 index a3805ad1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/FatVolume.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FatVolume.h File Reference
-
-
- -

FatVolume class. -More...

-
#include <stddef.h>
-#include "FatLibConfig.h"
-#include "FatStructs.h"
-#include "BlockDriver.h"
-
-Include dependency graph for FatVolume.h:
-
-
- - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - -
-
- - - - - - - - - - -

-Classes

union  cache_t
 Cache for an raw data block. More...
 
class  FatCache
 Block cache. More...
 
class  FatVolume
 Access FAT16 and FAT32 volumes on raw file devices. More...
 
- - - -

-Typedefs

typedef Print print_t
 
-

Detailed Description

-

FatVolume class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Typedef Documentation

- -

◆ print_t

- -
-
- - - - -
typedef Print print_t
-
-

Use Print for Arduino

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h__dep__incl.png deleted file mode 100644 index 0a31b33a..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h__incl.png deleted file mode 100644 index 04bb7313..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_fat_volume_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_free_stack_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_free_stack_8h.html deleted file mode 100644 index 0c0ea7e0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_free_stack_8h.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FreeStack.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
FreeStack.h File Reference
-
-
- -

FreeStack() function. -More...

- - - - -

-Functions

static int FreeStack ()
 
- - - - - -

-Variables

char * __brkval
 
char __bss_end
 
-

Detailed Description

-

FreeStack() function.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Function Documentation

- -

◆ FreeStack()

- -
-
- - - - - -
- - - - - - - -
static int FreeStack ()
-
-static
-
-

Amount of free stack space.

Returns
The number of free bytes.
- -
-
-

Variable Documentation

- -

◆ __brkval

- -
-
- - - - -
char* __brkval
-
-

boundary between stack and heap.

- -
-
- -

◆ __bss_end

- -
-
- - - - -
char __bss_end
-
-

End of bss section.

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_minimum_serial_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_minimum_serial_8h.html deleted file mode 100644 index 8611e5a0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_minimum_serial_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/MinimumSerial.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
MinimumSerial.h File Reference
-
-
- -

Minimal AVR Serial driver. -More...

-
#include "SysCall.h"
-
-Include dependency graph for MinimumSerial.h:
-
-
- - - -
-
- - - - -

-Classes

class  MinimumSerial
 mini serial class for the SdFat library. More...
 
-

Detailed Description

-

Minimal AVR Serial driver.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_minimum_serial_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_minimum_serial_8h__incl.png deleted file mode 100644 index b7fe5cb8..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_minimum_serial_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_8h.html deleted file mode 100644 index a5954009..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_8h.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdFat.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SdFat.h File Reference
-
-
- -

SdFat class. -More...

-
#include "SysCall.h"
-#include "BlockDriver.h"
-#include "FatLib/FatLib.h"
-#include "SdCard/SdioCard.h"
-
-Include dependency graph for SdFat.h:
-
-
- - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

class  Sd2Card
 Raw access to SD and SDHC card using default SPI library. More...
 
class  SdBaseFile
 Class for backward compatibility. More...
 
class  SdFat
 Main file system class for SdFat library. More...
 
class  SdFatEX
 SdFat class with extended SD I/O. More...
 
class  SdFatSdio
 SdFat class using SDIO. More...
 
class  SdFatSdioEX
 SdFat class using SDIO. More...
 
class  SdFatSoftSpi< MisoPin, MosiPin, SckPin >
 SdFat class using software SPI. More...
 
class  SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >
 SdFat class using software SPI and extended SD I/O. More...
 
class  SdFile
 Class for backward compatibility. More...
 
class  SdFileSystem< SdDriverClass >
 Virtual base class for SdFat library. More...
 
- - - -

-Macros

#define SD_FAT_VERSION   "1.0.11"
 
-

Detailed Description

-

SdFat class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ SD_FAT_VERSION

- -
-
- - - - -
#define SD_FAT_VERSION   "1.0.11"
-
-

SdFat version

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_8h__incl.png deleted file mode 100644 index e5f56148..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h.html deleted file mode 100644 index 7f47cf79..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdFatConfig.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SdFatConfig.h File Reference
-
-
- -

configuration definitions -More...

-
#include <Arduino.h>
-#include <stdint.h>
-
-Include dependency graph for SdFatConfig.h:
-
-
- - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

#define CHECK_FLASH_PROGRAMMING   1
 
#define DESTRUCTOR_CLOSES_FILE   0
 
#define ENABLE_EXTENDED_TRANSFER_CLASS   0
 
#define ENABLE_SDIO_CLASS   0
 
#define ENABLE_SOFTWARE_SPI_CLASS   0
 
#define ENDL_CALLS_FLUSH   0
 
#define FAT12_SUPPORT   0
 
#define IMPLEMENT_SPI_PORT_SELECTION   0
 
#define INCLUDE_SDIOS   1
 
#define MAINTAIN_FREE_CLUSTER_COUNT   0
 
#define SD_HAS_CUSTOM_SPI   0
 
#define USE_FCNTL_H   0
 
#define USE_LONG_FILE_NAMES   1
 
#define USE_MULTI_BLOCK_IO   1
 
#define USE_SD_CRC   0
 
#define USE_SEPARATE_FAT_CACHE   0
 
#define USE_STANDARD_SPI_LIBRARY   0
 
#define WDT_YIELD_TIME_MICROS   0
 
-

Detailed Description

-

configuration definitions

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ CHECK_FLASH_PROGRAMMING

- -
-
- - - - -
#define CHECK_FLASH_PROGRAMMING   1
-
-

If CHECK_FLASH_PROGRAMMING is zero, overlap of single sector flash programming and other operations will be allowed for faster write performance.

-

Some cards will not sleep in low power mode unless CHECK_FLASH_PROGRAMMING is non-zero.

- -
-
- -

◆ DESTRUCTOR_CLOSES_FILE

- -
-
- - - - -
#define DESTRUCTOR_CLOSES_FILE   0
-
-

Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor.

-

Causes use of lots of heap in ARM.

- -
-
- -

◆ ENABLE_EXTENDED_TRANSFER_CLASS

- -
-
- - - - -
#define ENABLE_EXTENDED_TRANSFER_CLASS   0
-
-

If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, the class SdFatSoftSpiEX will be defined.

-

These classes used extended multi-block SD I/O for better performance. the SPI bus may not be shared with other devices in this mode.

- -
-
- -

◆ ENABLE_SDIO_CLASS

- -
-
- - - - -
#define ENABLE_SDIO_CLASS   0
-
-

Enable SDIO driver if available.

- -
-
- -

◆ ENABLE_SOFTWARE_SPI_CLASS

- -
-
- - - - -
#define ENABLE_SOFTWARE_SPI_CLASS   0
-
-

If the symbol ENABLE_SOFTWARE_SPI_CLASS is nonzero, the class SdFatSoftSpi will be defined. If ENABLE_EXTENDED_TRANSFER_CLASS is also nonzero, the class SdFatSoftSpiEX will be defined.

- -
-
- -

◆ ENDL_CALLS_FLUSH

- -
-
- - - - -
#define ENDL_CALLS_FLUSH   0
-
-

Call flush for endl if ENDL_CALLS_FLUSH is nonzero

-

The standard for iostreams is to call flush. This is very costly for SdFat. Each call to flush causes 2048 bytes of I/O to the SD.

-

SdFat has a single 512 byte buffer for SD I/O so it must write the current data block to the SD, read the directory block from the SD, update the directory entry, write the directory block to the SD and read the data block back into the buffer.

-

The SD flash memory controller is not designed for this many rewrites so performance may be reduced by more than a factor of 100.

-

If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force all data to be written to the SD.

- -
-
- -

◆ FAT12_SUPPORT

- -
-
- - - - -
#define FAT12_SUPPORT   0
-
-

Set FAT12_SUPPORT nonzero to enable use if FAT12 volumes. FAT12 has not been well tested and requires additional flash.

- -
-
- -

◆ IMPLEMENT_SPI_PORT_SELECTION

- -
-
- - - - -
#define IMPLEMENT_SPI_PORT_SELECTION   0
-
-

Check if API to select HW SPI port is needed.

- -
-
- -

◆ INCLUDE_SDIOS

- -
-
- - - - -
#define INCLUDE_SDIOS   1
-
-

Set INCLUDE_SDIOS nonzero to include sdios.h in SdFat.h. sdios.h provides C++ style IO Streams.

- -
-
- -

◆ MAINTAIN_FREE_CLUSTER_COUNT

- -
-
- - - - -
#define MAINTAIN_FREE_CLUSTER_COUNT   0
-
-

Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters updated. This will increase the speed of the freeClusterCount() call after the first call. Extra flash will be required.

- -
-
- -

◆ SD_HAS_CUSTOM_SPI

- -
-
- - - - -
#define SD_HAS_CUSTOM_SPI   0
-
-

Determine the default SPI configuration.

- -
-
- -

◆ USE_FCNTL_H

- -
-
- - - - -
#define USE_FCNTL_H   0
-
-

If the symbol USE_FCNTL_H is nonzero, open flags for access modes O_RDONLY, O_WRONLY, O_RDWR and the open modifiers O_APPEND, O_CREAT, O_EXCL, O_SYNC will be defined by including the system file fcntl.h.

- -
-
- -

◆ USE_LONG_FILE_NAMES

- -
-
- - - - -
#define USE_LONG_FILE_NAMES   1
-
-

Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). Long File Name are limited to a maximum length of 255 characters.

-

This implementation allows 7-bit characters in the range 0X20 to 0X7E except the following characters are not allowed:

-

< (less than)

-

(greater than)

-
-

: (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark)

    -
  • (asterisk)
  • -
- -
-
- -

◆ USE_MULTI_BLOCK_IO

- -
-
- - - - -
#define USE_MULTI_BLOCK_IO   1
-
-

Set USE_MULTI_BLOCK_IO nonzero to use multi-block SD read/write.

-

Don't use mult-block read/write on small AVR boards.

- -
-
- -

◆ USE_SD_CRC

- -
-
- - - - -
#define USE_SD_CRC   0
-
-

To enable SD card CRC checking set USE_SD_CRC nonzero.

-

Set USE_SD_CRC to 1 to use a smaller CRC-CCITT function. This function is slower for AVR but may be fast for ARM and other processors.

-

Set USE_SD_CRC to 2 to used a larger table driven CRC-CCITT function. This function is faster for AVR but may be slower for ARM and other processors.

- -
-
- -

◆ USE_SEPARATE_FAT_CACHE

- -
-
- - - - -
#define USE_SEPARATE_FAT_CACHE   0
-
-

Set USE_SEPARATE_FAT_CACHE nonzero to use a second 512 byte cache for FAT table entries. This improves performance for large writes that are not a multiple of 512 bytes.

- -
-
- -

◆ USE_STANDARD_SPI_LIBRARY

- -
-
- - - - -
#define USE_STANDARD_SPI_LIBRARY   0
-
-

If the symbol USE_STANDARD_SPI_LIBRARY is zero, an optimized custom SPI driver is used if it exists. If the symbol USE_STANDARD_SPI_LIBRARY is one, the standard Arduino SPI.h library is used with SPI. If the symbol USE_STANDARD_SPI_LIBRARY is two, the SPI port can be selected with the constructors SdFat(SPIClass* spiPort) and SdFatEX(SPIClass* spiPort).

- -
-
- -

◆ WDT_YIELD_TIME_MICROS

- -
-
- - - - -
#define WDT_YIELD_TIME_MICROS   0
-
-

Handle Watchdog Timer for WiFi modules.

-

Yield will be called before accessing the SPI bus if it has been more than WDT_YIELD_TIME_MICROS microseconds since the last yield call by SdFat.

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h__dep__incl.png deleted file mode 100644 index 5089a571..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h__incl.png deleted file mode 100644 index 56191eb4..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_fat_config_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h.html deleted file mode 100644 index 5052ce60..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SdSpiCard.h File Reference
-
-
- -

SdSpiCard class for V2 SD/SDHC cards. -More...

-
#include <stddef.h>
-#include "SysCall.h"
-#include "SdInfo.h"
-#include "../FatLib/BaseBlockDriver.h"
-#include "../SpiDriver/SdSpiDriver.h"
-
-Include dependency graph for SdSpiCard.h:
-
-
- - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - -
-
- - - - - - - -

-Classes

class  SdSpiCard
 Raw access to SD and SDHC flash memory cards via SPI protocol. More...
 
class  SdSpiCardEX
 Extended SD I/O block driver. More...
 
-

Detailed Description

-

SdSpiCard class for V2 SD/SDHC cards.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h__dep__incl.png deleted file mode 100644 index 9c2895d1..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h__incl.png deleted file mode 100644 index 5ae683e0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sd_spi_card_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_stdio_stream_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_stdio_stream_8h.html deleted file mode 100644 index fedd9e20..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_stdio_stream_8h.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/StdioStream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
StdioStream.h File Reference
-
-
- -

StdioStream class. -More...

-
#include <limits.h>
-#include "FatFile.h"
-#include <stdio.h>
-
-Include dependency graph for StdioStream.h:
-
-
- - - - - - - - - - -
-
- - - - -

-Classes

class  StdioStream
 StdioStream implements a minimal stdio stream. More...
 
- - - - - - - - - - - -

-Macros

#define EOF   (-1)
 
#define NULL   0
 
#define SEEK_CUR   1
 
#define SEEK_END   2
 
#define SEEK_SET   0
 
- - - - - -

-Variables

const uint8_t STREAM_BUF_SIZE = 64
 
const uint8_t UNGETC_BUF_SIZE = 2
 
-

Detailed Description

-

StdioStream class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ EOF

- -
-
- - - - -
#define EOF   (-1)
-
-

End-of-file return value.

- -
-
- -

◆ NULL

- -
-
- - - - -
#define NULL   0
-
-

Null pointer

- -
-
- -

◆ SEEK_CUR

- -
-
- - - - -
#define SEEK_CUR   1
-
-

Seek relative to current position.

- -
-
- -

◆ SEEK_END

- -
-
- - - - -
#define SEEK_END   2
-
-

Seek relative to end-of-file.

- -
-
- -

◆ SEEK_SET

- -
-
- - - - -
#define SEEK_SET   0
-
-

Seek relative to start-of-file.

- -
-
-

Variable Documentation

- -

◆ STREAM_BUF_SIZE

- -
-
- - - - -
const uint8_t STREAM_BUF_SIZE = 64
-
-

Total size of stream buffer. The entire buffer is used for output. During input UNGETC_BUF_SIZE of this space is reserved for ungetc.

- -
-
- -

◆ UNGETC_BUF_SIZE

- -
-
- - - - -
const uint8_t UNGETC_BUF_SIZE = 2
-
-

Amount of buffer allocated for ungetc during input.

- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_stdio_stream_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_stdio_stream_8h__incl.png deleted file mode 100644 index 83514f2c..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_stdio_stream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sys_call_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sys_call_8h.html deleted file mode 100644 index 55d63105..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sys_call_8h.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SysCall.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
SysCall.h File Reference
-
-
- -

SysCall class. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - - - -
-
- - - - -

-Classes

class  SysCall
 SysCall - Class to wrap system calls. More...
 
- - - -

-Macros

#define F(str)   (str)
 
- - - -

-Functions

uint16_t curTimeMS ()
 
-

Detailed Description

-

SysCall class.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Macro Definition Documentation

- -

◆ F

- -
-
- - - - - - - - -
#define F( str)   (str)
-
-

Define macro for strings stored in flash.

- -
-
-

Function Documentation

- -

◆ curTimeMS()

- -
-
- - - - - -
- - - - - - - -
uint16_t curTimeMS ()
-
-inline
-
-
Returns
the time in milliseconds.
- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sys_call_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sys_call_8h__dep__incl.png deleted file mode 100644 index a1b8d244..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/_sys_call_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/annotated.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/annotated.html deleted file mode 100644 index 53a0efaf..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/annotated.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -SdFat: Class List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 CArduinoInStreamInput stream for Arduino Stream objects
 CArduinoOutStreamOutput stream for Arduino Print objects
 CBaseBlockDriverBase block driver
 CbiosParmBlockBIOS parameter block
 Ccache_tCache for an raw data block
 CdirectoryEntryFAT short directory entry
 Cfat32_bootBoot sector for a FAT32 volume
 Cfat32_fsinfoFSINFO sector for a FAT32 volume
 Cfat_bootBoot sector for a FAT12/FAT16 volume
 CFatCacheBlock cache
 CFatFileBasic file class
 CFatFileSystemIntegration class for the FatLib library
 CFatPos_tInternal type for file position - do not use in user apps
 CFatStreamBaseBase class for C++ style streams
 CFatVolumeAccess FAT16 and FAT32 volumes on raw file devices
 CFileArduino SD.h style File API
 Cfname_tInternal type for Short File Name - do not use in user apps
 CfstreamFile input/output stream
 CibufstreamParse a char string
 CifstreamFile input stream
 CiosError and state information for all streams
 Cios_baseBase class for all streams
 CiostreamInput/Output stream
 CistreamInput Stream
 ClongDirectoryEntryFAT long directory entry
 CmasterBootRecordMaster Boot Record
 CMinimumSerialMini serial class for the SdFat library
 CobufstreamFormat a char string
 CofstreamFile output stream
 CostreamOutput Stream
 CpartitionTableMBR partition table entry
 CPrintFileFatFile with Print
 CSd2CardRaw access to SD and SDHC card using default SPI library
 CSdBaseFileClass for backward compatibility
 CSdFatMain file system class for SdFat library
 CSdFatEXSdFat class with extended SD I/O
 CSdFatSdioSdFat class using SDIO
 CSdFatSdioEXSdFat class using SDIO
 CSdFatSoftSpiSdFat class using software SPI
 CSdFatSoftSpiEXSdFat class using software SPI and extended SD I/O
 CSdFileClass for backward compatibility
 CSdFileSystemVirtual base class for SdFat library
 CSdioCardRaw SDIO access to SD and SDHC flash memory cards
 CSdioCardEXExtended SD I/O block driver
 CSdSpiCardRaw access to SD and SDHC flash memory cards via SPI protocol
 CSdSpiCardEXExtended SD I/O block driver
 CsetfillType for setfill manipulator
 CsetprecisionType for setprecision manipulator
 CsetwType for setw manipulator
 CStdioStreamStdioStream implements a minimal stdio stream
 CSysCallSysCall - Class to wrap system calls
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bc_s.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bc_s.png deleted file mode 100644 index 224b29aa..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bc_s.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bdwn.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bdwn.png deleted file mode 100644 index 940a0b95..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bdwn.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h.html deleted file mode 100644 index 0e708635..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/bufstream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
bufstream.h File Reference
-
-
- -

ibufstream and obufstream classes -More...

-
#include <string.h>
-#include "iostream.h"
-
-Include dependency graph for bufstream.h:
-
-
- - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
- - - - - - - -

-Classes

class  ibufstream
 parse a char string More...
 
class  obufstream
 format a char string More...
 
-

Detailed Description

-

ibufstream and obufstream classes

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h__dep__incl.png deleted file mode 100644 index d7642282..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h__incl.png deleted file mode 100644 index e7e79d65..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/bufstream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream-members.html deleted file mode 100644 index 75a36ce0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream-members.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ArduinoInStream Member List
-
-
- -

This is the complete list of members for ArduinoInStream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ArduinoInStream(Stream &hws, char *buf, size_t size)ArduinoInStreaminline
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ibufstream()ibufstreaminline
ibufstream(const char *str)ibufstreaminlineexplicit
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
init(const char *str)ibufstreaminline
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
readline()ArduinoInStreaminline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream.html deleted file mode 100644 index d3aedfa1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream.html +++ /dev/null @@ -1,2754 +0,0 @@ - - - - - - - -SdFat: ArduinoInStream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
ArduinoInStream Class Reference
-
-
- -

Input stream for Arduino Stream objects. - More...

- -

#include <ArduinoStream.h>

-
-Inheritance diagram for ArduinoInStream:
-
-
Inheritance graph
- - - - - - -
[legend]
-
-Collaboration diagram for ArduinoInStream:
-
-
Collaboration graph
- - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArduinoInStream (Stream &hws, char *buf, size_t size)
 
bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
void init (const char *str)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
void readline ()
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Input stream for Arduino Stream objects.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ArduinoInStream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
ArduinoInStream::ArduinoInStream (Stream & hws,
char * buf,
size_t size 
)
-
-inline
-
-

Constructor

Parameters
- - - - -
[in]hwshardware stream
[in]bufbuffer for input line
[in]sizesize of input buffer
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - -
void ibufstream::init (const char * str)
-
-inlineinherited
-
-

Initialize an ibufstream

Parameters
- - -
[in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
-
-
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ readline()

- -
-
- - - - - -
- - - - - - - -
void ArduinoInStream::readline ()
-
-inline
-
-

read a line.

- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream__coll__graph.png deleted file mode 100644 index 0d8855be..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream__inherit__graph.png deleted file mode 100644 index 0d8855be..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_in_stream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream-members.html deleted file mode 100644 index bba93a65..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream-members.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ArduinoOutStream Member List
-
-
- -

This is the complete list of members for ArduinoOutStream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ArduinoOutStream(Print &pr)ArduinoOutStreaminlineexplicit
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream.html deleted file mode 100644 index 2e6d110f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream.html +++ /dev/null @@ -1,2423 +0,0 @@ - - - - - - - -SdFat: ArduinoOutStream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
ArduinoOutStream Class Reference
-
-
- -

Output stream for Arduino Print objects. - More...

- -

#include <ArduinoStream.h>

-
-Inheritance diagram for ArduinoOutStream:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for ArduinoOutStream:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArduinoOutStream (Print &pr)
 
bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Output stream for Arduino Print objects.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ArduinoOutStream()

- -
-
- - - - - -
- - - - - - - - -
ArduinoOutStream::ArduinoOutStream (Print & pr)
-
-inlineexplicit
-
-

constructor

-
Parameters
- - -
[in]prPrint object for this ArduinoOutStream.
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream__coll__graph.png deleted file mode 100644 index 971f0527..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream__inherit__graph.png deleted file mode 100644 index 971f0527..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_arduino_out_stream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver-members.html deleted file mode 100644 index 47e33bfc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
BaseBlockDriver Member List
-
-
- -

This is the complete list of members for BaseBlockDriver, including all inherited members.

- - - - - - -
readBlock(uint32_t block, uint8_t *dst)=0BaseBlockDriverpure virtual
readBlocks(uint32_t block, uint8_t *dst, size_t nb)=0BaseBlockDriverpure virtual
syncBlocks()=0BaseBlockDriverpure virtual
writeBlock(uint32_t block, const uint8_t *src)=0BaseBlockDriverpure virtual
writeBlocks(uint32_t block, const uint8_t *src, size_t nb)=0BaseBlockDriverpure virtual
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver.html deleted file mode 100644 index b02f5cc7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - -SdFat: BaseBlockDriver Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
BaseBlockDriver Class Referenceabstract
-
-
- -

Base block driver. - More...

- -

#include <BaseBlockDriver.h>

-
-Inheritance diagram for BaseBlockDriver:
-
-
Inheritance graph
- - - - -
[legend]
- - - - - - - - - - - - -

-Public Member Functions

virtual bool readBlock (uint32_t block, uint8_t *dst)=0
 
virtual bool readBlocks (uint32_t block, uint8_t *dst, size_t nb)=0
 
virtual bool syncBlocks ()=0
 
virtual bool writeBlock (uint32_t block, const uint8_t *src)=0
 
virtual bool writeBlocks (uint32_t block, const uint8_t *src, size_t nb)=0
 
-

Detailed Description

-

Base block driver.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Member Function Documentation

- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::readBlock (uint32_t block,
uint8_t * dst 
)
-
-pure virtual
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]blockLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::readBlocks (uint32_t block,
uint8_t * dst,
size_t nb 
)
-
-pure virtual
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
virtual bool BaseBlockDriver::syncBlocks ()
-
-pure virtual
-
-

End multi-block transfer and go to idle state.

Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::writeBlock (uint32_t block,
const uint8_t * src 
)
-
-pure virtual
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]blockLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
virtual bool BaseBlockDriver::writeBlocks (uint32_t block,
const uint8_t * src,
size_t nb 
)
-
-pure virtual
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implemented in SdioCardEX, and SdioCard.

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/BaseBlockDriver.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver__inherit__graph.png deleted file mode 100644 index 3b26755a..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_base_block_driver__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_cache-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_cache-members.html deleted file mode 100644 index d543b251..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_cache-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatCache Member List
-
-
- -

This is the complete list of members for FatCache, including all inherited members.

- - - - - - - - - - - - - - - - -
block()FatCacheinline
CACHE_FOR_READFatCachestatic
CACHE_FOR_WRITEFatCachestatic
CACHE_OPTION_NO_READFatCachestatic
CACHE_RESERVE_FOR_WRITEFatCachestatic
CACHE_STATUS_DIRTYFatCachestatic
CACHE_STATUS_MASKFatCachestatic
CACHE_STATUS_MIRROR_FATFatCachestatic
dirty()FatCacheinline
init(FatVolume *vol)FatCacheinline
invalidate()FatCacheinline
isDirty()FatCacheinline
lbn()FatCacheinline
read(uint32_t lbn, uint8_t option)FatCache
sync()FatCache
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_cache.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_cache.html deleted file mode 100644 index c90823ca..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_cache.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - -SdFat: FatCache Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Block cache. - More...

- -

#include <FatVolume.h>

- - - - - - - - - - - - - - - - - - -

-Public Member Functions

cache_tblock ()
 
void dirty ()
 
void init (FatVolume *vol)
 
void invalidate ()
 
bool isDirty ()
 
uint32_t lbn ()
 
cache_tread (uint32_t lbn, uint8_t option)
 
bool sync ()
 
- - - - - - - - - - - - - - - -

-Static Public Attributes

static const uint8_t CACHE_FOR_READ = 0
 
static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
 
static const uint8_t CACHE_OPTION_NO_READ = 4
 
static const uint8_t CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
 
static const uint8_t CACHE_STATUS_DIRTY = 1
 
static const uint8_t CACHE_STATUS_MASK = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT
 
static const uint8_t CACHE_STATUS_MIRROR_FAT = 2
 
-

Detailed Description

-

Block cache.

-

Member Function Documentation

- -

◆ block()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatCache::block ()
-
-inline
-
-
Returns
Cache block address.
- -
-
- -

◆ dirty()

- -
-
- - - - - -
- - - - - - - -
void FatCache::dirty ()
-
-inline
-
-

Set current block dirty.

- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - -
void FatCache::init (FatVolumevol)
-
-inline
-
-

Initialize the cache.

Parameters
- - -
[in]volFatVolume that owns this FatCache.
-
-
- -
-
- -

◆ invalidate()

- -
-
- - - - - -
- - - - - - - -
void FatCache::invalidate ()
-
-inline
-
-

Invalidate current cache block.

- -
-
- -

◆ isDirty()

- -
-
- - - - - -
- - - - - - - -
bool FatCache::isDirty ()
-
-inline
-
-
Returns
dirty status
- -
-
- -

◆ lbn()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatCache::lbn ()
-
-inline
-
-
Returns
Logical block number for cached block.
- -
-
- -

◆ read()

- -
-
- - - - - - - - - - - - - - - - - - -
cache_t * FatCache::read (uint32_t lbn,
uint8_t option 
)
-
-

Read a block into the cache.

Parameters
- - - -
[in]lbnBlock to read.
[in]optionmode for cached block.
-
-
-
Returns
Address of cached block.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ sync()

- -
-
- - - - - - - -
bool FatCache::sync ()
-
-

Write current block if dirty.

Returns
true for success else false.
- -
-
-

Member Data Documentation

- -

◆ CACHE_FOR_READ

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_FOR_READ = 0
-
-static
-
-

Cache block for read.

- -
-
- -

◆ CACHE_FOR_WRITE

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_FOR_WRITE = CACHE_STATUS_DIRTY
-
-static
-
-

Cache block for write.

- -
-
- -

◆ CACHE_OPTION_NO_READ

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_OPTION_NO_READ = 4
-
-static
-
-

Sync existing block but do not read new block.

- -
-
- -

◆ CACHE_RESERVE_FOR_WRITE

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_RESERVE_FOR_WRITE = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ
-
-static
-
-

Reserve cache block for write - do not read from block device.

- -
-
- -

◆ CACHE_STATUS_DIRTY

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_STATUS_DIRTY = 1
-
-static
-
-

Cached block is dirty

- -
-
- -

◆ CACHE_STATUS_MASK

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_STATUS_MASK = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT
-
-static
-
-

Cache block status bits

- -
-
- -

◆ CACHE_STATUS_MIRROR_FAT

- -
-
- - - - - -
- - - - -
const uint8_t FatCache::CACHE_STATUS_MIRROR_FAT = 2
-
-static
-
-

Cashed block is FAT entry and must be mirrored in second FAT.

- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file-members.html deleted file mode 100644 index ef4d223c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file-members.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatFile Member List
-
-
- -

This is the complete list of members for FatFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()FatFileinline
clearError()FatFileinline
clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()FatFile
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()FatFileinline
read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(const char *str)FatFileinline
write(uint8_t b)FatFileinline
write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file.html deleted file mode 100644 index 4cb59424..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file.html +++ /dev/null @@ -1,3140 +0,0 @@ - - - - - - - -SdFat: FatFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Basic file class. - More...

- -

#include <FatFile.h>

-
-Inheritance diagram for FatFile:
-
-
Inheritance graph
- - - - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
 FatFile ()
 
 FatFile (const char *path, oflag_t oflag)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Basic file class.

-

Constructor & Destructor Documentation

- -

◆ FatFile() [1/2]

- -
-
- - - - - -
- - - - - - - -
FatFile::FatFile ()
-
-inline
-
-

Create an instance.

- -
-
- -

◆ FatFile() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
FatFile::FatFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::available ()
-
-inline
-
-
Returns
The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inline
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inline
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - - - -
bool FatFile::close ()
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inline
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inline
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inline
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestatic
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestatic
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestatic
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inline
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-static
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inline
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inline
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inline
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inline
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inline
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inline
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inline
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inline
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inline
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inline
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inline
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inline
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inline
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inline
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inline
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inline
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inline
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inline
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestatic
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inline
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inline
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - - - -
int FatFile::peek ()
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestatic
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-static
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestatic
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-static
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inline
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/2]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - - - -
bool FatFile::remove ()
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-static
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inline
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - - - -
bool FatFile::rmdir ()
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - - - -
bool FatFile::rmRfStar ()
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inline
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inline
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestatic
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - - - -
bool FatFile::sync ()
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inline
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inline
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [2/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (uint8_t b)
-
-inline
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [3/3]

- -
-
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.cpp
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFileLFN.cpp
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFilePrint.cpp
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatFileSFN.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file__inherit__graph.png deleted file mode 100644 index 6e13b3ca..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system-members.html deleted file mode 100644 index 07f50dad..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatFileSystem Member List
-
-
- -

This is the complete list of members for FatFileSystem, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system.html deleted file mode 100644 index 59c85963..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - - - -SdFat: FatFileSystem Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
FatFileSystem Class Reference
-
-
- -

Integration class for the FatLib library. - More...

- -

#include <FatFileSystem.h>

-
-Inheritance diagram for FatFileSystem:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
-
-Collaboration diagram for FatFileSystem:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

Integration class for the FatLib library.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inline
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inline
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inline
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inline
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inline
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inline
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inline
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inline
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inline
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inline
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inline
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inline
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inline
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inline
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inline
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inline
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inline
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inline
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inline
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system__coll__graph.png deleted file mode 100644 index dcaf8f81..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system__inherit__graph.png deleted file mode 100644 index a660a353..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_file_system__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base-members.html deleted file mode 100644 index e4c20a03..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base-members.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatStreamBase Member List
-
-
- -

This is the complete list of members for FatStreamBase, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
available()FatFileinlineprivate
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
clearError()FatFileinlineprivate
clearWriteError()FatFileinlineprivate
close()FatFileprivate
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFileprivate
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFileprivate
createContiguous(const char *path, uint32_t size)FatFileinlineprivate
cur enum valueios_base
curCluster() constFatFileinlineprivate
curPosition() constFatFileinlineprivate
cwd()FatFileinlineprivatestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlineprivatestatic
dateTimeCallbackCancel()FatFileinlineprivatestatic
decios_basestatic
dirEntry(dir_t *dir)FatFileprivate
dirIndex()FatFileinlineprivate
dirName(const dir_t *dir, char *name)FatFileprivatestatic
dirSize()FatFileprivate
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFileprivate
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
exists(const char *path)FatFileinlineprivate
fail() constiosinline
failbitios_basestatic
FatFile()FatFileinlineprivate
FatFile(const char *path, oflag_t oflag)FatFileinlineprivate
fgets(char *str, int16_t num, char *delim=0)FatFileprivate
fileAttr() constFatFileinlineprivate
fileSize() constFatFileinlineprivate
fill()ios_baseinline
fill(char c)ios_baseinline
firstBlock()FatFileinlineprivate
firstCluster() constFatFileinlineprivate
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
getError()FatFileinlineprivate
getName(char *name, size_t size)FatFileprivate
getpos(FatPos_t *pos)FatFileprivate
getSFN(char *name)FatFileprivate
getWriteError()FatFileinlineprivate
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
isDir() constFatFileinlineprivate
isFile() constFatFileinlineprivate
isHidden() constFatFileinlineprivate
isLFN() constFatFileinlineprivate
isOpen() constFatFileinlineprivate
isReadOnly() constFatFileinlineprivate
isRoot() constFatFileinlineprivate
isRoot32() constFatFileinlineprivate
isRootFixed() constFatFileinlineprivate
isSubDir() constFatFileinlineprivate
isSystem() constFatFileinlineprivate
leftios_basestatic
legal83Char(uint8_t c)FatFileinlineprivatestatic
ls(uint8_t flags=0)FatFileinlineprivate
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFileprivate
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFileprivate
octios_basestatic
off_type typedefios_base
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinlineprivate
openmode typedefios_base
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFileprivate
openRoot(FatVolume *vol)FatFileprivate
operator const void *() constiosinline
operator!() constiosinline
outios_basestatic
peek()FatFileprivate
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
printCreateDateTime(print_t *pr)FatFileprivate
printFatDate(uint16_t fatDate)FatFileinlineprivatestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFileprivatestatic
printFatTime(uint16_t fatTime)FatFileinlineprivatestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFileprivatestatic
printField(float value, char term, uint8_t prec=2)FatFileprivate
printField(int16_t value, char term)FatFileprivate
printField(uint16_t value, char term)FatFileprivate
printField(int32_t value, char term)FatFileprivate
printField(uint32_t value, char term)FatFileprivate
printFileSize(print_t *pr)FatFileprivate
printModifyDateTime(print_t *pr)FatFileprivate
printName()FatFileinlineprivate
printName(print_t *pr)FatFileprivate
printSFN(print_t *pr)FatFileprivate
rdstate() constiosinline
read()FatFileinlineprivate
read(void *buf, size_t nbyte)FatFileprivate
readDir(dir_t *dir)FatFileprivate
remove()FatFileprivate
remove(FatFile *dirFile, const char *path)FatFileprivatestatic
rename(FatFile *dirFile, const char *newPath)FatFileprivate
rewind()FatFileinlineprivate
rightios_basestatic
rmdir()FatFileprivate
rmRfStar()FatFileprivate
seekCur(int32_t offset)FatFileinlineprivate
seekdir enum nameios_base
seekEnd(int32_t offset=0)FatFileinlineprivate
seekSet(uint32_t pos)FatFileprivate
setCwd(FatFile *dir)FatFileinlineprivatestatic
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setpos(FatPos_t *pos)FatFileprivate
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
sync()FatFileprivate
timestamp(FatFile *file)FatFileprivate
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFileprivate
truncios_basestatic
truncate(uint32_t length)FatFileprivate
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
volume() constFatFileinlineprivate
width()ios_baseinline
width(unsigned n)ios_baseinline
write(const char *str)FatFileinlineprivate
write(uint8_t b)FatFileinlineprivate
write(const void *buf, size_t nbyte)FatFileprivate
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base.html deleted file mode 100644 index 843feb2e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base.html +++ /dev/null @@ -1,1732 +0,0 @@ - - - - - - - -SdFat: FatStreamBase Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Base class for C++ style streams. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for FatStreamBase:
-
-
Inheritance graph
- - - - - - - - -
[legend]
-
-Collaboration diagram for FatStreamBase:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
bool good () const
 
 operator const void * () const
 
bool operator! () const
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Private Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Private Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Base class for C++ style streams.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base__coll__graph.png deleted file mode 100644 index 4b13c436..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base__inherit__graph.png deleted file mode 100644 index 08e0c93d..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_stream_base__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume-members.html deleted file mode 100644 index 18e917e6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatVolume Member List
-
-
- -

This is the complete list of members for FatVolume, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - -
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
FatCache classFatVolumefriend
fatCount()FatVolumeinline
FatFile classFatVolumefriend
FatFileSystem classFatVolumefriend
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
volumeBlockCount() constFatVolumeinline
wipe(print_t *pr=0)FatVolume
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume.html deleted file mode 100644 index 10169664..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume.html +++ /dev/null @@ -1,647 +0,0 @@ - - - - - - - -SdFat: FatVolume Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
FatVolume Class Reference
-
-
- -

Access FAT16 and FAT32 volumes on raw file devices. - More...

- -

#include <FatVolume.h>

-
-Inheritance diagram for FatVolume:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
 FatVolume ()
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
uint32_t volumeBlockCount () const
 
bool wipe (print_t *pr=0)
 
- - - - - - - - - - -

-Friends

-class FatCache
 Allow access to FatVolume.
 
-class FatFile
 Allow access to FatVolume.
 
-class FatFileSystem
 Allow access to FatVolume.
 
-

Detailed Description

-

Access FAT16 and FAT32 volumes on raw file devices.

-

Constructor & Destructor Documentation

- -

◆ FatVolume()

- -
-
- - - - - -
- - - - - - - -
FatVolume::FatVolume ()
-
-inline
-
-

Create an instance of FatVolume

- -
-
-

Member Function Documentation

- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inline
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inline
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inline
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inline
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inline
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inline
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inline
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inline
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inline
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inline
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inline
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inline
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inline
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inline
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ wipe()

- -
-
- - - - - - - - -
bool FatVolume::wipe (print_tpr = 0)
-
-

Wipe all data from the volume.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/FatVolume.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume__inherit__graph.png deleted file mode 100644 index bec96573..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_fat_volume__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file-members.html deleted file mode 100644 index 94e57bdc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file-members.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
File Member List
-
-
- -

This is the complete list of members for File, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()Fileinline
clearError()FatFileinline
clearWriteError()Fileinline
FatFile::clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
File() (defined in File)Fileinline
File(const char *path, oflag_t oflag)Fileinline
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
flush()Fileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()Fileinline
FatFile::getWriteError()FatFileinline
isDir() constFatFileinline
isDirectory()Fileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
name() constFileinline
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openNextFile(oflag_t oflag=O_RDONLY)Fileinline
openRoot(FatVolume *vol)FatFile
operator bool()Fileinline
peek()Fileinline
position()Fileinline
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()Fileinline
read()Fileinline
read(void *buf, size_t nbyte)File
FatFile::read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rewindDirectory()Fileinline
rmdir()FatFile
rmRfStar()FatFile
seek(uint32_t pos)Fileinline
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
size()Fileinline
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(uint8_t b)Fileinline
write(const uint8_t *buf, size_t size)Fileinline
write(const char *str)Fileinline
write(uint8_t b)Fileinline
write(const void *buf, size_t nbyte)File
FatFile::write(const char *str)FatFileinline
FatFile::write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file.html deleted file mode 100644 index 0d033453..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file.html +++ /dev/null @@ -1,3943 +0,0 @@ - - - - - - - -SdFat: File Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Arduino SD.h style File API. - More...

- -

#include <ArduinoFiles.h>

-
-Inheritance diagram for File:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for File:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void clearError ()
 
void clearWriteError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
 File (const char *path, oflag_t oflag)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
void flush ()
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool getWriteError ()
 
bool isDir () const
 
bool isDirectory ()
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
const char * name () const
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
File openNextFile (oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
 operator bool ()
 
int peek ()
 
uint32_t position ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read (void *buf, size_t nbyte)
 
int read ()
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
void rewindDirectory ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seek (uint32_t pos)
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
uint32_t size ()
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
size_t write (uint8_t b)
 
size_t write (const uint8_t *buf, size_t size)
 
int write (const char *str)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Arduino SD.h style File API.

-

Constructor & Destructor Documentation

- -

◆ File()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File::File (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
int File::available ()
-
-inline
-
-
Returns
number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError() [1/2]

- -
-
- - - - - -
- - - - -
void FatFile::clearWriteError
-
-inline
-
-

Set writeError to zero

- -
-
- -

◆ clearWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
void File::flush ()
-
-inline
-
-

Ensure that any bytes written to the file are saved to the SD card.

- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError() [1/2]

- -
-
- - - - - -
- - - - -
bool FatFile::getWriteError
-
-inline
-
-
Returns
value of writeError
- -
-
- -

◆ getWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isDirectory()

- -
-
- - - - - -
- - - - - - - -
bool File::isDirectory ()
-
-inline
-
-

This function reports if the current file is a directory or not.

Returns
true if the file is a directory.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ name()

- -
-
- - - - - -
- - - - - - - -
const char* File::name () const
-
-inline
-
-

No longer implemented due to Long File Names.

-

Use getName(char* name, size_t size).

Returns
a pointer to replacement suggestion.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openNextFile()

- -
-
- - - - - -
- - - - - - - - -
File File::openNextFile (oflag_t oflag = O_RDONLY)
-
-inline
-
-

Opens the next file or folder in a directory.

-
Parameters
- - -
[in]oflagopen oflag flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ operator bool()

- -
-
- - - - - -
- - - - - - - -
File::operator bool ()
-
-inline
-
-

The parenthesis operator.

-
Returns
true if a file is open.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int File::peek ()
-
-inline
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ position()

- -
-
- - - - - -
- - - - - - - -
uint32_t File::position ()
-
-inline
-
-
Returns
the current file position.
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/4]

- -
-
- - - - -
int FatFile::read
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ read() [3/4]

- -
-
- - - - - -
- - - - - - - -
int File::read ()
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1.
- -
-
- -

◆ read() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rewindDirectory()

- -
-
- - - - - -
- - - - - - - -
void File::rewindDirectory ()
-
-inline
-
-

Rewind a file if it is a directory

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - -
bool File::seek (uint32_t pos)
-
-inline
-
-

Seek to a new position in the file, which must be between 0 and the size of the file (inclusive).

-
Parameters
- - -
[in]posthe new file position.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
uint32_t File::size ()
-
-inline
-
-
Returns
the file's size.
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [2/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [3/7]

- -
-
- - - - -
int FatFile::write
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [4/7]

- -
-
- - - - - -
- - - - - - - - -
size_t File::write (uint8_t b)
-
-inline
-
-

Write a byte to a file. Required by the Arduino Print class.

Parameters
- - -
[in]bthe byte to be written. Use getWriteError to check for errors.
-
-
-
Returns
1 for success and 0 for failure.
- -
-
- -

◆ write() [5/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t File::write (const uint8_t * buf,
size_t size 
)
-
-inline
-
-

Write data to an open file. Form required by Print.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]sizeNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [6/7]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [7/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file__coll__graph.png deleted file mode 100644 index b65001bc..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file__inherit__graph.png deleted file mode 100644 index b65001bc..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial-members.html deleted file mode 100644 index 1848ac0a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
MinimumSerial Member List
-
-
- -

This is the complete list of members for MinimumSerial, including all inherited members.

- - - - - - - -
available()MinimumSerial
begin(uint32_t baud)MinimumSerial
flush()MinimumSerial
operator bool()MinimumSerialinline
read()MinimumSerial
write(uint8_t b)MinimumSerial
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial.html deleted file mode 100644 index 96449046..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - -SdFat: MinimumSerial Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
MinimumSerial Class Reference
-
-
- -

mini serial class for the SdFat library. - More...

- -

#include <MinimumSerial.h>

-
-Inheritance diagram for MinimumSerial:
-
-
Inheritance graph
- - -
[legend]
-
-Collaboration diagram for MinimumSerial:
-
-
Collaboration graph
- - -
[legend]
- - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void begin (uint32_t baud)
 
void flush ()
 
 operator bool ()
 
int read ()
 
size_t write (uint8_t b)
 
-

Detailed Description

-

mini serial class for the SdFat library.

-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - - - -
int MinimumSerial::available ()
-
-
Returns
one if data is available.
- -
-
- -

◆ begin()

- -
-
- - - - - - - - -
void MinimumSerial::begin (uint32_t baud)
-
-

Set baud rate for serial port zero and enable in non interrupt mode. Do not call this function if you use another serial library.

Parameters
- - -
[in]baudrate
-
-
- -
-
- -

◆ flush()

- -
-
- - - - - - - -
void MinimumSerial::flush ()
-
-

Wait for write done.

- -
-
- -

◆ operator bool()

- -
-
- - - - - -
- - - - - - - -
MinimumSerial::operator bool ()
-
-inline
-
-
Returns
true for hardware serial
- -
-
- -

◆ read()

- -
-
- - - - - - - -
int MinimumSerial::read ()
-
-

Unbuffered read

Returns
-1 if no character is available or an available character.
- -
-
- -

◆ write()

- -
-
- - - - - - - - -
size_t MinimumSerial::write (uint8_t b)
-
-

Unbuffered write

-
Parameters
- - -
[in]bbyte to write.
-
-
-
Returns
1
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/MinimumSerial.h
  • -
  • Arduino/libraries/SdFat/src/MinimumSerial.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial__coll__graph.png deleted file mode 100644 index b5ad74f1..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial__inherit__graph.png deleted file mode 100644 index b5ad74f1..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_minimum_serial__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file-members.html deleted file mode 100644 index 1d101c1c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file-members.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
PrintFile Member List
-
-
- -

This is the complete list of members for PrintFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()PrintFileinline
clearError()FatFileinline
clearWriteError()PrintFileinline
FatFile::clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
flush()PrintFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()PrintFileinline
FatFile::getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()PrintFileinline
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
PrintFile() (defined in PrintFile)PrintFileinline
PrintFile(const char *path, oflag_t oflag)PrintFileinline
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()PrintFileinline
read(void *buf, size_t nbyte)PrintFile
FatFile::read()FatFileinline
FatFile::read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(uint8_t b)PrintFileinline
write(const uint8_t *buf, size_t size)PrintFileinline
write(const char *str)PrintFileinline
write(uint8_t b)PrintFileinline
write(const void *buf, size_t nbyte)PrintFile
FatFile::write(const char *str)FatFileinline
FatFile::write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file.html deleted file mode 100644 index 182bef34..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file.html +++ /dev/null @@ -1,3704 +0,0 @@ - - - - - - - -SdFat: PrintFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

FatFile with Print. - More...

- -

#include <ArduinoFiles.h>

-
-Inheritance diagram for PrintFile:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for PrintFile:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void clearError ()
 
void clearWriteError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
void flush ()
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
 PrintFile (const char *path, oflag_t oflag)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const void *buf, size_t nbyte)
 
int write (const char *str)
 
int write (uint8_t b)
 
size_t write (uint8_t b)
 
size_t write (const uint8_t *buf, size_t size)
 
int write (const char *str)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

FatFile with Print.

-

Constructor & Destructor Documentation

- -

◆ PrintFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
PrintFile::PrintFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::available ()
-
-inline
-
-
Returns
number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError() [1/2]

- -
-
- - - - - -
- - - - -
void FatFile::clearWriteError
-
-inline
-
-

Set writeError to zero

- -
-
- -

◆ clearWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
void PrintFile::flush ()
-
-inline
-
-

Ensure that any bytes written to the file are saved to the SD card.

- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError() [1/2]

- -
-
- - - - - -
- - - - -
bool FatFile::getWriteError
-
-inline
-
-
Returns
value of writeError
- -
-
- -

◆ getWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::peek ()
-
-inline
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/4]

- -
-
- - - - -
int FatFile::read
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ read() [2/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [3/4]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [2/7]

- -
-
- - - - -
int FatFile::write
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [3/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inline
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [4/7]

- -
-
- - - - - -
- - - - - - - - -
size_t PrintFile::write (uint8_t b)
-
-inline
-
-

Read the next byte from a file.

-
Returns
For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1. Write a byte to a file. Required by the Arduino Print class.
-
Parameters
- - -
[in]bthe byte to be written. Use getWriteError to check for errors.
-
-
-
Returns
1 for success and 0 for failure.
- -
-
- -

◆ write() [5/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t PrintFile::write (const uint8_t * buf,
size_t size 
)
-
-inline
-
-

Write data to an open file. Form required by Print.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]sizeNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [6/7]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [7/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file__coll__graph.png deleted file mode 100644 index 36319e92..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file__inherit__graph.png deleted file mode 100644 index 3706975d..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_print_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card-members.html deleted file mode 100644 index 242e6cb4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
Sd2Card Member List
-
-
- -

This is the complete list of members for Sd2Card, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings settings=SD_SCK_MHZ(50))Sd2Cardinline
SdSpiCard::begin(SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)SdSpiCard
cardSize()SdSpiCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdSpiCard
eraseSingleBlockEnable()SdSpiCard
error(uint8_t code)SdSpiCardinline
errorCode() constSdSpiCardinline
errorData() constSdSpiCardinline
isBusy()SdSpiCard
readBlock(uint32_t lba, uint8_t *dst)SdSpiCard
readBlocks(uint32_t lba, uint8_t *dst, size_t nb)SdSpiCard
readCID(cid_t *cid)SdSpiCardinline
readCSD(csd_t *csd)SdSpiCardinline
readData(uint8_t *dst)SdSpiCard
readOCR(uint32_t *ocr)SdSpiCard
readStart(uint32_t blockNumber)SdSpiCard
readStatus(uint8_t *status)SdSpiCard
readStop()SdSpiCard
SdSpiCard()SdSpiCardinline
spiStart()SdSpiCard
spiStop()SdSpiCard
syncBlocks()SdSpiCardinline
type() constSdSpiCardinline
writeBlock(uint32_t lba, const uint8_t *src)SdSpiCard
writeBlocks(uint32_t lba, const uint8_t *src, size_t nb)SdSpiCard
writeData(const uint8_t *src)SdSpiCard
writeStart(uint32_t blockNumber)SdSpiCard
writeStart(uint32_t blockNumber, uint32_t eraseCount)SdSpiCard
writeStop()SdSpiCard
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card.html deleted file mode 100644 index 2cacb56c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card.html +++ /dev/null @@ -1,1142 +0,0 @@ - - - - - - - -SdFat: Sd2Card Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
Sd2Card Class Reference
-
-
- -

Raw access to SD and SDHC card using default SPI library. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for Sd2Card:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for Sd2Card:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)
 
bool begin (uint8_t csPin=SS, SPISettings settings=SD_SCK_MHZ(50))
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
bool eraseSingleBlockEnable ()
 
void error (uint8_t code)
 
int errorCode () const
 
int errorData () const
 
bool isBusy ()
 
bool readBlock (uint32_t lba, uint8_t *dst)
 
bool readBlocks (uint32_t lba, uint8_t *dst, size_t nb)
 
bool readCID (cid_t *cid)
 
bool readCSD (csd_t *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t blockNumber)
 
bool readStatus (uint8_t *status)
 
bool readStop ()
 
void spiStart ()
 
void spiStop ()
 
bool syncBlocks ()
 
int type () const
 
bool writeBlock (uint32_t lba, const uint8_t *src)
 
bool writeBlocks (uint32_t lba, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t blockNumber)
 
bool writeStart (uint32_t blockNumber, uint32_t eraseCount)
 
bool writeStop ()
 
-

Detailed Description

-

Raw access to SD and SDHC card using default SPI library.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::begin (SdSpiDriver * spi,
uint8_t csPin,
SPISettings spiSettings 
)
-
-inherited
-
-

Initialize the SD card.

Parameters
- - - - -
[in]spiSPI driver for card.
[in]csPincard chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ begin() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool Sd2Card::begin (uint8_t csPin = SS,
SPISettings settings = SD_SCK_MHZ(50) 
)
-
-inline
-
-

Initialize the SD card.

Parameters
- - - -
[in]csPinSD chip select pin.
[in]settingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ cardSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdSpiCard::cardSize ()
-
-inherited
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-inherited
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ eraseSingleBlockEnable()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::eraseSingleBlockEnable ()
-
-inherited
-
-

Determine if card supports single block erase.

-
Returns
true is returned if single block erase is supported. false is returned if single block erase is not supported.
- -
-
- -

◆ error()

- -
-
- - - - - -
- - - - - - - - -
void SdSpiCard::error (uint8_t code)
-
-inlineinherited
-
-

Set SD error code.

Parameters
- - -
[in]codevalue for error code.
-
-
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorCode () const
-
-inlineinherited
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorData () const
-
-inlineinherited
-
-
Returns
error data for last error.
- -
-
- -

◆ isBusy()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::isBusy ()
-
-inherited
-
-

Check for busy. MISO low indicates the card is busy.

-
Returns
true if busy else false.
- -
-
- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlock (uint32_t lba,
uint8_t * dst 
)
-
-inherited
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlocks (uint32_t lba,
uint8_t * dst,
size_t nb 
)
-
-inherited
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCID (cid_t * cid)
-
-inlineinherited
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCSD (csd_t * csd)
-
-inlineinherited
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readData (uint8_t * dst)
-
-inherited
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readOCR (uint32_t * ocr)
-
-inherited
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStart (uint32_t blockNumber)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStatus()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStatus (uint8_t * status)
-
-inherited
-
-

Return the 64 byte card status

Parameters
- - -
[out]statuslocation for 64 status bytes.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::readStop ()
-
-inherited
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ spiStart()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStart ()
-
-inherited
-
-

Set CS low and activate the card.

- -
-
- -

◆ spiStop()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStop ()
-
-inherited
-
-

Set CS high and deactivate the card.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::syncBlocks ()
-
-inlineinherited
-
-
Returns
success if sync successful. Not for user apps.
- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::type () const
-
-inlineinherited
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlock (uint32_t lba,
const uint8_t * src 
)
-
-inherited
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlocks (uint32_t lba,
const uint8_t * src,
size_t nb 
)
-
-inherited
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeData (const uint8_t * src)
-
-inherited
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber,
uint32_t eraseCount 
)
-
-inherited
-
-

Start a write multiple blocks sequence with pre-erase.

-
Parameters
- - - -
[in]blockNumberAddress of first block in sequence.
[in]eraseCountThe number of blocks to be pre-erased.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::writeStop ()
-
-inherited
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card__coll__graph.png deleted file mode 100644 index 023d327e..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card__inherit__graph.png deleted file mode 100644 index 023d327e..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd2_card__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file-members.html deleted file mode 100644 index 388a6f86..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file-members.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdBaseFile Member List
-
-
- -

This is the complete list of members for SdBaseFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()FatFileinline
clearError()FatFileinline
clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()FatFile
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()FatFileinline
read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
SdBaseFile() (defined in SdBaseFile)SdBaseFileinline
SdBaseFile(const char *path, oflag_t oflag)SdBaseFileinline
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(const char *str)FatFileinline
write(uint8_t b)FatFileinline
write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file.html deleted file mode 100644 index 8379d9ed..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file.html +++ /dev/null @@ -1,3436 +0,0 @@ - - - - - - - -SdFat: SdBaseFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for backward compatibility. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdBaseFile:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for SdBaseFile:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
 SdBaseFile (const char *path, oflag_t oflag)
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Class for backward compatibility.

-

Constructor & Destructor Documentation

- -

◆ SdBaseFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
SdBaseFile::SdBaseFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::available ()
-
-inlineinherited
-
-
Returns
The number of bytes available from the current position to EOF for normal files. Zero is returned for directory files.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int FatFile::peek ()
-
-inherited
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/2]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [2/3]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (uint8_t b)
-
-inlineinherited
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file__coll__graph.png deleted file mode 100644 index 6337c9e1..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file__inherit__graph.png deleted file mode 100644 index 6337c9e1..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_base_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat-members.html deleted file mode 100644 index 33403afc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat-members.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFat Member List
-
-
- -

This is the complete list of members for SdFat, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatinline
SdFileSystem< SdSpiCard >::begin()SdFileSystem< SdSpiCard >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCard >inline
cardBegin(uint8_t csPin=SS, SPISettings settings=SPI_FULL_SPEED)SdFatinline
cardErrorCode()SdFileSystem< SdSpiCard >inline
cardErrorData()SdFileSystem< SdSpiCard >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint()SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
fsBegin()SdFatinline
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint()SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
SdFat() (defined in SdFat)SdFatinline
SdFat(SPIClass *spiPort)SdFatinlineexplicit
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat.html deleted file mode 100644 index cfe155af..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat.html +++ /dev/null @@ -1,2550 +0,0 @@ - - - - - - - -SdFat: SdFat Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFat Class Reference
-
-
- -

Main file system class for SdFat library. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFat:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFat:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardcard ()
 
bool cardBegin (uint8_t csPin=SS, SPISettings settings=SPI_FULL_SPEED)
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool fsBegin ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
 SdFat (SPIClass *spiPort)
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

Main file system class for SdFat library.

-

Constructor & Destructor Documentation

- -

◆ SdFat()

- -
-
- - - - - -
- - - - - - - - -
SdFat::SdFat (SPIClass * spiPort)
-
-inlineexplicit
-
-

Constructor with SPI port selection.

Parameters
- - -
[in]spiPortSPI port number.
-
-
- -
-
-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCard >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFat::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCard * SdFileSystem< SdSpiCard >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardBegin()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFat::cardBegin (uint8_t csPin = SS,
SPISettings settings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card for diagnostic use only.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]settingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCard >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCard >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ fsBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFat::fsBegin ()
-
-inline
-
-

Initialize file system for diagnostic use only.

Returns
true for success else false.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat__coll__graph.png deleted file mode 100644 index 323a75e0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat__inherit__graph.png deleted file mode 100644 index 323a75e0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x-members.html deleted file mode 100644 index 116bda77..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x-members.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatEX Member List
-
-
- -

This is the complete list of members for SdFatEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatEXinline
SdFileSystem< SdSpiCardEX >::begin()SdFileSystem< SdSpiCardEX >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCardEX >inline
cardErrorCode()SdFileSystem< SdSpiCardEX >inline
cardErrorData()SdFileSystem< SdSpiCardEX >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint()SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint()SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
SdFatEX() (defined in SdFatEX)SdFatEXinline
SdFatEX(SPIClass *spiPort)SdFatEXinlineexplicit
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x.html deleted file mode 100644 index e51b2b88..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x.html +++ /dev/null @@ -1,2475 +0,0 @@ - - - - - - - -SdFat: SdFatEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatEX Class Reference
-
-
- -

SdFat class with extended SD I/O. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatEX:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatEX:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardEXcard ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
 SdFatEX (SPIClass *spiPort)
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

SdFat class with extended SD I/O.

-

Constructor & Destructor Documentation

- -

◆ SdFatEX()

- -
-
- - - - - -
- - - - - - - - -
SdFatEX::SdFatEX (SPIClass * spiPort)
-
-inlineexplicit
-
-

Constructor with SPI port selection.

Parameters
- - -
[in]spiPortSPI port number.
-
-
- -
-
-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCardEX >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFatEX::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCardEX * SdFileSystem< SdSpiCardEX >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCardEX >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCardEX >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x__coll__graph.png deleted file mode 100644 index 4a85bc64..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x__inherit__graph.png deleted file mode 100644 index 4a85bc64..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio-members.html deleted file mode 100644 index d524f8f9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio-members.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSdio Member List
-
-
- -

This is the complete list of members for SdFatSdio, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdFatSdioinline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdioCard >inline
cardBegin()SdFatSdioinline
cardErrorCode()SdFileSystem< SdioCard >inline
cardErrorData()SdFileSystem< SdioCard >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdioCard >inline
errorHalt(Print *pr)SdFileSystem< SdioCard >inline
errorHalt(char const *msg)SdFileSystem< SdioCard >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
errorPrint()SdFileSystem< SdioCard >inline
errorPrint(Print *pr)SdFileSystem< SdioCard >inline
errorPrint(const char *msg)SdFileSystem< SdioCard >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
fsBegin()SdFatSdioinline
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdioCard >inline
initErrorHalt(Print *pr)SdFileSystem< SdioCard >inline
initErrorHalt(char const *msg)SdFileSystem< SdioCard >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
initErrorPrint()SdFileSystem< SdioCard >inline
initErrorPrint(Print *pr)SdFileSystem< SdioCard >inline
initErrorPrint(char const *msg)SdFileSystem< SdioCard >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdioCard >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCard >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio.html deleted file mode 100644 index 1fe68066..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio.html +++ /dev/null @@ -1,2450 +0,0 @@ - - - - - - - -SdFat: SdFatSdio Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSdio Class Reference
-
-
- -

SdFat class using SDIO. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSdio:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSdio:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdioCardcard ()
 
bool cardBegin ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool fsBegin ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

SdFat class using SDIO.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdio::begin ()
-
-inline
-
-

Initialize SD card and file system.

Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdioCard * SdFileSystem< SdioCard >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdio::cardBegin ()
-
-inline
-
-

Initialize SD card for diagnostic use only.

-
Returns
true for success else false.
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdioCard >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdioCard >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ fsBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdio::fsBegin ()
-
-inline
-
-

Initialize file system for diagnostic use only.

Returns
true for success else false.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCard >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio__coll__graph.png deleted file mode 100644 index b8803e89..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio__inherit__graph.png deleted file mode 100644 index b8803e89..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x-members.html deleted file mode 100644 index 9a8a67e7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x-members.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSdioEX Member List
-
-
- -

This is the complete list of members for SdFatSdioEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdFatSdioEXinline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFatSdioEXinline
cardBegin()SdFatSdioEXinline
cardErrorCode()SdFileSystem< SdioCardEX >inline
cardErrorData()SdFileSystem< SdioCardEX >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdioCardEX >inline
errorHalt(Print *pr)SdFileSystem< SdioCardEX >inline
errorHalt(char const *msg)SdFileSystem< SdioCardEX >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
errorPrint()SdFileSystem< SdioCardEX >inline
errorPrint(Print *pr)SdFileSystem< SdioCardEX >inline
errorPrint(const char *msg)SdFileSystem< SdioCardEX >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
fsBegin()SdFatSdioEXinline
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdioCardEX >inline
initErrorHalt(Print *pr)SdFileSystem< SdioCardEX >inline
initErrorHalt(char const *msg)SdFileSystem< SdioCardEX >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint()SdFileSystem< SdioCardEX >inline
initErrorPrint(Print *pr)SdFileSystem< SdioCardEX >inline
initErrorPrint(char const *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdioCardEX >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x.html deleted file mode 100644 index d8c95f20..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x.html +++ /dev/null @@ -1,2450 +0,0 @@ - - - - - - - -SdFat: SdFatSdioEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSdioEX Class Reference
-
-
- -

SdFat class using SDIO. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSdioEX:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSdioEX:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdioCardEXcard ()
 
bool cardBegin ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool fsBegin ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

SdFat class using SDIO.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdioEX::begin ()
-
-inline
-
-

Initialize SD card and file system.

Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdioCardEX* SdFatSdioEX::card ()
-
-inline
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdioEX::cardBegin ()
-
-inline
-
-

Initialize SD card for diagnostic use only.

-
Returns
true for success else false.
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdioCardEX >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdioCardEX >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ fsBegin()

- -
-
- - - - - -
- - - - - - - -
bool SdFatSdioEX::fsBegin ()
-
-inline
-
-

Initialize file system for diagnostic use only.

Returns
true for success else false.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdioCardEX >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x__coll__graph.png deleted file mode 100644 index cf84ef93..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x__inherit__graph.png deleted file mode 100644 index cf84ef93..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_sdio_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi-members.html deleted file mode 100644 index 0507c206..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi-members.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSoftSpi< MisoPin, MosiPin, SckPin > Member List
-
-
- -

This is the complete list of members for SdFatSoftSpi< MisoPin, MosiPin, SckPin >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatSoftSpi< MisoPin, MosiPin, SckPin >inline
SdFileSystem< SdSpiCard >::begin()SdFileSystem< SdSpiCard >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCard >inline
cardErrorCode()SdFileSystem< SdSpiCard >inline
cardErrorData()SdFileSystem< SdSpiCard >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint()SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint()SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCard >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCard >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi.html deleted file mode 100644 index 8ec7c9e1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi.html +++ /dev/null @@ -1,2445 +0,0 @@ - - - - - - - -SdFat: SdFatSoftSpi< MisoPin, MosiPin, SckPin > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSoftSpi< MisoPin, MosiPin, SckPin > Class Template Reference
-
-
- -

SdFat class using software SPI. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSoftSpi< MisoPin, MosiPin, SckPin >:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSoftSpi< MisoPin, MosiPin, SckPin >:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardcard ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
-class SdFatSoftSpi< MisoPin, MosiPin, SckPin >

- -

SdFat class using software SPI.

-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCard >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
-
-template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFatSoftSpi< MisoPin, MosiPin, SckPin >::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsignored for software SPI..
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCard * SdFileSystem< SdSpiCard >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCard >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCard >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCard >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi__coll__graph.png deleted file mode 100644 index e868a3cb..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi__inherit__graph.png deleted file mode 100644 index e868a3cb..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x-members.html deleted file mode 100644 index 8e2c1c93..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x-members.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFatSoftSpiEX< MisoPin, MosiPin, SckPin > Member List
-
-
- -

This is the complete list of members for SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >inline
SdFileSystem< SdSpiCardEX >::begin()SdFileSystem< SdSpiCardEX >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdSpiCardEX >inline
cardErrorCode()SdFileSystem< SdSpiCardEX >inline
cardErrorData()SdFileSystem< SdSpiCardEX >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint()SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
errorPrint(const char *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint()SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdSpiCardEX >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x.html deleted file mode 100644 index 38eae09d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x.html +++ /dev/null @@ -1,2445 +0,0 @@ - - - - - - - -SdFat: SdFatSoftSpiEX< MisoPin, MosiPin, SckPin > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFatSoftSpiEX< MisoPin, MosiPin, SckPin > Class Template Reference
-
-
- -

SdFat class using software SPI and extended SD I/O. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
bool begin (uint8_t csPin=SS, SPISettings spiSettings=SPI_FULL_SPEED)
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdSpiCardEXcard ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
-class SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >

- -

SdFat class using software SPI and extended SD I/O.

-

Member Function Documentation

- -

◆ begin() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/3]

- -
-
- - - - - -
- - - - - - - -
bool SdFileSystem< SdSpiCardEX >::begin ()
-
-inlineinherited
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ begin() [3/3]

- -
-
-
-template<uint8_t MisoPin, uint8_t MosiPin, uint8_t SckPin>
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdFatSoftSpiEX< MisoPin, MosiPin, SckPin >::begin (uint8_t csPin = SS,
SPISettings spiSettings = SPI_FULL_SPEED 
)
-
-inline
-
-

Initialize SD card and file system.

-
Parameters
- - - -
[in]csPinSD card chip select pin.
[in]spiSettingsignored for software SPI.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
- - - - - -
- - - - - - - -
SdSpiCardEX * SdFileSystem< SdSpiCardEX >::card ()
-
-inlineinherited
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdSpiCardEX >::cardErrorCode ()
-
-inlineinherited
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdSpiCardEX >::cardErrorData ()
-
-inlineinherited
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt ()
-
-inlineinherited
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr)
-
-inlineinherited
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (char const * msg)
-
-inlineinherited
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint ()
-
-inlineinherited
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr)
-
-inlineinherited
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const char * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt ()
-
-inlineinherited
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr)
-
-inlineinherited
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (char const * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
- - - - - -
- - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint ()
-
-inlineinherited
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr)
-
-inlineinherited
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (char const * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
- - - - - -
- - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (const __FlashStringHelper * msg)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdSpiCardEX >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inlineinherited
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x__coll__graph.png deleted file mode 100644 index 470ddc43..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x__inherit__graph.png deleted file mode 100644 index 470ddc43..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_fat_soft_spi_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file-members.html deleted file mode 100644 index 4df1926f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file-members.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFile Member List
-
-
- -

This is the complete list of members for SdFile, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()PrintFileinline
clearError()FatFileinline
clearWriteError()PrintFileinline
FatFile::clearWriteError()FatFileinline
close()FatFile
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFile
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFile
createContiguous(const char *path, uint32_t size)FatFileinline
curCluster() constFatFileinline
curPosition() constFatFileinline
cwd()FatFileinlinestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlinestatic
dateTimeCallbackCancel()FatFileinlinestatic
dirEntry(dir_t *dir)FatFile
dirIndex()FatFileinline
dirName(const dir_t *dir, char *name)FatFilestatic
dirSize()FatFile
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFile
exists(const char *path)FatFileinline
FatFile()FatFileinline
FatFile(const char *path, oflag_t oflag)FatFileinline
fgets(char *str, int16_t num, char *delim=0)FatFile
fileAttr() constFatFileinline
fileSize() constFatFileinline
firstBlock()FatFileinline
firstCluster() constFatFileinline
flush()PrintFileinline
getError()FatFileinline
getName(char *name, size_t size)FatFile
getpos(FatPos_t *pos)FatFile
getSFN(char *name)FatFile
getWriteError()PrintFileinline
FatFile::getWriteError()FatFileinline
isDir() constFatFileinline
isFile() constFatFileinline
isHidden() constFatFileinline
isLFN() constFatFileinline
isOpen() constFatFileinline
isReadOnly() constFatFileinline
isRoot() constFatFileinline
isRoot32() constFatFileinline
isRootFixed() constFatFileinline
isSubDir() constFatFileinline
isSystem() constFatFileinline
legal83Char(uint8_t c)FatFileinlinestatic
ls(uint8_t flags=0)FatFileinline
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFile
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFile
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFile
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFile
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFile
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinline
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFile
openRoot(FatVolume *vol)FatFile
peek()PrintFileinline
printCreateDateTime(print_t *pr)FatFile
printFatDate(uint16_t fatDate)FatFileinlinestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFilestatic
printFatTime(uint16_t fatTime)FatFileinlinestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFilestatic
printField(float value, char term, uint8_t prec=2)FatFile
printField(int16_t value, char term)FatFile
printField(uint16_t value, char term)FatFile
printField(int32_t value, char term)FatFile
printField(uint32_t value, char term)FatFile
PrintFile() (defined in PrintFile)PrintFileinline
PrintFile(const char *path, oflag_t oflag)PrintFileinline
printFileSize(print_t *pr)FatFile
printModifyDateTime(print_t *pr)FatFile
printName()FatFileinline
printName(print_t *pr)FatFile
printSFN(print_t *pr)FatFile
read()PrintFileinline
read(void *buf, size_t nbyte)PrintFile
FatFile::read()FatFileinline
FatFile::read(void *buf, size_t nbyte)FatFile
readDir(dir_t *dir)FatFile
remove()FatFile
remove(FatFile *dirFile, const char *path)FatFilestatic
rename(FatFile *dirFile, const char *newPath)FatFile
rewind()FatFileinline
rmdir()FatFile
rmRfStar()FatFile
SdFile() (defined in SdFile)SdFileinline
SdFile(const char *path, oflag_t oflag)SdFileinline
seekCur(int32_t offset)FatFileinline
seekEnd(int32_t offset=0)FatFileinline
seekSet(uint32_t pos)FatFile
setCwd(FatFile *dir)FatFileinlinestatic
setpos(FatPos_t *pos)FatFile
sync()FatFile
timestamp(FatFile *file)FatFile
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFile
truncate(uint32_t length)FatFile
volume() constFatFileinline
write(uint8_t b)PrintFileinline
write(const uint8_t *buf, size_t size)PrintFileinline
write(const char *str)PrintFileinline
write(uint8_t b)PrintFileinline
write(const void *buf, size_t nbyte)PrintFile
FatFile::write(const char *str)FatFileinline
FatFile::write(const void *buf, size_t nbyte)FatFile
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file.html deleted file mode 100644 index 31f889cb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file.html +++ /dev/null @@ -1,3721 +0,0 @@ - - - - - - - -SdFat: SdFile Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for backward compatibility. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFile:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdFile:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

int available ()
 
void clearError ()
 
void clearWriteError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
void flush ()
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (float value, char term, uint8_t prec=2)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read (void *buf, size_t nbyte)
 
int read ()
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
void rewind ()
 
bool rmdir ()
 
bool rmRfStar ()
 
 SdFile (const char *path, oflag_t oflag)
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
int write (const void *buf, size_t nbyte)
 
size_t write (uint8_t b)
 
size_t write (const uint8_t *buf, size_t size)
 
int write (const char *str)
 
int write (const void *buf, size_t nbyte)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

Class for backward compatibility.

-

Constructor & Destructor Documentation

- -

◆ SdFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
SdFile::SdFile (const char * path,
oflag_t oflag 
)
-
-inline
-
-

Create a file object and open it in the current working directory.

-
Parameters
- - - -
[in]pathA path for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t).
-
-
- -
-
-

Member Function Documentation

- -

◆ available()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::available ()
-
-inlineinherited
-
-
Returns
number of bytes available from the current position to EOF or INT_MAX if more than INT_MAX bytes are available.
- -
-
- -

◆ clearError()

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearError ()
-
-inlineinherited
-
-

Clear all error bits.

- -
-
- -

◆ clearWriteError() [1/2]

- -
-
- - - - - -
- - - - -
void FatFile::clearWriteError
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ clearWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
void FatFile::clearWriteError ()
-
-inlineinherited
-
-

Set writeError to zero

- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::close ()
-
-inherited
-
-

Close a file and force cached data and directory information to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ contiguousRange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::contiguousRange (uint32_t * bgnBlock,
uint32_t * endBlock 
)
-
-inherited
-
-

Check for contiguous file and return its raw block range.

-
Parameters
- - - -
[out]bgnBlockthe first block address for the file.
[out]endBlockthe last block address for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ createContiguous() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (FatFiledirFile,
const char * path,
uint32_t size 
)
-
-inherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - - -
[in]dirFileThe directory where the file will be created.
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ createContiguous() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::createContiguous (const char * path,
uint32_t size 
)
-
-inlineinherited
-
-

Create and open a new contiguous file of a specified size.

-
Parameters
- - - -
[in]pathA path with a validfile name.
[in]sizeThe desired file size.
-
-
-
Returns
The value true is returned for success and the value false, is returned for failure.
- -
-
- -

◆ curCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curCluster () const
-
-inlineinherited
-
-
Returns
The current cluster number for a file or directory.
- -
-
- -

◆ curPosition()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::curPosition () const
-
-inlineinherited
-
-
Returns
The current position for a file or directory.
- -
-
- -

◆ cwd()

- -
-
- - - - - -
- - - - - - - -
static FatFile* FatFile::cwd ()
-
-inlinestaticinherited
-
-
Returns
Current working directory
- -
-
- -

◆ dateTimeCallback()

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::dateTimeCallback (void(*)(uint16_t *date, uint16_t *time) dateTime)
-
-inlinestaticinherited
-
-

Set the date/time callback function

-
Parameters
- - -
[in]dateTimeThe user's call back function. The callback function is of the form:
-
-
-
void dateTime(uint16_t* date, uint16_t* time) {
uint16_t year;
uint8_t month, day, hour, minute, second;
// User gets date and time from GPS or real-time clock here
// return date using FAT_DATE macro to format fields
*date = FAT_DATE(year, month, day);
// return time using FAT_TIME macro to format fields
*time = FAT_TIME(hour, minute, second);
}

Sets the function that is called when a file is created or when a file's directory entry is modified by sync(). All timestamps, access, creation, and modify, are set when a file is created. sync() maintains the last access date and last modify date/time.

-

See the timestamp() function.

- -
-
- -

◆ dateTimeCallbackCancel()

- -
-
- - - - - -
- - - - - - - -
static void FatFile::dateTimeCallbackCancel ()
-
-inlinestaticinherited
-
-

Cancel the date/time callback function.

- -
-
- -

◆ dirEntry()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::dirEntry (dir_tdir)
-
-inherited
-
-

Return a file's directory entry.

-
Parameters
- - -
[out]dirLocation for return of the file's directory entry.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ dirIndex()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatFile::dirIndex ()
-
-inlineinherited
-
-
Returns
The index of this file in it's directory.
- -
-
- -

◆ dirName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t FatFile::dirName (const dir_tdir,
char * name 
)
-
-staticinherited
-
-

Format the name field of dir into the 13 byte array name in standard 8.3 short name format.

-
Parameters
- - - -
[in]dirThe directory structure containing the name.
[out]nameA 13 byte char array for the formatted name.
-
-
-
Returns
length of the name.
- -
-
- -

◆ dirSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::dirSize ()
-
-inherited
-
-
Returns
The number of bytes allocated to a directory or zero if an error occurs.
- -
-
- -

◆ dmpFile()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::dmpFile (print_tpr,
uint32_t pos,
size_t n 
)
-
-inherited
-
-

Dump file in Hex

Parameters
- - - - -
[in]prPrint stream for list.
[in]posStart position in file.
[in]nnumber of locations to dump.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file in a directory

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-

The calling instance must be an open directory file.

-

dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory dirFile.

-
Returns
true if the file exists else false.
- -
-
- -

◆ fgets()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int16_t FatFile::fgets (char * str,
int16_t num,
char * delim = 0 
)
-
-inherited
-
-

Get a string from a file.

-

fgets() reads bytes from a file into the array pointed to by str, until num - 1 bytes are read, or a delimiter is read and transferred to str, or end-of-file is encountered. The string is then terminated with a null byte.

-

fgets() deletes CR, '\r', from the string. This insures only a '\n' terminates the string for Windows text files which use CRLF for newline.

-
Parameters
- - - - -
[out]strPointer to the array where the string is stored.
[in]numMaximum number of characters to be read (including the final null byte). Usually the length of the array str is used.
[in]delimOptional set of delimiters. The default is "\n".
-
-
-
Returns
For success fgets() returns the length of the string in str. If no data is read, fgets() returns zero for EOF or -1 if an error occurred.
- -
-
- -

◆ fileAttr()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::fileAttr () const
-
-inlineinherited
-
-

Type of file. You should use isFile() or isDir() instead of fileType() if possible.

-
Returns
The file or directory type.
- -
-
- -

◆ fileSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::fileSize () const
-
-inlineinherited
-
-
Returns
The total number of bytes in a file.
- -
-
- -

◆ firstBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstBlock ()
-
-inlineinherited
-
-
Returns
first block of file or zero for empty file.
- -
-
- -

◆ firstCluster()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatFile::firstCluster () const
-
-inlineinherited
-
-
Returns
The first cluster number for a file or directory.
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
void PrintFile::flush ()
-
-inlineinherited
-
-

Ensure that any bytes written to the file are saved to the SD card.

- -
-
- -

◆ getError()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatFile::getError ()
-
-inlineinherited
-
-
Returns
All error bits.
- -
-
- -

◆ getName()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::getName (char * name,
size_t size 
)
-
-inherited
-
-

Get a file's name followed by a zero byte.

-
Parameters
- - - -
[out]nameAn array of characters for the file's name.
[in]sizeThe size of the array in bytes. The array must be at least 13 bytes long. The file's name will be truncated if the file's name is too long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
- -
-
- -

◆ getpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::getpos (FatPos_tpos)
-
-inherited
-
-

get position for streams

Parameters
- - -
[out]posstruct to receive position
-
-
- -
-
- -

◆ getSFN()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::getSFN (char * name)
-
-inherited
-
-

Get a file's Short File Name followed by a zero byte.

-
Parameters
- - -
[out]nameAn array of characters for the file's name. The array must be at least 13 bytes long.
-
-
-
Returns
The value true, is returned for success and the value false, is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ getWriteError() [1/2]

- -
-
- - - - - -
- - - - -
bool FatFile::getWriteError
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ getWriteError() [2/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::getWriteError ()
-
-inlineinherited
-
-
Returns
value of writeError
- -
-
- -

◆ isDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isDir () const
-
-inlineinherited
-
-
Returns
True if this is a directory else false.
- -
-
- -

◆ isFile()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isFile () const
-
-inlineinherited
-
-
Returns
True if this is a normal file else false.
- -
-
- -

◆ isHidden()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isHidden () const
-
-inlineinherited
-
-
Returns
True if this is a hidden file else false.
- -
-
- -

◆ isLFN()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isLFN () const
-
-inlineinherited
-
-
Returns
true if this file has a Long File Name.
- -
-
- -

◆ isOpen()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isOpen () const
-
-inlineinherited
-
-
Returns
True if this is an open file/directory else false.
- -
-
- -

◆ isReadOnly()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isReadOnly () const
-
-inlineinherited
-
-
Returns
True if file is read-only
- -
-
- -

◆ isRoot()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot () const
-
-inlineinherited
-
-
Returns
True if this is the root directory.
- -
-
- -

◆ isRoot32()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRoot32 () const
-
-inlineinherited
-
-
Returns
True if this is the FAT32 root directory.
- -
-
- -

◆ isRootFixed()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isRootFixed () const
-
-inlineinherited
-
-
Returns
True if this is the FAT12 of FAT16 root directory.
- -
-
- -

◆ isSubDir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSubDir () const
-
-inlineinherited
-
-
Returns
True if this is a subdirectory else false.
- -
-
- -

◆ isSystem()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::isSystem () const
-
-inlineinherited
-
-
Returns
True if this is a system file else false.
- -
-
- -

◆ legal83Char()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::legal83Char (uint8_t c)
-
-inlinestaticinherited
-
-

Check for a legal 8.3 character.

Parameters
- - -
[in]cCharacter to be checked.
-
-
-
Returns
true for a legal 8.3 character else false.
- -
-
- -

◆ ls() [1/2]

- -
-
- - - - - -
- - - - - - - - -
void FatFile::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List directory contents.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFile::ls (print_tpr,
uint8_t flags = 0,
uint8_t indent = 0 
)
-
-inherited
-
-

List directory contents.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

-
Parameters
- - -
[in]indentAmount of space before file name. Used for recursive list to indicate subdirectory level.
-
-
- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::mkdir (FatFiledir,
const char * path,
bool pFlag = true 
)
-
-inherited
-
-

Make a new directory.

-
Parameters
- - - - -
[in]dirAn open FatFile instance for the directory that will contain the new directory.
[in]pathA path with a valid 8.3 DOS name for the new directory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFileSystemfs,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file in the volume working directory of a FatFileSystem.

-
Parameters
- - - - -
[in]fsFile System where the file is located.
[in]pathwith a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
uint16_t index,
oflag_t oflag 
)
-
-inherited
-
-

Open a file by index.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory.
[in]indexThe index of the directory entry for the file to be opened. The value for index is (directory file position)/32.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-

See open() by path for definition of flags.

Returns
true for success or false for failure.
- -
-
- -

◆ open() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::open (FatFiledirFile,
const char * path,
oflag_t oflag 
)
-
-inherited
-
-

Open a file or directory by name.

-
Parameters
- - - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagValues for oflag are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

O_RDONLY - Open for reading.

-

O_READ - Same as O_RDONLY (GNU).

-

O_WRONLY - Open for writing.

-

O_WRITE - Same as O_WRONLY (GNU).

-

O_RDWR - Open for reading and writing.

-

O_APPEND - If set, the file offset shall be set to the end of the file prior to each write.

-

O_AT_END - Set the initial position at the end of the file.

-

O_CREAT - If the file exists, this flag has no effect except as noted under O_EXCL below. Otherwise, the file shall be created

-

O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists.

-

O_SYNC - Call sync() after each write. This flag should not be used with write(uint8_t) or any functions do character at a time writes since sync() will be called after each byte.

-

O_TRUNC - If the file exists and is a regular file, and the file is successfully opened and is not read only, its length shall be truncated to 0.

-

WARNING: A given file must not be opened by more than one FatFile object or file corruption may occur.

-
Note
Directory files must be opened read only. Write and truncation is not allowed for directory files.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::open (const char * path,
oflag_t oflag = O_RDONLY 
)
-
-inlineinherited
-
-

Open a file in the current working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for a file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ openNext()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::openNext (FatFiledirFile,
oflag_t oflag = O_RDONLY 
)
-
-inherited
-
-

Open the next file or subdirectory in a directory.

-
Parameters
- - - -
[in]dirFileAn open FatFile instance for the directory containing the file to be opened.
[in]oflagbitwise-inclusive OR of open mode flags. See see FatFile::open(FatFile*, const char*, oflag_t).
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ openRoot()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::openRoot (FatVolumevol)
-
-inherited
-
-

Open a volume's root directory.

-
Parameters
- - -
[in]volThe FAT volume containing the root directory to be opened.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int PrintFile::peek ()
-
-inlineinherited
-
-

Return the next available byte without consuming it.

-
Returns
The byte if no error and not at eof else -1;
- -
-
- -

◆ printCreateDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printCreateDateTime (print_tpr)
-
-inherited
-
-

Print a file's creation date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printFatDate() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatDate (uint16_t fatDate)
-
-inlinestaticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - -
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatDate() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatDate (print_tpr,
uint16_t fatDate 
)
-
-staticinherited
-
-

Print a directory date field.

-

Format is yyyy-mm-dd.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatDateThe date field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [1/2]

- -
-
- - - - - -
- - - - - - - - -
static void FatFile::printFatTime (uint16_t fatTime)
-
-inlinestaticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - -
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printFatTime() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFile::printFatTime (print_tpr,
uint16_t fatTime 
)
-
-staticinherited
-
-

Print a directory time field.

-

Format is hh:mm:ss.

-
Parameters
- - - -
[in]prPrint stream for output.
[in]fatTimeThe time field from a directory entry.
-
-
- -
-
- -

◆ printField() [1/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int FatFile::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint16_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [4/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (int32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [5/5]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::printField (uint32_t value,
char term 
)
-
-inherited
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator. Use '\n' for CR LF.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printFileSize()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printFileSize (print_tpr)
-
-inherited
-
-

Print a file's size.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ printModifyDateTime()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::printModifyDateTime (print_tpr)
-
-inherited
-
-

Print a file's modify date and time

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [1/2]

- -
-
- - - - - -
- - - - - - - -
size_t FatFile::printName ()
-
-inlineinherited
-
-

Print a file's name.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printName() [2/2]

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printName (print_tpr)
-
-inherited
-
-

Print a file's name

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ printSFN()

- -
-
- - - - - -
- - - - - - - - -
size_t FatFile::printSFN (print_tpr)
-
-inherited
-
-

Print a file's Short File Name.

-
Parameters
- - -
[in]prPrint stream for output.
-
-
-
Returns
The number of characters printed is returned for success and zero is returned for failure.
- -
-
- -

◆ read() [1/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [2/4]

- -
-
- - - - - -
- - - - -
int FatFile::read
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ read() [3/4]

- -
-
- - - - - -
- - - - - - - -
int FatFile::read ()
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success read returns the next byte in the file as an int. If an error occurs or end of file is reached -1 is returned.
- -
-
- -

◆ read() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::read (void * buf,
size_t nbyte 
)
-
-inherited
-
-

Read data from a file starting at the current position.

-
Parameters
- - - -
[out]bufPointer to the location that will receive the data.
[in]nbyteMaximum number of bytes to read.
-
-
-
Returns
For success read() returns the number of bytes read. A value less than nbyte, including zero, will be returned if end of file is reached. If an error occurs, read() returns -1. Possible errors include read() called before a file has been opened, corrupt file system or an I/O error occurred.
- -
-
- -

◆ readDir()

- -
-
- - - - - -
- - - - - - - - -
int8_t FatFile::readDir (dir_tdir)
-
-inherited
-
-

Read the next directory entry from a directory file.

-
Parameters
- - -
[out]dirThe dir_t struct that will receive the data.
-
-
-
Returns
For success readDir() returns the number of bytes read. A value of zero will be returned if end of file is reached. If an error occurs, readDir() returns -1. Possible errors include readDir() called before a directory has been opened, this is not a directory file or an I/O error occurred.
- -
-
- -

◆ remove() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatFile::remove ()
-
-inherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ remove() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::remove (FatFiledirFile,
const char * path 
)
-
-staticinherited
-
-

Remove a file.

-

The directory entry and all data for the file are deleted.

-
Parameters
- - - -
[in]dirFileThe directory that contains the file.
[in]pathPath for the file to be removed.
-
-
-
Note
This function should not be used to delete the 8.3 version of a file that has a long name. For example if a file has the long name "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFile::rename (FatFiledirFile,
const char * newPath 
)
-
-inherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]dirFileDirectory for the new path.
[in]newPathNew path name for the file/directory.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - -
- - - - - - - -
void FatFile::rewind ()
-
-inlineinherited
-
-

Set the file's current position to zero.

- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmdir ()
-
-inherited
-
-

Remove a directory file.

-

The directory file will be removed only if it is empty and is not the root directory. rmdir() follows DOS and Windows and ignores the read-only attribute for the directory.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. For example if a directory has the long name "New folder" you should not delete the 8.3 name "NEWFOL~1".
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmRfStar()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::rmRfStar ()
-
-inherited
-
-

Recursively delete a directory and all contained files.

-

This is like the Unix/Linux 'rm -rf *' if called with the root directory hence the name.

-

Warning - This will remove all contents of the directory including subdirectories. The directory will then be removed if it is not root. The read-only attribute for files will be ignored.

-
Note
This function should not be used to delete the 8.3 version of a directory that has a long name. See remove() and rmdir().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ seekCur()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekCur (int32_t offset)
-
-inlineinherited
-
-

Set the files position to current position + pos. See seekSet().

Parameters
- - -
[in]offsetThe new position in bytes from the current position.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekEnd()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekEnd (int32_t offset = 0)
-
-inlineinherited
-
-

Set the files position to end-of-file + offset. See seekSet(). Can't be used for directory files since file size is not defined.

Parameters
- - -
[in]offsetThe new position in bytes from end-of-file.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ seekSet()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::seekSet (uint32_t pos)
-
-inherited
-
-

Sets a file's position.

-
Parameters
- - -
[in]posThe new position in bytes from the beginning of the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ setCwd()

- -
-
- - - - - -
- - - - - - - - -
static bool FatFile::setCwd (FatFiledir)
-
-inlinestaticinherited
-
-

Set the current working directory.

-
Parameters
- - -
[in]dirNew current working directory.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ setpos()

- -
-
- - - - - -
- - - - - - - - -
void FatFile::setpos (FatPos_tpos)
-
-inherited
-
-

set position for streams

Parameters
- - -
[out]posstruct with value for new position
-
-
- -
-
- -

◆ sync()

- -
-
- - - - - -
- - - - - - - -
bool FatFile::sync ()
-
-inherited
-
-

The sync() call causes all modified data and directory fields to be written to the storage device.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::timestamp (FatFilefile)
-
-inherited
-
-

Copy a file's timestamps

-
Parameters
- - -
[in]fileFile to copy timestamps from.
-
-
-
Note
Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ timestamp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FatFile::timestamp (uint8_t flags,
uint16_t year,
uint8_t month,
uint8_t day,
uint8_t hour,
uint8_t minute,
uint8_t second 
)
-
-inherited
-
-

Set a file's timestamps in its directory entry.

-
Parameters
- - -
[in]flagsValues for flags are constructed by a bitwise-inclusive OR of flags from the following list
-
-
-

T_ACCESS - Set the file's last access date.

-

T_CREATE - Set the file's creation date and time.

-

T_WRITE - Set the file's last write/modification date and time.

-
Parameters
- - - - - - - -
[in]yearValid range 1980 - 2107 inclusive.
[in]monthValid range 1 - 12 inclusive.
[in]dayValid range 1 - 31 inclusive.
[in]hourValid range 0 - 23 inclusive.
[in]minuteValid range 0 - 59 inclusive.
[in]secondValid range 0 - 59 inclusive
-
-
-
Note
It is possible to set an invalid date since there is no check for the number of days in a month.
-
-Modify and access timestamps may be overwritten if a date time callback function has been set by dateTimeCallback().
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - -
bool FatFile::truncate (uint32_t length)
-
-inherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - -
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ volume()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFile::volume () const
-
-inlineinherited
-
-
Returns
FatVolume that contains this file.
- -
-
- -

◆ write() [1/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [2/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [3/7]

- -
-
- - - - - -
- - - - -
int FatFile::write
-
-inlineinherited
-
-

Write a single byte.

Parameters
- - -
[in]bThe byte to be written.
-
-
-
Returns
+1 for success or -1 for failure.
- -
-
- -

◆ write() [4/7]

- -
-
- - - - - -
- - - - - - - - -
size_t PrintFile::write (uint8_t b)
-
-inlineinherited
-
-

Read the next byte from a file.

-
Returns
For success return the next byte in the file as an int. If an error occurs or end of file is reached return -1. Write a byte to a file. Required by the Arduino Print class.
-
Parameters
- - -
[in]bthe byte to be written. Use getWriteError to check for errors.
-
-
-
Returns
1 for success and 0 for failure.
- -
-
- -

◆ write() [5/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t PrintFile::write (const uint8_t * buf,
size_t size 
)
-
-inlineinherited
-
-

Write data to an open file. Form required by Print.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]sizeNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
- -

◆ write() [6/7]

- -
-
- - - - - -
- - - - - - - - -
int FatFile::write (const char * str)
-
-inlineinherited
-
-

Write a string to a file. Used by the Arduino Print class.

Parameters
- - -
[in]strPointer to the string. Use getWriteError to check for errors.
-
-
-
Returns
count of characters written for success or -1 for failure.
- -
-
- -

◆ write() [7/7]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int FatFile::write (const void * buf,
size_t nbyte 
)
-
-inherited
-
-

Write data to an open file.

-
Note
Data is moved to the cache but may not be written to the storage device until sync() is called.
-
Parameters
- - - -
[in]bufPointer to the location of the data to be written.
[in]nbyteNumber of bytes to write.
-
-
-
Returns
For success write() returns the number of bytes written, always nbyte. If an error occurs, write() returns -1. Possible errors include write() is called before a file has been opened, write is called for a read-only file, device is full, a corrupt file system or an I/O error.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file__coll__graph.png deleted file mode 100644 index 5112d4b2..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file__inherit__graph.png deleted file mode 100644 index 5112d4b2..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system-members.html deleted file mode 100644 index 1d5268ab..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system-members.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdFileSystem< SdDriverClass > Member List
-
-
- -

This is the complete list of members for SdFileSystem< SdDriverClass >, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdFileSystem< SdDriverClass >inline
FatFileSystem::begin(BlockDriver *blockDev, uint8_t part=0)FatFileSysteminline
blocksPerCluster() constFatVolumeinline
blocksPerFat() constFatVolumeinline
cacheClear()FatVolumeinline
card()SdFileSystem< SdDriverClass >inline
cardErrorCode()SdFileSystem< SdDriverClass >inline
cardErrorData()SdFileSystem< SdDriverClass >inline
chdir(bool set_cwd=false)FatFileSysteminline
chdir(const char *path, bool set_cwd=false)FatFileSysteminline
chvol()FatFileSysteminline
clusterCount() constFatVolumeinline
clusterSizeShift() constFatVolumeinline
dataStartBlock() constFatVolumeinline
dbgFat(uint32_t n, uint32_t *v)FatVolumeinline
errorHalt()SdFileSystem< SdDriverClass >inline
errorHalt(Print *pr)SdFileSystem< SdDriverClass >inline
errorHalt(char const *msg)SdFileSystem< SdDriverClass >inline
errorHalt(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
errorHalt(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
errorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
errorPrint()SdFileSystem< SdDriverClass >inline
errorPrint(Print *pr)SdFileSystem< SdDriverClass >inline
errorPrint(const char *msg)SdFileSystem< SdDriverClass >inline
errorPrint(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
errorPrint(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
errorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
exists(const char *path)FatFileSysteminline
fatCount()FatVolumeinline
fatStartBlock() constFatVolumeinline
fatType() constFatVolumeinline
FatVolume()FatVolumeinline
freeClusterCount()FatVolume
init()FatVolumeinline
init(uint8_t part)FatVolume
initErrorHalt()SdFileSystem< SdDriverClass >inline
initErrorHalt(Print *pr)SdFileSystem< SdDriverClass >inline
initErrorHalt(char const *msg)SdFileSystem< SdDriverClass >inline
initErrorHalt(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
initErrorHalt(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
initErrorHalt(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint()SdFileSystem< SdDriverClass >inline
initErrorPrint(Print *pr)SdFileSystem< SdDriverClass >inline
initErrorPrint(char const *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint(Print *pr, char const *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint(const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
initErrorPrint(Print *pr, const __FlashStringHelper *msg)SdFileSystem< SdDriverClass >inline
ls(uint8_t flags=0)FatFileSysteminline
ls(const char *path, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, uint8_t flags=0)FatFileSysteminline
ls(print_t *pr, const char *path, uint8_t flags)FatFileSysteminline
mkdir(const char *path, bool pFlag=true)FatFileSysteminline
open(const char *path, oflag_t oflag=FILE_READ)FatFileSysteminline
open(const String &path, oflag_t oflag=FILE_READ)FatFileSysteminline
remove(const char *path)FatFileSysteminline
rename(const char *oldPath, const char *newPath)FatFileSysteminline
rmdir(const char *path)FatFileSysteminline
rootDirEntryCount() constFatVolumeinline
rootDirStart() constFatVolumeinline
truncate(const char *path, uint32_t length)FatFileSysteminline
vol()FatFileSysteminline
volumeBlockCount() constFatVolumeinline
vwd()FatFileSysteminline
wipe(print_t *pr=0)FatFileSysteminline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system.html deleted file mode 100644 index 9110ee61..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system.html +++ /dev/null @@ -1,2450 +0,0 @@ - - - - - - - -SdFat: SdFileSystem< SdDriverClass > Class Template Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdFileSystem< SdDriverClass > Class Template Reference
-
-
- -

Virtual base class for SdFat library. - More...

- -

#include <SdFat.h>

-
-Inheritance diagram for SdFileSystem< SdDriverClass >:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdFileSystem< SdDriverClass >:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (BlockDriver *blockDev, uint8_t part=0)
 
bool begin ()
 
uint8_t blocksPerCluster () const
 
uint32_t blocksPerFat () const
 
cache_tcacheClear ()
 
SdDriverClass * card ()
 
uint8_t cardErrorCode ()
 
uint32_t cardErrorData ()
 
bool chdir (bool set_cwd=false)
 
bool chdir (const char *path, bool set_cwd=false)
 
void chvol ()
 
uint32_t clusterCount () const
 
uint8_t clusterSizeShift () const
 
uint32_t dataStartBlock () const
 
int8_t dbgFat (uint32_t n, uint32_t *v)
 
void errorHalt ()
 
void errorHalt (Print *pr)
 
void errorHalt (char const *msg)
 
void errorHalt (Print *pr, char const *msg)
 
void errorHalt (const __FlashStringHelper *msg)
 
void errorHalt (Print *pr, const __FlashStringHelper *msg)
 
void errorPrint ()
 
void errorPrint (Print *pr)
 
void errorPrint (const char *msg)
 
void errorPrint (Print *pr, char const *msg)
 
void errorPrint (const __FlashStringHelper *msg)
 
void errorPrint (Print *pr, const __FlashStringHelper *msg)
 
bool exists (const char *path)
 
uint8_t fatCount ()
 
uint32_t fatStartBlock () const
 
uint8_t fatType () const
 
int32_t freeClusterCount ()
 
bool init ()
 
bool init (uint8_t part)
 
void initErrorHalt ()
 
void initErrorHalt (Print *pr)
 
void initErrorHalt (char const *msg)
 
void initErrorHalt (Print *pr, char const *msg)
 
void initErrorHalt (const __FlashStringHelper *msg)
 
void initErrorHalt (Print *pr, const __FlashStringHelper *msg)
 
void initErrorPrint ()
 
void initErrorPrint (Print *pr)
 
void initErrorPrint (char const *msg)
 
void initErrorPrint (Print *pr, char const *msg)
 
void initErrorPrint (const __FlashStringHelper *msg)
 
void initErrorPrint (Print *pr, const __FlashStringHelper *msg)
 
void ls (uint8_t flags=0)
 
void ls (const char *path, uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0)
 
void ls (print_t *pr, const char *path, uint8_t flags)
 
bool mkdir (const char *path, bool pFlag=true)
 
File open (const char *path, oflag_t oflag=FILE_READ)
 
File open (const String &path, oflag_t oflag=FILE_READ)
 
bool remove (const char *path)
 
bool rename (const char *oldPath, const char *newPath)
 
bool rmdir (const char *path)
 
uint16_t rootDirEntryCount () const
 
uint32_t rootDirStart () const
 
bool truncate (const char *path, uint32_t length)
 
FatVolumevol ()
 
uint32_t volumeBlockCount () const
 
FatFilevwd ()
 
bool wipe (print_t *pr=0)
 
-

Detailed Description

-

template<class SdDriverClass>
-class SdFileSystem< SdDriverClass >

- -

Virtual base class for SdFat library.

-

Member Function Documentation

- -

◆ begin() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::begin (BlockDriverblockDev,
uint8_t part = 0 
)
-
-inlineinherited
-
-

Initialize an FatFileSystem object.

Parameters
- - - -
[in]blockDevDevice block driver.
[in]partpartition to initialize.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ begin() [2/2]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
bool SdFileSystem< SdDriverClass >::begin ()
-
-inline
-
-

Initialize file system.

Returns
true for success else false.
- -
-
- -

◆ blocksPerCluster()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::blocksPerCluster () const
-
-inlineinherited
-
-
Returns
The volume's cluster size in blocks.
- -
-
- -

◆ blocksPerFat()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::blocksPerFat () const
-
-inlineinherited
-
-
Returns
The number of blocks in one FAT.
- -
-
- -

◆ cacheClear()

- -
-
- - - - - -
- - - - - - - -
cache_t* FatVolume::cacheClear ()
-
-inlineinherited
-
-

Clear the cache and returns a pointer to the cache. Not for normal apps.

Returns
A pointer to the cache buffer or zero if an error occurs.
- -
-
- -

◆ card()

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
SdDriverClass* SdFileSystem< SdDriverClass >::card ()
-
-inline
-
-
Returns
Pointer to SD card object
- -
-
- -

◆ cardErrorCode()

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
uint8_t SdFileSystem< SdDriverClass >::cardErrorCode ()
-
-inline
-
-
Returns
The card error code
- -
-
- -

◆ cardErrorData()

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
uint32_t SdFileSystem< SdDriverClass >::cardErrorData ()
-
-inline
-
-
Returns
the card error data
- -
-
- -

◆ chdir() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::chdir (bool set_cwd = false)
-
-inlineinherited
-
-

Change a volume's working directory to root

-

Changes the volume's working directory to the SD's root directory. Optionally set the current working directory to the volume's working directory.

-
Parameters
- - -
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chdir() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::chdir (const char * path,
bool set_cwd = false 
)
-
-inlineinherited
-
-

Change a volume's working directory

-

Changes the volume working directory to the path subdirectory. Optionally set the current working directory to the volume's working directory.

-

Example: If the volume's working directory is "/DIR", chdir("SUB") will change the volume's working directory from "/DIR" to "/DIR/SUB".

-

If path is "/", the volume's working directory will be changed to the root directory

-
Parameters
- - - -
[in]pathThe name of the subdirectory.
[in]set_cwdSet the current working directory to this volume's working directory if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ chvol()

- -
-
- - - - - -
- - - - - - - -
void FatFileSystem::chvol ()
-
-inlineinherited
-
-

Set the current working directory to a volume's working directory.

-

This is useful with multiple SD cards.

-

The current working directory is changed to this volume's working directory.

-

This is like the Windows/DOS <drive letter>: command.

- -
-
- -

◆ clusterCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::clusterCount () const
-
-inlineinherited
-
-
Returns
The total number of clusters in the volume.
- -
-
- -

◆ clusterSizeShift()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::clusterSizeShift () const
-
-inlineinherited
-
-
Returns
The shift count required to multiply by blocksPerCluster.
- -
-
- -

◆ dataStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::dataStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of file data.
- -
-
- -

◆ dbgFat()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int8_t FatVolume::dbgFat (uint32_t n,
uint32_t * v 
)
-
-inlineinherited
-
-

Debug access to FAT table

-
Parameters
- - - -
[in]ncluster number.
[out]vvalue of entry
-
-
-
Returns
-1 error, 0 EOC, else 1.
- -
-
- -

◆ errorHalt() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt ()
-
-inline
-
-

Print any SD error code to Serial and halt.

- -
-
- -

◆ errorHalt() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (Print * pr)
-
-inline
-
-

Print any SD error code and halt.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ errorHalt() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (char const * msg)
-
-inline
-
-

Print msg, any SD error code and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (Print * pr,
char const * msg 
)
-
-inline
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (const __FlashStringHelper * msg)
-
-inline
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorHalt() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print msg, any SD error code, and halt.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint ()
-
-inline
-
-

Print any SD error code to Serial

- -
-
- -

◆ errorPrint() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (Print * pr)
-
-inline
-
-

Print any SD error code.

Parameters
- - -
[in]prPrint device.
-
-
- -
-
- -

◆ errorPrint() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (const char * msg)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (Print * pr,
char const * msg 
)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (const __FlashStringHelper * msg)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ errorPrint() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::errorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print msg, any SD error code.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ exists()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::exists (const char * path)
-
-inlineinherited
-
-

Test for the existence of a file.

-
Parameters
- - -
[in]pathPath of the file to be tested for.
-
-
-
Returns
true if the file exists else false.
- -
-
- -

◆ fatCount()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatCount ()
-
-inlineinherited
-
-
Returns
The number of File Allocation Tables.
- -
-
- -

◆ fatStartBlock()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::fatStartBlock () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the first FAT.
- -
-
- -

◆ fatType()

- -
-
- - - - - -
- - - - - - - -
uint8_t FatVolume::fatType () const
-
-inlineinherited
-
-
Returns
The FAT type of the volume. Values are 12, 16 or 32.
- -
-
- -

◆ freeClusterCount()

- -
-
- - - - - -
- - - - - - - -
int32_t FatVolume::freeClusterCount ()
-
-inherited
-
-

Volume free space in clusters.

-
Returns
Count of free clusters for success or -1 if an error occurs.
- -
-
- -

◆ init() [1/2]

- -
-
- - - - - -
- - - - - - - -
bool FatVolume::init ()
-
-inlineinherited
-
-

Initialize a FAT volume. Try partition one first then try super floppy format.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ init() [2/2]

- -
-
- - - - - -
- - - - - - - - -
bool FatVolume::init (uint8_t part)
-
-inherited
-
-

Initialize a FAT volume.

-
Parameters
- - -
[in]partThe partition to be used. Legal values for part are 1-4 to use the corresponding partition on a device formatted with a MBR, Master Boot Record, or zero if the device is formatted as a super floppy with the FAT boot sector in block zero.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ initErrorHalt() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt ()
-
-inline
-
-

Print any SD error code and halt.

- -
-
- -

◆ initErrorHalt() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (Print * pr)
-
-inline
-
-

Print error details and halt after begin fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorHalt() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (char const * msg)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (Print * pr,
char const * msg 
)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (const __FlashStringHelper * msg)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorHalt() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorHalt (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print message, error details, and halt after begin() fails.

Parameters
- - - -
[in]prPrint device for message.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [1/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint ()
-
-inline
-
-

Print error details after begin() fails.

- -
-
- -

◆ initErrorPrint() [2/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (Print * pr)
-
-inline
-
-

Print error details after begin() fails.

-
Parameters
- - -
[in]prPrint destination.
-
-
- -
-
- -

◆ initErrorPrint() [3/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (char const * msg)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [4/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (Print * pr,
char const * msg 
)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [5/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (const __FlashStringHelper * msg)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - -
[in]msgMessage to print.
-
-
- -
-
- -

◆ initErrorPrint() [6/6]

- -
-
-
-template<class SdDriverClass>
- - - - - -
- - - - - - - - - - - - - - - - - - -
void SdFileSystem< SdDriverClass >::initErrorPrint (Print * pr,
const __FlashStringHelper * msg 
)
-
-inline
-
-

Print message and error details and halt after begin() fails.

-
Parameters
- - - -
[in]prPrint destination.
[in]msgMessage to print.
-
-
- -
-
- -

◆ ls() [1/4]

- -
-
- - - - - -
- - - - - - - - -
void FatFileSystem::ls (uint8_t flags = 0)
-
-inlineinherited
-
-

List the directory contents of the volume working directory to Serial.

-
Parameters
- - -
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (const char * path,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of a directory to Serial.

-
Parameters
- - - -
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
uint8_t flags = 0 
)
-
-inlineinherited
-
-

List the directory contents of the volume working directory.

-
Parameters
- - - -
[in]prPrint stream for list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ ls() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void FatFileSystem::ls (print_tpr,
const char * path,
uint8_t flags 
)
-
-inlineinherited
-
-

List the directory contents of a directory.

-
Parameters
- - - - -
[in]prPrint stream for list.
[in]pathdirectory to list.
[in]flagsThe inclusive OR of
-
-
-

LS_DATE - Print file modification date

-

LS_SIZE - Print file size.

-

LS_R - Recursive list of subdirectories.

- -
-
- -

◆ mkdir()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::mkdir (const char * path,
bool pFlag = true 
)
-
-inlineinherited
-
-

Make a subdirectory in the volume working directory.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
[in]pFlagCreate missing parent directories if true.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ open() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const char * path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ open() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
File FatFileSystem::open (const String & path,
oflag_t oflag = FILE_READ 
)
-
-inlineinherited
-
-

open a file

-
Parameters
- - - -
[in]pathlocation of file to be opened.
[in]oflagopen flags.
-
-
-
Returns
a File object.
- -
-
- -

◆ remove()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::remove (const char * path)
-
-inlineinherited
-
-

Remove a file from the volume working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rename()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::rename (const char * oldPath,
const char * newPath 
)
-
-inlineinherited
-
-

Rename a file or subdirectory.

-
Parameters
- - - -
[in]oldPathPath name to the file or subdirectory to be renamed.
[in]newPathNew path name of the file or subdirectory.
-
-
-

The newPath object must not exist before the rename call.

-

The file to be renamed must not be open. The directory entry may be moved and file system corruption could occur if the file is accessed by a file object that was opened before the rename() call.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rmdir()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::rmdir (const char * path)
-
-inlineinherited
-
-

Remove a subdirectory from the volume's working directory.

-
Parameters
- - -
[in]pathA path with a valid 8.3 DOS name for the subdirectory.
-
-
-

The subdirectory file will be removed only if it is empty.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ rootDirEntryCount()

- -
-
- - - - - -
- - - - - - - -
uint16_t FatVolume::rootDirEntryCount () const
-
-inlineinherited
-
-
Returns
The number of entries in the root directory for FAT16 volumes.
- -
-
- -

◆ rootDirStart()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::rootDirStart () const
-
-inlineinherited
-
-
Returns
The logical block number for the start of the root directory on FAT16 volumes or the first cluster number on FAT32 volumes.
- -
-
- -

◆ truncate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool FatFileSystem::truncate (const char * path,
uint32_t length 
)
-
-inlineinherited
-
-

Truncate a file to a specified length. The current file position will be maintained if it is less than or equal to length otherwise it will be set to end of file.

-
Parameters
- - - -
[in]pathA path with a valid 8.3 DOS name for the file.
[in]lengthThe desired length for the file.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ vol()

- -
-
- - - - - -
- - - - - - - -
FatVolume* FatFileSystem::vol ()
-
-inlineinherited
-
-
Returns
a pointer to the FatVolume object.
- -
-
- -

◆ volumeBlockCount()

- -
-
- - - - - -
- - - - - - - -
uint32_t FatVolume::volumeBlockCount () const
-
-inlineinherited
-
-
Returns
The number of blocks in the volume
- -
-
- -

◆ vwd()

- -
-
- - - - - -
- - - - - - - -
FatFile* FatFileSystem::vwd ()
-
-inlineinherited
-
-
Returns
a pointer to the volume working directory.
- -
-
- -

◆ wipe()

- -
-
- - - - - -
- - - - - - - - -
bool FatFileSystem::wipe (print_tpr = 0)
-
-inlineinherited
-
-

Wipe all data from the volume. You must reinitialize the volume before accessing it again.

Parameters
- - -
[in]prprint stream for status dots.
-
-
-
Returns
true for success else false.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdFat.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system__coll__graph.png deleted file mode 100644 index 1eb49f11..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system__inherit__graph.png deleted file mode 100644 index 1eb49f11..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_file_system__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card-members.html deleted file mode 100644 index e0d4895b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdSpiCard Member List
-
-
- -

This is the complete list of members for SdSpiCard, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)SdSpiCard
cardSize()SdSpiCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdSpiCard
eraseSingleBlockEnable()SdSpiCard
error(uint8_t code)SdSpiCardinline
errorCode() constSdSpiCardinline
errorData() constSdSpiCardinline
isBusy()SdSpiCard
readBlock(uint32_t lba, uint8_t *dst)SdSpiCard
readBlocks(uint32_t lba, uint8_t *dst, size_t nb)SdSpiCard
readCID(cid_t *cid)SdSpiCardinline
readCSD(csd_t *csd)SdSpiCardinline
readData(uint8_t *dst)SdSpiCard
readOCR(uint32_t *ocr)SdSpiCard
readStart(uint32_t blockNumber)SdSpiCard
readStatus(uint8_t *status)SdSpiCard
readStop()SdSpiCard
SdSpiCard()SdSpiCardinline
spiStart()SdSpiCard
spiStop()SdSpiCard
syncBlocks()SdSpiCardinline
type() constSdSpiCardinline
writeBlock(uint32_t lba, const uint8_t *src)SdSpiCard
writeBlocks(uint32_t lba, const uint8_t *src, size_t nb)SdSpiCard
writeData(const uint8_t *src)SdSpiCard
writeStart(uint32_t blockNumber)SdSpiCard
writeStart(uint32_t blockNumber, uint32_t eraseCount)SdSpiCard
writeStop()SdSpiCard
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card.html deleted file mode 100644 index 69203acf..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card.html +++ /dev/null @@ -1,959 +0,0 @@ - - - - - - - -SdFat: SdSpiCard Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdSpiCard Class Reference
-
-
- -

Raw access to SD and SDHC flash memory cards via SPI protocol. - More...

- -

#include <SdSpiCard.h>

-
-Inheritance diagram for SdSpiCard:
-
-
Inheritance graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
bool eraseSingleBlockEnable ()
 
void error (uint8_t code)
 
int errorCode () const
 
int errorData () const
 
bool isBusy ()
 
bool readBlock (uint32_t lba, uint8_t *dst)
 
bool readBlocks (uint32_t lba, uint8_t *dst, size_t nb)
 
bool readCID (cid_t *cid)
 
bool readCSD (csd_t *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t blockNumber)
 
bool readStatus (uint8_t *status)
 
bool readStop ()
 
 SdSpiCard ()
 
void spiStart ()
 
void spiStop ()
 
bool syncBlocks ()
 
int type () const
 
bool writeBlock (uint32_t lba, const uint8_t *src)
 
bool writeBlocks (uint32_t lba, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t blockNumber)
 
bool writeStart (uint32_t blockNumber, uint32_t eraseCount)
 
bool writeStop ()
 
-

Detailed Description

-

Raw access to SD and SDHC flash memory cards via SPI protocol.

-

Constructor & Destructor Documentation

- -

◆ SdSpiCard()

- -
-
- - - - - -
- - - - - - - -
SdSpiCard::SdSpiCard ()
-
-inline
-
-

Construct an instance of SdSpiCard.

- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::begin (SdSpiDriver * spi,
uint8_t csPin,
SPISettings spiSettings 
)
-
-

Initialize the SD card.

Parameters
- - - - -
[in]spiSPI driver for card.
[in]csPincard chip select pin.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ cardSize()

- -
-
- - - - - - - -
uint32_t SdSpiCard::cardSize ()
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ eraseSingleBlockEnable()

- -
-
- - - - - - - -
bool SdSpiCard::eraseSingleBlockEnable ()
-
-

Determine if card supports single block erase.

-
Returns
true is returned if single block erase is supported. false is returned if single block erase is not supported.
- -
-
- -

◆ error()

- -
-
- - - - - -
- - - - - - - - -
void SdSpiCard::error (uint8_t code)
-
-inline
-
-

Set SD error code.

Parameters
- - -
[in]codevalue for error code.
-
-
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorCode () const
-
-inline
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorData () const
-
-inline
-
-
Returns
error data for last error.
- -
-
- -

◆ isBusy()

- -
-
- - - - - - - -
bool SdSpiCard::isBusy ()
-
-

Check for busy. MISO low indicates the card is busy.

-
Returns
true if busy else false.
- -
-
- -

◆ readBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlock (uint32_t lba,
uint8_t * dst 
)
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::readBlocks (uint32_t lba,
uint8_t * dst,
size_t nb 
)
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCID (cid_t * cid)
-
-inline
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCSD (csd_t * csd)
-
-inline
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - - - - -
bool SdSpiCard::readData (uint8_t * dst)
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - - - - -
bool SdSpiCard::readOCR (uint32_t * ocr)
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart()

- -
-
- - - - - - - - -
bool SdSpiCard::readStart (uint32_t blockNumber)
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStatus()

- -
-
- - - - - - - - -
bool SdSpiCard::readStatus (uint8_t * status)
-
-

Return the 64 byte card status

Parameters
- - -
[out]statuslocation for 64 status bytes.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - - - -
bool SdSpiCard::readStop ()
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ spiStart()

- -
-
- - - - - - - -
void SdSpiCard::spiStart ()
-
-

Set CS low and activate the card.

- -
-
- -

◆ spiStop()

- -
-
- - - - - - - -
void SdSpiCard::spiStop ()
-
-

Set CS high and deactivate the card.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::syncBlocks ()
-
-inline
-
-
Returns
success if sync successful. Not for user apps.
- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::type () const
-
-inline
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlock (uint32_t lba,
const uint8_t * src 
)
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeBlocks (uint32_t lba,
const uint8_t * src,
size_t nb 
)
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeData()

- -
-
- - - - - - - - -
bool SdSpiCard::writeData (const uint8_t * src)
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber)
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber,
uint32_t eraseCount 
)
-
-

Start a write multiple blocks sequence with pre-erase.

-
Parameters
- - - -
[in]blockNumberAddress of first block in sequence.
[in]eraseCountThe number of blocks to be pre-erased.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - - - -
bool SdSpiCard::writeStop ()
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h
  • -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card__inherit__graph.png deleted file mode 100644 index 4f96ac4c..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x-members.html deleted file mode 100644 index 2b5fc059..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdSpiCardEX Member List
-
-
- -

This is the complete list of members for SdSpiCardEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
begin(SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)SdSpiCardEXinline
cardSize()SdSpiCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdSpiCard
eraseSingleBlockEnable()SdSpiCard
error(uint8_t code)SdSpiCardinline
errorCode() constSdSpiCardinline
errorData() constSdSpiCardinline
isBusy()SdSpiCard
readBlock(uint32_t block, uint8_t *dst)SdSpiCardEX
readBlocks(uint32_t block, uint8_t *dst, size_t nb)SdSpiCardEX
readCID(cid_t *cid)SdSpiCardinline
readCSD(csd_t *csd)SdSpiCardinline
readData(uint8_t *dst)SdSpiCard
readOCR(uint32_t *ocr)SdSpiCard
readStart(uint32_t blockNumber)SdSpiCard
readStatus(uint8_t *status)SdSpiCard
readStop()SdSpiCard
SdSpiCard()SdSpiCardinline
spiStart()SdSpiCard
spiStop()SdSpiCard
syncBlocks()SdSpiCardEX
type() constSdSpiCardinline
writeBlock(uint32_t block, const uint8_t *src)SdSpiCardEX
writeBlocks(uint32_t block, const uint8_t *src, size_t nb)SdSpiCardEX
writeData(const uint8_t *src)SdSpiCard
writeStart(uint32_t blockNumber)SdSpiCard
writeStart(uint32_t blockNumber, uint32_t eraseCount)SdSpiCard
writeStop()SdSpiCard
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x.html deleted file mode 100644 index 5d52336a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x.html +++ /dev/null @@ -1,1063 +0,0 @@ - - - - - - - -SdFat: SdSpiCardEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdSpiCardEX Class Reference
-
-
- -

Extended SD I/O block driver. - More...

- -

#include <SdSpiCard.h>

-
-Inheritance diagram for SdSpiCardEX:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for SdSpiCardEX:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin (SdSpiDriver *spi, uint8_t csPin, SPISettings spiSettings)
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
bool eraseSingleBlockEnable ()
 
void error (uint8_t code)
 
int errorCode () const
 
int errorData () const
 
bool isBusy ()
 
bool readBlock (uint32_t block, uint8_t *dst)
 
bool readBlocks (uint32_t block, uint8_t *dst, size_t nb)
 
bool readCID (cid_t *cid)
 
bool readCSD (csd_t *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t blockNumber)
 
bool readStatus (uint8_t *status)
 
bool readStop ()
 
void spiStart ()
 
void spiStop ()
 
bool syncBlocks ()
 
int type () const
 
bool writeBlock (uint32_t block, const uint8_t *src)
 
bool writeBlocks (uint32_t block, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t blockNumber)
 
bool writeStart (uint32_t blockNumber, uint32_t eraseCount)
 
bool writeStop ()
 
-

Detailed Description

-

Extended SD I/O block driver.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::begin (SdSpiDriver * spi,
uint8_t csPin,
SPISettings spiSettings 
)
-
-inline
-
-

Initialize the SD card

-
Parameters
- - - - -
[in]spiSPI driver.
[in]csPinCard chip select pin number.
[in]spiSettingsSPI speed, mode, and bit order.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ cardSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdSpiCard::cardSize ()
-
-inherited
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-inherited
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ eraseSingleBlockEnable()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::eraseSingleBlockEnable ()
-
-inherited
-
-

Determine if card supports single block erase.

-
Returns
true is returned if single block erase is supported. false is returned if single block erase is not supported.
- -
-
- -

◆ error()

- -
-
- - - - - -
- - - - - - - - -
void SdSpiCard::error (uint8_t code)
-
-inlineinherited
-
-

Set SD error code.

Parameters
- - -
[in]codevalue for error code.
-
-
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorCode () const
-
-inlineinherited
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::errorData () const
-
-inlineinherited
-
-
Returns
error data for last error.
- -
-
- -

◆ isBusy()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::isBusy ()
-
-inherited
-
-

Check for busy. MISO low indicates the card is busy.

-
Returns
true if busy else false.
- -
-
- -

◆ readBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::readBlock (uint32_t block,
uint8_t * dst 
)
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]blockLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::readBlocks (uint32_t block,
uint8_t * dst,
size_t nb 
)
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCID (cid_t * cid)
-
-inlineinherited
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readCSD (csd_t * csd)
-
-inlineinherited
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readData (uint8_t * dst)
-
-inherited
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readOCR (uint32_t * ocr)
-
-inherited
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStart (uint32_t blockNumber)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStatus()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::readStatus (uint8_t * status)
-
-inherited
-
-

Return the 64 byte card status

Parameters
- - -
[out]statuslocation for 64 status bytes.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::readStop ()
-
-inherited
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ spiStart()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStart ()
-
-inherited
-
-

Set CS low and activate the card.

- -
-
- -

◆ spiStop()

- -
-
- - - - - -
- - - - - - - -
void SdSpiCard::spiStop ()
-
-inherited
-
-

Set CS high and deactivate the card.

- -
-
- -

◆ syncBlocks()

- -
-
- - - - - - - -
bool SdSpiCardEX::syncBlocks ()
-
-

End multi-block transfer and go to idle state.

Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
int SdSpiCard::type () const
-
-inlineinherited
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::writeBlock (uint32_t block,
const uint8_t * src 
)
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]blockLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeBlocks()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdSpiCardEX::writeBlocks (uint32_t block,
const uint8_t * src,
size_t nb 
)
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeData()

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeData (const uint8_t * src)
-
-inherited
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]blockNumberAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdSpiCard::writeStart (uint32_t blockNumber,
uint32_t eraseCount 
)
-
-inherited
-
-

Start a write multiple blocks sequence with pre-erase.

-
Parameters
- - - -
[in]blockNumberAddress of first block in sequence.
[in]eraseCountThe number of blocks to be pre-erased.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - -
- - - - - - - -
bool SdSpiCard::writeStop ()
-
-inherited
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCard.h
  • -
  • Arduino/libraries/SdFat/src/SdCard/SdSpiCardEX.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x__coll__graph.png deleted file mode 100644 index 93643bbb..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x__inherit__graph.png deleted file mode 100644 index 93643bbb..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sd_spi_card_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card-members.html deleted file mode 100644 index c564a7ce..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdioCard Member List
-
-
- -

This is the complete list of members for SdioCard, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdioCard
cardSize()SdioCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdioCard
errorCode()SdioCard
errorData()SdioCard
errorLine()SdioCard
isBusy()SdioCard
kHzSdClk()SdioCard
readBlock(uint32_t lba, uint8_t *dst)SdioCardvirtual
readBlocks(uint32_t lba, uint8_t *dst, size_t nb)SdioCardvirtual
readCID(void *cid)SdioCard
readCSD(void *csd)SdioCard
readData(uint8_t *dst)SdioCard
readOCR(uint32_t *ocr)SdioCard
readStart(uint32_t lba)SdioCard
readStart(uint32_t lba, uint32_t count)SdioCard
readStop()SdioCard
syncBlocks()SdioCardvirtual
type()SdioCard
writeBlock(uint32_t lba, const uint8_t *src)SdioCardvirtual
writeBlocks(uint32_t lba, const uint8_t *src, size_t nb)SdioCardvirtual
writeData(const uint8_t *src)SdioCard
writeStart(uint32_t lba)SdioCard
writeStart(uint32_t lba, uint32_t count)SdioCard
writeStop()SdioCard
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card.html deleted file mode 100644 index f90cf807..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card.html +++ /dev/null @@ -1,887 +0,0 @@ - - - - - - - -SdFat: SdioCard Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdioCard Class Reference
-
-
- -

Raw SDIO access to SD and SDHC flash memory cards. - More...

- -

#include <SdioCard.h>

-
-Inheritance diagram for SdioCard:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdioCard:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin ()
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
uint8_t errorCode ()
 
uint32_t errorData ()
 
uint32_t errorLine ()
 
bool isBusy ()
 
uint32_t kHzSdClk ()
 
bool readBlock (uint32_t lba, uint8_t *dst)
 
bool readBlocks (uint32_t lba, uint8_t *dst, size_t nb)
 
bool readCID (void *cid)
 
bool readCSD (void *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t lba)
 
bool readStart (uint32_t lba, uint32_t count)
 
bool readStop ()
 
bool syncBlocks ()
 
uint8_t type ()
 
bool writeBlock (uint32_t lba, const uint8_t *src)
 
bool writeBlocks (uint32_t lba, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t lba)
 
bool writeStart (uint32_t lba, uint32_t count)
 
bool writeStop ()
 
-

Detailed Description

-

Raw SDIO access to SD and SDHC flash memory cards.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - -
bool SdioCard::begin ()
-
-

Initialize the SD card.

Returns
true for success else false.
- -
-
- -

◆ cardSize()

- -
-
- - - - - - - -
uint32_t SdioCard::cardSize ()
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdioCard::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ errorCode()

- -
-
- - - - - - - -
uint8_t SdioCard::errorCode ()
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - - - -
uint32_t SdioCard::errorData ()
-
-
Returns
error data for last error.
- -
-
- -

◆ errorLine()

- -
-
- - - - - - - -
uint32_t SdioCard::errorLine ()
-
-
Returns
error line for last error. Tmp function for debug.
- -
-
- -

◆ isBusy()

- -
-
- - - - - - - -
bool SdioCard::isBusy ()
-
-

Check for busy with CMD13.

-
Returns
true if busy else false.
- -
-
- -

◆ kHzSdClk()

- -
-
- - - - - - - -
uint32_t SdioCard::kHzSdClk ()
-
-
Returns
the SD clock frequency in kHz.
- -
-
- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::readBlock (uint32_t lba,
uint8_t * dst 
)
-
-virtual
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCard::readBlocks (uint32_t lba,
uint8_t * dst,
size_t nb 
)
-
-virtual
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ readCID()

- -
-
- - - - - - - - -
bool SdioCard::readCID (void * cid)
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - - - - -
bool SdioCard::readCSD (void * csd)
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - - - - -
bool SdioCard::readData (uint8_t * dst)
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - - - - -
bool SdioCard::readOCR (uint32_t * ocr)
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart() [1/2]

- -
-
- - - - - - - - -
bool SdioCard::readStart (uint32_t lba)
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStart() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdioCard::readStart (uint32_t lba,
uint32_t count 
)
-
-

Start a read multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - - - -
bool SdioCard::readStop ()
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::syncBlocks ()
-
-virtual
-
-
Returns
success if sync successful. Not for user apps.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ type()

- -
-
- - - - - - - -
uint8_t SdioCard::type ()
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::writeBlock (uint32_t lba,
const uint8_t * src 
)
-
-virtual
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]lbaLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCard::writeBlocks (uint32_t lba,
const uint8_t * src,
size_t nb 
)
-
-virtual
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]lbaLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Implements BaseBlockDriver.

- -

Reimplemented in SdioCardEX.

- -
-
- -

◆ writeData()

- -
-
- - - - - - - - -
bool SdioCard::writeData (const uint8_t * src)
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - - - - -
bool SdioCard::writeStart (uint32_t lba)
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
bool SdioCard::writeStart (uint32_t lba,
uint32_t count 
)
-
-

Start a write multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - - - -
bool SdioCard::writeStop ()
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdioCard.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card__coll__graph.png deleted file mode 100644 index a82e5bc5..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card__inherit__graph.png deleted file mode 100644 index 5b024ad6..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x-members.html deleted file mode 100644 index bd8fddfc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SdioCardEX Member List
-
-
- -

This is the complete list of members for SdioCardEX, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
begin()SdioCardEXinline
cardSize()SdioCard
erase(uint32_t firstBlock, uint32_t lastBlock)SdioCardEXinline
errorCode()SdioCard
errorData()SdioCard
errorLine()SdioCard
isBusy()SdioCard
kHzSdClk()SdioCard
readBlock(uint32_t block, uint8_t *dst)SdioCardEXvirtual
readBlocks(uint32_t block, uint8_t *dst, size_t nb)SdioCardEXvirtual
readCID(void *cid)SdioCard
readCSD(void *csd)SdioCard
readData(uint8_t *dst)SdioCard
readOCR(uint32_t *ocr)SdioCard
readStart(uint32_t lba)SdioCard
readStart(uint32_t lba, uint32_t count)SdioCard
readStop()SdioCard
syncBlocks()SdioCardEXvirtual
type()SdioCard
writeBlock(uint32_t block, const uint8_t *src)SdioCardEXvirtual
writeBlocks(uint32_t block, const uint8_t *src, size_t nb)SdioCardEXvirtual
writeData(const uint8_t *src)SdioCard
writeStart(uint32_t lba)SdioCard
writeStart(uint32_t lba, uint32_t count)SdioCard
writeStop()SdioCard
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x.html deleted file mode 100644 index b8a10353..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x.html +++ /dev/null @@ -1,1035 +0,0 @@ - - - - - - - -SdFat: SdioCardEX Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SdioCardEX Class Reference
-
-
- -

Extended SD I/O block driver. - More...

- -

#include <SdioCard.h>

-
-Inheritance diagram for SdioCardEX:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for SdioCardEX:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool begin ()
 
uint32_t cardSize ()
 
bool erase (uint32_t firstBlock, uint32_t lastBlock)
 
uint8_t errorCode ()
 
uint32_t errorData ()
 
uint32_t errorLine ()
 
bool isBusy ()
 
uint32_t kHzSdClk ()
 
bool readBlock (uint32_t block, uint8_t *dst)
 
bool readBlocks (uint32_t block, uint8_t *dst, size_t nb)
 
bool readCID (void *cid)
 
bool readCSD (void *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readStart (uint32_t lba)
 
bool readStart (uint32_t lba, uint32_t count)
 
bool readStop ()
 
bool syncBlocks ()
 
uint8_t type ()
 
bool writeBlock (uint32_t block, const uint8_t *src)
 
bool writeBlocks (uint32_t block, const uint8_t *src, size_t nb)
 
bool writeData (const uint8_t *src)
 
bool writeStart (uint32_t lba)
 
bool writeStart (uint32_t lba, uint32_t count)
 
bool writeStop ()
 
-

Detailed Description

-

Extended SD I/O block driver.

-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - -
- - - - - - - -
bool SdioCardEX::begin ()
-
-inline
-
-

Initialize the SD card

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ cardSize()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::cardSize ()
-
-inherited
-
-

Determine the size of an SD flash memory card.

-
Returns
The number of 512 byte data blocks in the card or zero if an error occurs.
- -
-
- -

◆ erase()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCardEX::erase (uint32_t firstBlock,
uint32_t lastBlock 
)
-
-inline
-
-

Erase a range of blocks.

-
Parameters
- - - -
[in]firstBlockThe address of the first block in the range.
[in]lastBlockThe address of the last block in the range.
-
-
-
Note
This function requests the SD card to do a flash erase for a range of blocks. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single block erase.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ errorCode()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdioCard::errorCode ()
-
-inherited
-
-
Returns
code for the last error. See SdInfo.h for a list of error codes.
- -
-
- -

◆ errorData()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::errorData ()
-
-inherited
-
-
Returns
error data for last error.
- -
-
- -

◆ errorLine()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::errorLine ()
-
-inherited
-
-
Returns
error line for last error. Tmp function for debug.
- -
-
- -

◆ isBusy()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::isBusy ()
-
-inherited
-
-

Check for busy with CMD13.

-
Returns
true if busy else false.
- -
-
- -

◆ kHzSdClk()

- -
-
- - - - - -
- - - - - - - -
uint32_t SdioCard::kHzSdClk ()
-
-inherited
-
-
Returns
the SD clock frequency in kHz.
- -
-
- -

◆ readBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCardEX::readBlock (uint32_t block,
uint8_t * dst 
)
-
-virtual
-
-

Read a 512 byte block from an SD card.

-
Parameters
- - - -
[in]blockLogical block to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ readBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCardEX::readBlocks (uint32_t block,
uint8_t * dst,
size_t nb 
)
-
-virtual
-
-

Read multiple 512 byte blocks from an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be read.
[in]nbNumber of blocks to be read.
[out]dstPointer to the location that will receive the data.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ readCID()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readCID (void * cid)
-
-inherited
-
-

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

-
Parameters
- - -
[out]cidpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readCSD()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readCSD (void * csd)
-
-inherited
-
-

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

-
Parameters
- - -
[out]csdpointer to area for returned data.
-
-
-
Returns
true for success or false for failure.
- -
-
- -

◆ readData()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readData (uint8_t * dst)
-
-inherited
-
-

Read one data block in a multiple block read sequence

-
Parameters
- - -
[out]dstPointer to the location for the data to be read.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readOCR()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readOCR (uint32_t * ocr)
-
-inherited
-
-

Read OCR register.

-
Parameters
- - -
[out]ocrValue of OCR register.
-
-
-
Returns
true for success else false.
- -
-
- -

◆ readStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::readStart (uint32_t lba)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::readStart (uint32_t lba,
uint32_t count 
)
-
-inherited
-
-

Start a read multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with readData() and readStop() for optimized multiple block reads. SPI chipSelect must be low for the entire sequence.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ readStop()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::readStop ()
-
-inherited
-
-

End a read multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ syncBlocks()

- -
-
- - - - - -
- - - - - - - -
bool SdioCardEX::syncBlocks ()
-
-virtual
-
-

End multi-block transfer and go to idle state.

Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ type()

- -
-
- - - - - -
- - - - - - - -
uint8_t SdioCard::type ()
-
-inherited
-
-

Return the card type: SD V1, SD V2 or SDHC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC.
- -
-
- -

◆ writeBlock()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCardEX::writeBlock (uint32_t block,
const uint8_t * src 
)
-
-virtual
-
-

Writes a 512 byte block to an SD card.

-
Parameters
- - - -
[in]blockLogical block to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ writeBlocks()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool SdioCardEX::writeBlocks (uint32_t block,
const uint8_t * src,
size_t nb 
)
-
-virtual
-
-

Write multiple 512 byte blocks to an SD card.

-
Parameters
- - - - -
[in]blockLogical block to be written.
[in]nbNumber of blocks to be written.
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -

Reimplemented from SdioCard.

- -
-
- -

◆ writeData()

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::writeData (const uint8_t * src)
-
-inherited
-
-

Write one data block in a multiple block write sequence.

Parameters
- - -
[in]srcPointer to the location of the data to be written.
-
-
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [1/2]

- -
-
- - - - - -
- - - - - - - - -
bool SdioCard::writeStart (uint32_t lba)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - -
[in]lbaAddress of first block in sequence.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStart() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool SdioCard::writeStart (uint32_t lba,
uint32_t count 
)
-
-inherited
-
-

Start a write multiple blocks sequence.

-
Parameters
- - - -
[in]lbaAddress of first block in sequence.
[in]countMaximum block count.
-
-
-
Note
This function is used with writeData() and writeStop() for optimized multiple block writes.
-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
- -

◆ writeStop()

- -
-
- - - - - -
- - - - - - - -
bool SdioCard::writeStop ()
-
-inherited
-
-

End a write multiple blocks sequence.

-
Returns
The value true is returned for success and the value false is returned for failure.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/SdCard/SdioCard.h
  • -
  • Arduino/libraries/SdFat/src/SdCard/SdioCardEX.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x__coll__graph.png deleted file mode 100644 index 8d0fd989..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x__inherit__graph.png deleted file mode 100644 index 8d0fd989..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sdio_card_e_x__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream-members.html deleted file mode 100644 index 6fb16aab..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream-members.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
StdioStream Member List
-
-
- -

This is the complete list of members for StdioStream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
available()FatFileinlineprivate
clearerr()StdioStreaminline
clearError()FatFileinlineprivate
clearWriteError()FatFileinlineprivate
close()FatFileprivate
contiguousRange(uint32_t *bgnBlock, uint32_t *endBlock)FatFileprivate
createContiguous(FatFile *dirFile, const char *path, uint32_t size)FatFileprivate
createContiguous(const char *path, uint32_t size)FatFileinlineprivate
curCluster() constFatFileinlineprivate
curPosition() constFatFileinlineprivate
cwd()FatFileinlineprivatestatic
dateTimeCallback(void(*dateTime)(uint16_t *date, uint16_t *time))FatFileinlineprivatestatic
dateTimeCallbackCancel()FatFileinlineprivatestatic
dirEntry(dir_t *dir)FatFileprivate
dirIndex()FatFileinlineprivate
dirName(const dir_t *dir, char *name)FatFileprivatestatic
dirSize()FatFileprivate
dmpFile(print_t *pr, uint32_t pos, size_t n)FatFileprivate
exists(const char *path)FatFileinlineprivate
FatFile()FatFileinlineprivate
FatFile(const char *path, oflag_t oflag)FatFileinlineprivate
fclose()StdioStream
feof()StdioStreaminline
ferror()StdioStreaminline
fflush()StdioStream
fgetc()StdioStreaminline
fgets(char *str, size_t num, size_t *len=0)StdioStream
FatFile::fgets(char *str, int16_t num, char *delim=0)FatFileprivate
fileAttr() constFatFileinlineprivate
fileSize() constFatFileinlineprivate
firstBlock()FatFileinlineprivate
firstCluster() constFatFileinlineprivate
fopen(const char *path, const char *mode)StdioStream
fputc(int c)StdioStreaminline
fputs(const char *str)StdioStream
fread(void *ptr, size_t size, size_t count)StdioStream
fseek(int32_t offset, int origin)StdioStream
ftell()StdioStream
fwrite(const void *ptr, size_t size, size_t count)StdioStream
getc()StdioStreaminline
getError()FatFileinlineprivate
getName(char *name, size_t size)FatFileprivate
getpos(FatPos_t *pos)FatFileprivate
getSFN(char *name)FatFileprivate
getWriteError()FatFileinlineprivate
isDir() constFatFileinlineprivate
isFile() constFatFileinlineprivate
isHidden() constFatFileinlineprivate
isLFN() constFatFileinlineprivate
isOpen() constFatFileinlineprivate
isReadOnly() constFatFileinlineprivate
isRoot() constFatFileinlineprivate
isRoot32() constFatFileinlineprivate
isRootFixed() constFatFileinlineprivate
isSubDir() constFatFileinlineprivate
isSystem() constFatFileinlineprivate
legal83Char(uint8_t c)FatFileinlineprivatestatic
ls(uint8_t flags=0)FatFileinlineprivate
ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)FatFileprivate
mkdir(FatFile *dir, const char *path, bool pFlag=true)FatFileprivate
open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
open(const char *path, oflag_t oflag=O_RDONLY)FatFileinlineprivate
openNext(FatFile *dirFile, oflag_t oflag=O_RDONLY)FatFileprivate
openRoot(FatVolume *vol)FatFileprivate
peek()FatFileprivate
print(char c)StdioStreaminline
print(const char *str)StdioStreaminline
print(const __FlashStringHelper *str)StdioStream
print(double val, uint8_t prec=2)StdioStreaminline
print(float val, uint8_t prec=2)StdioStreaminline
print(T val)StdioStreaminline
printCreateDateTime(print_t *pr)FatFileprivate
printDec(char n)StdioStreaminline
printDec(signed char n)StdioStream
printDec(unsigned char n)StdioStreaminline
printDec(int16_t n)StdioStream
printDec(uint16_t n)StdioStream
printDec(int32_t n)StdioStream
printDec(uint32_t n)StdioStream
printDec(double value, uint8_t prec)StdioStreaminline
printDec(float value, uint8_t prec)StdioStream
printFatDate(uint16_t fatDate)FatFileinlineprivatestatic
printFatDate(print_t *pr, uint16_t fatDate)FatFileprivatestatic
printFatTime(uint16_t fatTime)FatFileinlineprivatestatic
printFatTime(print_t *pr, uint16_t fatTime)FatFileprivatestatic
printField(double value, char term, uint8_t prec=2)StdioStreaminline
printField(float value, char term, uint8_t prec=2)StdioStreaminline
printField(T value, char term)StdioStreaminline
FatFile::printField(int16_t value, char term)FatFileprivate
FatFile::printField(uint16_t value, char term)FatFileprivate
FatFile::printField(int32_t value, char term)FatFileprivate
FatFile::printField(uint32_t value, char term)FatFileprivate
printFileSize(print_t *pr)FatFileprivate
printHex(uint32_t n)StdioStream
printHexln(uint32_t n)StdioStreaminline
println()StdioStreaminline
println(double val, uint8_t prec=2)StdioStreaminline
println(float val, uint8_t prec=2)StdioStreaminline
println(T val)StdioStreaminline
printModifyDateTime(print_t *pr)FatFileprivate
printName()FatFileinlineprivate
printName(print_t *pr)FatFileprivate
printSFN(print_t *pr)FatFileprivate
putc(int c)StdioStreaminline
putCRLF()StdioStreaminline
read()FatFileinlineprivate
read(void *buf, size_t nbyte)FatFileprivate
readDir(dir_t *dir)FatFileprivate
remove()FatFileprivate
remove(FatFile *dirFile, const char *path)FatFileprivatestatic
rename(FatFile *dirFile, const char *newPath)FatFileprivate
rewind()StdioStream
rmdir()FatFileprivate
rmRfStar()FatFileprivate
seekCur(int32_t offset)FatFileinlineprivate
seekEnd(int32_t offset=0)FatFileinlineprivate
seekSet(uint32_t pos)FatFileprivate
setCwd(FatFile *dir)FatFileinlineprivatestatic
setpos(FatPos_t *pos)FatFileprivate
StdioStream()StdioStreaminline
sync()FatFileprivate
timestamp(FatFile *file)FatFileprivate
timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)FatFileprivate
truncate(uint32_t length)FatFileprivate
ungetc(int c)StdioStream
volume() constFatFileinlineprivate
FatFile::write(const char *str)FatFileinlineprivate
FatFile::write(uint8_t b)FatFileinlineprivate
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream.html deleted file mode 100644 index 9748b2ef..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream.html +++ /dev/null @@ -1,1854 +0,0 @@ - - - - - - - -SdFat: StdioStream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

StdioStream implements a minimal stdio stream. - More...

- -

#include <StdioStream.h>

-
-Inheritance diagram for StdioStream:
-
-
Inheritance graph
- - - -
[legend]
-
-Collaboration diagram for StdioStream:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

void clearerr ()
 
int fclose ()
 
int feof ()
 
int ferror ()
 
int fflush ()
 
int fgetc ()
 
char * fgets (char *str, size_t num, size_t *len=0)
 
bool fopen (const char *path, const char *mode)
 
int fputc (int c)
 
int fputs (const char *str)
 
size_t fread (void *ptr, size_t size, size_t count)
 
int fseek (int32_t offset, int origin)
 
int32_t ftell ()
 
size_t fwrite (const void *ptr, size_t size, size_t count)
 
int getc ()
 
size_t print (char c)
 
size_t print (const char *str)
 
size_t print (const __FlashStringHelper *str)
 
size_t print (double val, uint8_t prec=2)
 
size_t print (float val, uint8_t prec=2)
 
template<typename T >
size_t print (T val)
 
int printDec (char n)
 
int printDec (signed char n)
 
int printDec (unsigned char n)
 
int printDec (int16_t n)
 
int printDec (uint16_t n)
 
int printDec (int32_t n)
 
int printDec (uint32_t n)
 
int printDec (double value, uint8_t prec)
 
int printDec (float value, uint8_t prec)
 
int printField (double value, char term, uint8_t prec=2)
 
int printField (float value, char term, uint8_t prec=2)
 
template<typename T >
int printField (T value, char term)
 
int printHex (uint32_t n)
 
int printHexln (uint32_t n)
 
size_t println ()
 
size_t println (double val, uint8_t prec=2)
 
size_t println (float val, uint8_t prec=2)
 
template<typename T >
size_t println (T val)
 
int putc (int c)
 
int putCRLF ()
 
bool rewind ()
 
 StdioStream ()
 
int ungetc (int c)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Private Member Functions

uint32_t available ()
 
void clearError ()
 
void clearWriteError ()
 
bool close ()
 
bool contiguousRange (uint32_t *bgnBlock, uint32_t *endBlock)
 
bool createContiguous (FatFile *dirFile, const char *path, uint32_t size)
 
bool createContiguous (const char *path, uint32_t size)
 
uint32_t curCluster () const
 
uint32_t curPosition () const
 
bool dirEntry (dir_t *dir)
 
uint16_t dirIndex ()
 
uint32_t dirSize ()
 
void dmpFile (print_t *pr, uint32_t pos, size_t n)
 
bool exists (const char *path)
 
int16_t fgets (char *str, int16_t num, char *delim=0)
 
uint8_t fileAttr () const
 
uint32_t fileSize () const
 
uint32_t firstBlock ()
 
uint32_t firstCluster () const
 
uint8_t getError ()
 
bool getName (char *name, size_t size)
 
void getpos (FatPos_t *pos)
 
bool getSFN (char *name)
 
bool getWriteError ()
 
bool isDir () const
 
bool isFile () const
 
bool isHidden () const
 
bool isLFN () const
 
bool isOpen () const
 
bool isReadOnly () const
 
bool isRoot () const
 
bool isRoot32 () const
 
bool isRootFixed () const
 
bool isSubDir () const
 
bool isSystem () const
 
void ls (uint8_t flags=0)
 
void ls (print_t *pr, uint8_t flags=0, uint8_t indent=0)
 
bool mkdir (FatFile *dir, const char *path, bool pFlag=true)
 
bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
bool open (const char *path, oflag_t oflag=O_RDONLY)
 
bool openNext (FatFile *dirFile, oflag_t oflag=O_RDONLY)
 
bool openRoot (FatVolume *vol)
 
int peek ()
 
bool printCreateDateTime (print_t *pr)
 
int printField (int16_t value, char term)
 
int printField (uint16_t value, char term)
 
int printField (int32_t value, char term)
 
int printField (uint32_t value, char term)
 
size_t printFileSize (print_t *pr)
 
bool printModifyDateTime (print_t *pr)
 
size_t printName ()
 
size_t printName (print_t *pr)
 
size_t printSFN (print_t *pr)
 
int read ()
 
int read (void *buf, size_t nbyte)
 
int8_t readDir (dir_t *dir)
 
bool remove ()
 
bool rename (FatFile *dirFile, const char *newPath)
 
bool rmdir ()
 
bool rmRfStar ()
 
bool seekCur (int32_t offset)
 
bool seekEnd (int32_t offset=0)
 
bool seekSet (uint32_t pos)
 
void setpos (FatPos_t *pos)
 
bool sync ()
 
bool timestamp (FatFile *file)
 
bool timestamp (uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
 
bool truncate (uint32_t length)
 
FatVolumevolume () const
 
int write (const char *str)
 
int write (uint8_t b)
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Static Private Member Functions

static FatFilecwd ()
 
static void dateTimeCallback (void(*dateTime)(uint16_t *date, uint16_t *time))
 
static void dateTimeCallbackCancel ()
 
static uint8_t dirName (const dir_t *dir, char *name)
 
static bool legal83Char (uint8_t c)
 
static void printFatDate (uint16_t fatDate)
 
static void printFatDate (print_t *pr, uint16_t fatDate)
 
static void printFatTime (uint16_t fatTime)
 
static void printFatTime (print_t *pr, uint16_t fatTime)
 
static bool remove (FatFile *dirFile, const char *path)
 
static bool setCwd (FatFile *dir)
 
-

Detailed Description

-

StdioStream implements a minimal stdio stream.

-

StdioStream does not support subdirectories or long file names.

-

Constructor & Destructor Documentation

- -

◆ StdioStream()

- -
-
- - - - - -
- - - - - - - -
StdioStream::StdioStream ()
-
-inline
-
-

Constructor

- -
-
-

Member Function Documentation

- -

◆ clearerr()

- -
-
- - - - - -
- - - - - - - -
void StdioStream::clearerr ()
-
-inline
-
-

Clear the stream's end-of-file and error indicators.

- -
-
- -

◆ fclose()

- -
-
- - - - - - - -
int StdioStream::fclose ()
-
-

Close a stream.

-

A successful call to the fclose function causes the stream to be flushed and the associated file to be closed. Any unwritten buffered data is written to the file; any unread buffered data is discarded. Whether or not the call succeeds, the stream is disassociated from the file.

-
Returns
zero if the stream was successfully closed, or EOF if any any errors are detected.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ feof()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::feof ()
-
-inline
-
-

Test the stream's end-of-file indicator.

Returns
non-zero if and only if the end-of-file indicator is set.
- -
-
- -

◆ ferror()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::ferror ()
-
-inline
-
-

Test the stream's error indicator.

Returns
return non-zero if and only if the error indicator is set.
- -
-
- -

◆ fflush()

- -
-
- - - - - - - -
int StdioStream::fflush ()
-
-

Flush the stream.

-

If stream is an output stream or an update stream in which the most recent operation was not input, any unwritten data is written to the file; otherwise the call is an error since any buffered input data would be lost.

-
Returns
sets the error indicator for the stream and returns EOF if an error occurs, otherwise it returns zero.
- -
-
- -

◆ fgetc()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::fgetc ()
-
-inline
-
-

Get a byte from the stream.

-
Returns
If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream is set and the fgetc function returns EOF. Otherwise, the fgetc function returns the next character from the input stream.
- -
-
- -

◆ fgets()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
char * StdioStream::fgets (char * str,
size_t num,
size_t * len = 0 
)
-
-

Get a string from a stream.

-

The fgets function reads at most one less than the number of characters specified by num from the stream into the array pointed to by str. No additional characters are read after a new-line character (which is retained) or after end-of-file. A null character is written immediately after the last character read into the array.

-
Parameters
- - - - -
[out]strPointer to an array of where the string is copied.
[in]numMaximum number of characters including the null character.
[out]lenIf len is not null and fgets is successful, the length of the string is returned.
-
-
-
Returns
str if successful. If end-of-file is encountered and no characters have been read into the array, the contents of the array remain unchanged and a null pointer is returned. If a read error occurs during the operation, the array contents are indeterminate and a null pointer is returned.
- -
-
- -

◆ fopen()

- -
-
- - - - - - - - - - - - - - - - - - -
bool StdioStream::fopen (const char * path,
const char * mode 
)
-
-

Open a stream.

-

Open a file and associates the stream with it.

-
Parameters
- - - -
[in]pathfile to be opened.
[in]modea string that indicates the open mode.
-
-
- - - - - - - - - - - - - - - - - -
"r" or "rb" Open a file for reading. The file must exist.
"w" or "wb" Truncate an existing to zero length or create an empty file for writing.
"wx" or "wbx" Create a file for writing. Fails if the file already exists.
"a" or "ab" Append; open or create file for writing at end-of-file.
"r+" or "rb+" or "r+b" Open a file for update (reading and writing).
"w+" or "w+b" or "wb+" Truncate an existing to zero length or create a file for update.
"w+x" or "w+bx" or "wb+x" Create a file for update. Fails if the file already exists.
"a+" or "a+b" or "ab+" Append; open or create a file for update, writing at end-of-file.
-

The character 'b' shall have no effect, but is allowed for ISO C standard conformance.

-

Opening a file with append mode causes all subsequent writes to the file to be forced to the then current end-of-file, regardless of intervening calls to the fseek function.

-

When a file is opened with update mode, both input and output may be performed on the associated stream. However, output shall not be directly followed by input without an intervening call to the fflush function or to a file positioning function (fseek, or rewind), and input shall not be directly followed by output without an intervening call to a file positioning function, unless the input operation encounters end-of-file.

-
Returns
true for success or false for failure.
- -
-
- -

◆ fputc()

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::fputc (int c)
-
-inline
-
-

Write a byte to a stream.

-
Parameters
- - -
[in]cthe byte to be written (converted to an unsigned char).
-
-
-
Returns
Upon successful completion, fputc() returns the value it has written. Otherwise, it returns EOF and sets the error indicator for the stream.
- -
-
- -

◆ fputs()

- -
-
- - - - - - - - -
int StdioStream::fputs (const char * str)
-
-

Write a string to a stream.

-
Parameters
- - -
[in]stra pointer to the string to be written.
-
-
-
Returns
for success, fputs() returns a non-negative number. Otherwise, it returns EOF and sets the error indicator for the stream.
- -
-
- -

◆ fread()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
size_t StdioStream::fread (void * ptr,
size_t size,
size_t count 
)
-
-

Binary input.

-

Reads an array of up to count elements, each one with a size of size bytes.

Parameters
- - - - -
[out]ptrpointer to area of at least (size*count) bytes where the data will be stored.
[in]sizethe size, in bytes, of each element to be read.
[in]countthe number of elements to be read.
-
-
-
Returns
number of elements successfully read, which may be less than count if a read error or end-of-file is encountered. If size or count is zero, fread returns zero and the contents of the array and the state of the stream remain unchanged.
- -
-
- -

◆ fseek()

- -
-
- - - - - - - - - - - - - - - - - - -
int StdioStream::fseek (int32_t offset,
int origin 
)
-
-

Set the file position for the stream.

-
Parameters
- - - -
[in]offsetnumber of offset from the origin.
[in]originposition used as reference for the offset. It is specified by one of the following constants.
-
-
-

SEEK_SET - Beginning of file.

-

SEEK_CUR - Current position of the file pointer.

-

SEEK_END - End of file.

-
Returns
zero for success. Otherwise, it returns non-zero and sets the error indicator for the stream.
- -
-
- -

◆ ftell()

- -
-
- - - - - - - -
int32_t StdioStream::ftell ()
-
-

Get the current position in a stream.

-
Returns
If successful, ftell return the current value of the position indicator. On failure, ftell returns −1L.
- -
-
- -

◆ fwrite()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
size_t StdioStream::fwrite (const void * ptr,
size_t size,
size_t count 
)
-
-

Binary output.

-

Writes an array of up to count elements, each one with a size of size bytes.

Parameters
- - - - -
[in]ptrpointer to (size*count) bytes of data to be written.
[in]sizethe size, in bytes, of each element to be written.
[in]countthe number of elements to be written.
-
-
-
Returns
number of elements successfully written. if this number is less than count, an error has occurred. If size or count is zero, fwrite returns zero.
- -
-
- -

◆ getc()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::getc ()
-
-inline
-
-

Get a byte from the stream.

-

getc and fgetc are equivalent but getc is in-line so it is faster but require more flash memory.

-
Returns
If the end-of-file indicator for the stream is set, or if the stream is at end-of-file, the end-of-file indicator for the stream is set and the fgetc function returns EOF. Otherwise, the fgetc function returns the next character from the input stream.
- -
-
- -

◆ print() [1/6]

- -
-
- - - - - -
- - - - - - - - -
size_t StdioStream::print (char c)
-
-inline
-
-

Write a character.

Parameters
- - -
[in]cthe character to write.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [2/6]

- -
-
- - - - - -
- - - - - - - - -
size_t StdioStream::print (const char * str)
-
-inline
-
-

Write a string.

-
Parameters
- - -
[in]strthe string to be written.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [3/6]

- -
-
- - - - - - - - -
size_t StdioStream::print (const __FlashStringHelper * str)
-
-

Print a string stored in flash memory.

-
Parameters
- - -
[in]strthe string to print.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [4/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::print (double val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number.

-
Parameters
- - - -
[in]precNumber of digits after decimal point.
[in]valthe number to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [5/6]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::print (float val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number.

-
Parameters
- - - -
[in]precNumber of digits after decimal point.
[in]valthe number to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ print() [6/6]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
size_t StdioStream::print (val)
-
-inline
-
-

Print a number.

-
Parameters
- - -
[in]valthe number to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ printDec() [1/9]

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::printDec (char n)
-
-inline
-
-

Print a char as a number.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [2/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (signed char n)
-
-

print a signed 8-bit integer

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [3/9]

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::printDec (unsigned char n)
-
-inline
-
-

Print an unsigned 8-bit number.

Parameters
- - -
[in]nnumber to be print.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [4/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (int16_t n)
-
-

Print a int16_t

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [5/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (uint16_t n)
-
-

print a uint16_t.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [6/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (int32_t n)
-
-

Print a signed 32-bit integer.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [7/9]

- -
-
- - - - - - - - -
int StdioStream::printDec (uint32_t n)
-
-

Write an unsigned 32-bit number.

Parameters
- - -
[in]nnumber to be printed.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [8/9]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
int StdioStream::printDec (double value,
uint8_t prec 
)
-
-inline
-
-

Print a double.

Parameters
- - - -
[in]valueThe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printDec() [9/9]

- -
-
- - - - - - - - - - - - - - - - - - -
int StdioStream::printDec (float value,
uint8_t prec 
)
-
-

Print a float.

Parameters
- - - -
[in]valueThe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int StdioStream::printField (double value,
char term,
uint8_t prec = 2 
)
-
-inline
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
int StdioStream::printField (float value,
char term,
uint8_t prec = 2 
)
-
-inline
-
-

Print a number followed by a field terminator.

Parameters
- - - - -
[in]valueThe number to be printed.
[in]termThe field terminator.
[in]precNumber of digits after decimal point.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printField() [3/3]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - -
int StdioStream::printField (value,
char term 
)
-
-inline
-
-

Print a number followed by a field terminator.

Parameters
- - - -
[in]valueThe number to be printed.
[in]termThe field terminator.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printHex()

- -
-
- - - - - - - - -
int StdioStream::printHex (uint32_t n)
-
-

Print HEX

Parameters
- - -
[in]nnumber to be printed as HEX.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ printHexln()

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::printHexln (uint32_t n)
-
-inline
-
-

Print HEX with CRLF

Parameters
- - -
[in]nnumber to be printed as HEX.
-
-
-
Returns
The number of bytes written or -1 if an error occurs.
- -
-
- -

◆ println() [1/4]

- -
-
- - - - - -
- - - - - - - -
size_t StdioStream::println ()
-
-inline
-
-

Write a CR/LF.

-
Returns
two, the number of bytes written, for success or zero for failure.
- -
-
- -

◆ println() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::println (double val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number followed by CR/LF.

-
Parameters
- - - -
[in]valthe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ println() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
size_t StdioStream::println (float val,
uint8_t prec = 2 
)
-
-inline
-
-

Print a floating point number followed by CR/LF.

-
Parameters
- - - -
[in]valthe number to be printed.
[in]precNumber of digits after decimal point.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ println() [4/4]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - -
size_t StdioStream::println (val)
-
-inline
-
-

Print an item followed by CR/LF

-
Parameters
- - -
[in]valthe item to be printed.
-
-
-
Returns
the number of bytes written.
- -
-
- -

◆ putc()

- -
-
- - - - - -
- - - - - - - - -
int StdioStream::putc (int c)
-
-inline
-
-

Write a byte to a stream.

-

putc and fputc are equivalent but putc is in-line so it is faster but require more flash memory.

-
Parameters
- - -
[in]cthe byte to be written (converted to an unsigned char).
-
-
-
Returns
Upon successful completion, fputc() returns the value it has written. Otherwise, it returns EOF and sets the error indicator for the stream.
- -
-
- -

◆ putCRLF()

- -
-
- - - - - -
- - - - - - - -
int StdioStream::putCRLF ()
-
-inline
-
-

Write a CR/LF.

-
Returns
two, the number of bytes written, for success or -1 for failure.
- -
-
- -

◆ rewind()

- -
-
- - - - - - - -
bool StdioStream::rewind ()
-
-

Set position of a stream to the beginning.

-

The rewind function sets the file position to the beginning of the file. It is equivalent to fseek(0L, SEEK_SET) except that the error indicator for the stream is also cleared.

-
Returns
true for success or false for failure.
- -
-
- -

◆ ungetc()

- -
-
- - - - - - - - -
int StdioStream::ungetc (int c)
-
-

Push a byte back into an input stream.

-
Parameters
- - -
[in]cthe byte (converted to an unsigned char) to be pushed back.
-
-
-

One character of push-back is guaranteed. If the ungetc function is called too many times without an intervening read or file positioning operation on that stream, the operation may fail.

-

A successful intervening call to a file positioning function (fseek, fsetpos, or rewind) discards any pushed-back characters for the stream.

-
Returns
Upon successful completion, ungetc() returns the byte pushed back after conversion. Otherwise it returns EOF.
- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/StdioStream.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/StdioStream.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream__coll__graph.png deleted file mode 100644 index 99344ab2..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream__inherit__graph.png deleted file mode 100644 index 99344ab2..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_stdio_stream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sys_call-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sys_call-members.html deleted file mode 100644 index 037603f7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sys_call-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
SysCall Member List
-
-
- -

This is the complete list of members for SysCall, including all inherited members.

- - - -
halt()SysCallinlinestatic
yield()SysCallinlinestatic
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sys_call.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sys_call.html deleted file mode 100644 index bf5c6145..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/class_sys_call.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: SysCall Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
SysCall Class Reference
-
-
- -

SysCall - Class to wrap system calls. - More...

- -

#include <SysCall.h>

- - - - - - -

-Static Public Member Functions

static void halt ()
 
static void yield ()
 
-

Detailed Description

-

SysCall - Class to wrap system calls.

-

Member Function Documentation

- -

◆ halt()

- -
-
- - - - - -
- - - - - - - -
static void SysCall::halt ()
-
-inlinestatic
-
-

Halt execution of this thread.

- -
-
- -

◆ yield()

- -
-
- - - - - -
- - - - - - - -
void SysCall::yield ()
-
-inlinestatic
-
-

Yield to other threads.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classes.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classes.html deleted file mode 100644 index 27078a4d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classes.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -SdFat: Class Index - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Index
-
-
-
a | b | c | d | f | i | l | m | o | p | s
- - - - - - - - - - - - - - - - - - - -
  a  
-
fat32_fsinfo   ios   ostream   SdFile   
fat_boot   ios_base   
  p  
-
SdFileSystem   
ArduinoInStream   FatCache   iostream   SdioCard   
ArduinoOutStream   FatFile   istream   partitionTable   SdioCardEX   
  b  
-
FatFileSystem   
  l  
-
PrintFile   SdSpiCard   
FatPos_t   
  s  
-
SdSpiCardEX   
BaseBlockDriver   FatStreamBase   longDirectoryEntry   setfill   
biosParmBlock   FatVolume   
  m  
-
Sd2Card   setprecision   
  c  
-
File   SdBaseFile   setw   
fname_t   masterBootRecord   SdFat   StdioStream   
cache_t   fstream   MinimumSerial   SdFatEX   SysCall   
  d  
-
  i  
-
  o  
-
SdFatSdio   
SdFatSdioEX   
directoryEntry   ibufstream   obufstream   SdFatSoftSpi   
  f  
-
ifstream   ofstream   SdFatSoftSpiEX   
fat32_boot   
-
a | b | c | d | f | i | l | m | o | p | s
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream-members.html deleted file mode 100644 index d05ae5d0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream-members.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fstream Member List
-
-
- -

This is the complete list of members for fstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)fstreaminline
close()fstreaminline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
fstream() (defined in fstream)fstreaminline
fstream(const char *path, openmode mode=in|out)fstreaminlineexplicit
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
is_open()fstreaminline
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
open(const char *path, openmode mode=in|out)fstreaminline
FatStreamBase::open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
iostream::peek()istream
FatStreamBase::peek()FatFileprivate
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream.html deleted file mode 100644 index efca4e06..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream.html +++ /dev/null @@ -1,3651 +0,0 @@ - - - - - - - -SdFat: fstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

file input/output stream. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for fstream:
-
-
Inheritance graph
- - - - - - - - - -
[legend]
-
-Collaboration diagram for fstream:
-
-
Collaboration graph
- - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
void close ()
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
 fstream (const char *path, openmode mode=in|out)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
bool is_open ()
 
void open (const char *path, openmode mode=in|out)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - - - -

-Private Member Functions

bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
int peek ()
 
-

Detailed Description

-

file input/output stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ fstream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fstream::fstream (const char * path,
openmode mode = in | out 
)
-
-inlineexplicit
-
-

Constructor with open

-
Parameters
- - - -
[in]pathpath to open
[in]modeopen mode
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void fstream::clear (iostate state = goodbit)
-
-inline
-
-

Clear state and writeError

Parameters
- - -
[in]statenew state for stream
-
-
- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
void fstream::close ()
-
-inline
-
-

Close a file and force cached data and directory information to be written to the storage device.

- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool fstream::is_open ()
-
-inline
-
-
Returns
True if stream is open else false.
- -
-
- -

◆ open()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void fstream::open (const char * path,
openmode mode = in | out 
)
-
-inline
-
-

Open a fstream

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
-

Valid open modes are (at end, ios::ate, and/or ios::binary may be added):

-

ios::in - Open file for reading.

-

ios::out or ios::out | ios::trunc - Truncate to 0 length, if existent, or create a file for writing only.

-

ios::app or ios::out | ios::app - Append; open or create file for writing at end-of-file.

-

ios::in | ios::out - Open file for update (reading and writing).

-

ios::in | ios::out | ios::trunc - Truncate to zero length, if existent, or create file for update.

-

ios::in | ios::app or ios::in | ios::out | ios::app - Append; open or create text file for update, writing at end of file.

- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream__coll__graph.png deleted file mode 100644 index 94fffce0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream__inherit__graph.png deleted file mode 100644 index 94fffce0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classfstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream-members.html deleted file mode 100644 index de827ab9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream-members.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ibufstream Member List
-
-
- -

This is the complete list of members for ibufstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ibufstream()ibufstreaminline
ibufstream(const char *str)ibufstreaminlineexplicit
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
init(const char *str)ibufstreaminline
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream.html deleted file mode 100644 index 79c57c0d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream.html +++ /dev/null @@ -1,2735 +0,0 @@ - - - - - - - -SdFat: ibufstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

parse a char string - More...

- -

#include <bufstream.h>

-
-Inheritance diagram for ibufstream:
-
-
Inheritance graph
- - - - - - -
[legend]
-
-Collaboration diagram for ibufstream:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
 ibufstream ()
 
 ibufstream (const char *str)
 
istreamignore (streamsize n=1, int delim=-1)
 
void init (const char *str)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

parse a char string

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ibufstream() [1/2]

- -
-
- - - - - -
- - - - - - - -
ibufstream::ibufstream ()
-
-inline
-
-

Constructor

- -
-
- -

◆ ibufstream() [2/2]

- -
-
- - - - - -
- - - - - - - - -
ibufstream::ibufstream (const char * str)
-
-inlineexplicit
-
-

Constructor

Parameters
- - -
[in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - -
void ibufstream::init (const char * str)
-
-inline
-
-

Initialize an ibufstream

Parameters
- - -
[in]strpointer to string to be parsed Warning: The string will not be copied so must stay in scope.
-
-
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream__coll__graph.png deleted file mode 100644 index d91bbc79..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream__inherit__graph.png deleted file mode 100644 index 0b88104d..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classibufstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream-members.html deleted file mode 100644 index 13a82348..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream-members.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ifstream Member List
-
-
- -

This is the complete list of members for ifstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
close()ifstreaminline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ifstream() (defined in ifstream)ifstreaminline
ifstream(const char *path, openmode mode=in)ifstreaminlineexplicit
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
is_open()ifstreaminline
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
open(const char *path, openmode mode=in)ifstreaminline
FatStreamBase::open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()ifstream
istream::peek()istream
FatStreamBase::peek()FatFileprivate
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream.html deleted file mode 100644 index 4a31027d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream.html +++ /dev/null @@ -1,2819 +0,0 @@ - - - - - - - -SdFat: ifstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

file input stream. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for ifstream:
-
-
Inheritance graph
- - - - - - - -
[legend]
-
-Collaboration diagram for ifstream:
-
-
Collaboration graph
- - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
void close ()
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
 ifstream (const char *path, openmode mode=in)
 
istreamignore (streamsize n=1, int delim=-1)
 
bool is_open ()
 
void open (const char *path, openmode mode=in)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - - - -

-Private Member Functions

bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
int peek ()
 
-

Detailed Description

-

file input stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ifstream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ifstream::ifstream (const char * path,
openmode mode = in 
)
-
-inlineexplicit
-
-

Constructor with open

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
void ifstream::close ()
-
-inline
-
-

Close a file and force cached data and directory information to be written to the storage device.

- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool ifstream::is_open ()
-
-inline
-
-
Returns
True if stream is open else false.
- -
-
- -

◆ open()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void ifstream::open (const char * path,
openmode mode = in 
)
-
-inline
-
-

Open an ifstream

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
-

mode See fstream::open() for valid modes.

- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek() [1/2]

- -
-
- - - - -
int istream::peek
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ peek() [2/2]

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream__coll__graph.png deleted file mode 100644 index 6a2a32db..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream__inherit__graph.png deleted file mode 100644 index 6a2a32db..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classifstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios-members.html deleted file mode 100644 index 2062f669..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios-members.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ios Member List
-
-
- -

This is the complete list of members for ios, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios.html deleted file mode 100644 index 40e091ea..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios.html +++ /dev/null @@ -1,1583 +0,0 @@ - - - - - - - -SdFat: ios Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Error and state information for all streams. - More...

- -

#include <ios.h>

-
-Inheritance diagram for ios:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
-
-Collaboration diagram for ios:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
bool good () const
 
 ios ()
 
 operator const void * () const
 
bool operator! () const
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Error and state information for all streams.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ios()

- -
-
- - - - - -
- - - - - - - -
ios::ios ()
-
-inline
-
-

Create ios with no error flags set

- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inline
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inline
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inline
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inline
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inline
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inline
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inline
-
-
Returns
true if fail() else false.
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inline
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inline
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/ios.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base-members.html deleted file mode 100644 index ba34bb2e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base-members.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ios_base Member List
-
-
- -

This is the complete list of members for ios_base, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
cur enum valueios_base
decios_basestatic
end enum valueios_base
eofbitios_basestatic
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rightios_basestatic
seekdir enum nameios_base
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base.html deleted file mode 100644 index bf72bf82..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base.html +++ /dev/null @@ -1,1222 +0,0 @@ - - - - - - - -SdFat: ios_base Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Base class for all streams. - More...

- -

#include <ios.h>

-
-Inheritance diagram for ios_base:
-
-
Inheritance graph
- - - - - - - - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
int precision () const
 
int precision (unsigned int n)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Base class for all streams.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - -
typedef unsigned int ios_base::fmtflags
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - -
typedef unsigned char ios_base::iostate
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - -
typedef int32_t ios_base::off_type
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - -
typedef uint8_t ios_base::openmode
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - -
typedef uint32_t ios_base::pos_type
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - -
typedef uint32_t ios_base::streamsize
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - -
enum ios_base::seekdir
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inline
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inline
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inline
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inline
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inline
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inline
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inline
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inline
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inline
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inline
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inline
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-static
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-static
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-static
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-static
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-static
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-static
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-static
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-static
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-static
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-static
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-static
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-static
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-static
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-static
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-static
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-static
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-static
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-static
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-static
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-static
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-static
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-static
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-static
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-static
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/ios.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base__inherit__graph.png deleted file mode 100644 index a6d2cfc2..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__base__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__coll__graph.png deleted file mode 100644 index d817f0a0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__inherit__graph.png deleted file mode 100644 index ffb918c4..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classios__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream-members.html deleted file mode 100644 index 84901100..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream-members.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
iostream Member List
-
-
- -

This is the complete list of members for iostream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream.html deleted file mode 100644 index ab5ae2a2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream.html +++ /dev/null @@ -1,3480 +0,0 @@ - - - - - - - -SdFat: iostream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Input/Output stream. - More...

- -

#include <iostream.h>

-
-Inheritance diagram for iostream:
-
-
Inheritance graph
- - - - - - - -
[legend]
-
-Collaboration diagram for iostream:
-
-
Collaboration graph
- - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Input/Output stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inlineinherited
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - -
- - - - - - - -
int istream::get ()
-
-inherited
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - -
- - - - - - - - -
istream & istream::get (char & ch)
-
-inherited
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-inherited
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-inherited
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inlineinherited
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inlineinherited
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inlineinherited
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inlineinherited
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inlineinherited
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inlineinherited
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inlineinherited
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inlineinherited
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inlineinherited
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inlineinherited
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - -
- - - - - - - -
int istream::peek ()
-
-inherited
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - -
- - - - - - - -
void istream::skipWhite ()
-
-inherited
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream__coll__graph.png deleted file mode 100644 index 749d6536..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream__inherit__graph.png deleted file mode 100644 index 644dd2dc..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classiostream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream-members.html deleted file mode 100644 index 96959e33..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream-members.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
istream Member List
-
-
- -

This is the complete list of members for istream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
fmtflags typedefios_base
gcount() constistreaminline
get()istream
get(char &ch)istream
get(char *str, streamsize n, char delim='\n')istream
getline(char *str, streamsize n, char delim='\n')istream
good() constiosinline
goodbitios_basestatic
hexios_basestatic
ignore(streamsize n=1, int delim=-1)istream
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
istream() (defined in istream)istreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator>>(istream &(*pf)(istream &str))istreaminline
operator>>(ios_base &(*pf)(ios_base &str))istreaminline
operator>>(ios &(*pf)(ios &str))istreaminline
operator>>(char *str)istreaminline
operator>>(char &ch)istreaminline
operator>>(signed char *str)istreaminline
operator>>(signed char &ch)istreaminline
operator>>(unsigned char *str)istreaminline
operator>>(unsigned char &ch)istreaminline
operator>>(bool &arg)istreaminline
operator>>(short &arg)istreaminline
operator>>(unsigned short &arg)istreaminline
operator>>(int &arg)istreaminline
operator>>(unsigned int &arg)istreaminline
operator>>(long &arg)istreaminline
operator>>(unsigned long &arg)istreaminline
operator>>(double &arg)istreaminline
operator>>(float &arg)istreaminline
operator>>(void *&arg)istreaminline
outios_basestatic
peek()istream
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekg(pos_type pos)istreaminline
seekg(off_type off, seekdir way)istreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipWhite()istream
skipwsios_basestatic
streamsize typedefios_base
tellg()istreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream.html deleted file mode 100644 index f8bbed26..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream.html +++ /dev/null @@ -1,2585 +0,0 @@ - - - - - - - -SdFat: istream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Input Stream. - More...

- -

#include <istream.h>

-
-Inheritance diagram for istream:
-
-
Inheritance graph
- - - - - - - - - -
[legend]
-
-Collaboration diagram for istream:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
streamsize gcount () const
 
int get ()
 
istreamget (char &ch)
 
istreamget (char *str, streamsize n, char delim='\n')
 
istreamgetline (char *str, streamsize n, char delim='\n')
 
bool good () const
 
istreamignore (streamsize n=1, int delim=-1)
 
 operator const void * () const
 
bool operator! () const
 
istreamoperator>> (istream &(*pf)(istream &str))
 
istreamoperator>> (ios_base &(*pf)(ios_base &str))
 
istreamoperator>> (ios &(*pf)(ios &str))
 
istreamoperator>> (char *str)
 
istreamoperator>> (char &ch)
 
istreamoperator>> (signed char *str)
 
istreamoperator>> (signed char &ch)
 
istreamoperator>> (unsigned char *str)
 
istreamoperator>> (unsigned char &ch)
 
istreamoperator>> (bool &arg)
 
istreamoperator>> (short &arg)
 
istreamoperator>> (unsigned short &arg)
 
istreamoperator>> (int &arg)
 
istreamoperator>> (unsigned int &arg)
 
istreamoperator>> (long &arg)
 
istreamoperator>> (unsigned long &arg)
 
istreamoperator>> (double &arg)
 
istreamoperator>> (float &arg)
 
istreamoperator>> (void *&arg)
 
int peek ()
 
int precision () const
 
int precision (unsigned int n)
 
iostate rdstate () const
 
istreamseekg (pos_type pos)
 
istreamseekg (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
void skipWhite ()
 
pos_type tellg ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Input Stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ gcount()

- -
-
- - - - - -
- - - - - - - -
streamsize istream::gcount () const
-
-inline
-
-
Returns
The number of characters extracted by the last unformatted input function.
- -
-
- -

◆ get() [1/3]

- -
-
- - - - - - - -
int istream::get ()
-
-

Extract a character if one is available.

-
Returns
The character or -1 if a failure occurs. A failure is indicated by the stream state.
-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- -
-
- -

◆ get() [2/3]

- -
-
- - - - - - - - -
istream & istream::get (char & ch)
-
-

Extract a character if one is available.

-
Parameters
- - -
[out]chlocation to receive the extracted character.
-
-
-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ get() [3/3]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::get (char * str,
streamsize n,
char delim = '\n' 
)
-
-

Extract characters.

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, n is less than 1, n-1 characters are extracted, or the next character equals delim (delim is not extracted). If no characters are extracted failbit is set. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ getline()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
istream & istream::getline (char * str,
streamsize n,
char delim = '\n' 
)
-
-

Extract characters

-
Parameters
- - - - -
[out]strLocation to receive extracted characters.
[in]nSize of str.
[in]delimDelimiter
-
-
-

Characters are extracted until extraction fails, the next character equals delim (delim is extracted), or n-1 characters are extracted.

-

The failbit is set if no characters are extracted or n-1 characters are extracted. If end-of-file occurs the eofbit is set.

-
Returns
always returns *this. A failure is indicated by the stream state.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ ignore()

- -
-
- - - - - - - - - - - - - - - - - - -
istream & istream::ignore (streamsize n = 1,
int delim = -1 
)
-
-

Extract characters and discard them.

-
Parameters
- - - -
[in]nmaximum number of characters to ignore.
[in]delimDelimiter.
-
-
-

Characters are extracted until extraction fails, n characters are extracted, or the next input character equals delim (the delimiter is extracted). If end-of-file occurs the eofbit is set.

-

Failures are indicated by the state of the stream.

-
Returns
*this
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator>>() [1/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (istream &(*)(istream &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios_base &(*)(ios_base &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (ios &(*)(ios &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [4/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char * str)
-
-inline
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [5/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (char & ch)
-
-inline
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [6/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char * str)
-
-inline
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [7/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (signed char & ch)
-
-inline
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [8/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char * str)
-
-inline
-
-

Extract a character string

Parameters
- - -
[out]strlocation to store the string.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [9/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned char & ch)
-
-inline
-
-

Extract a character

Parameters
- - -
[out]chlocation to store the character.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [10/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (bool & arg)
-
-inline
-
-

Extract a value of type bool.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [11/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (short & arg)
-
-inline
-
-

Extract a value of type short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [12/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned short & arg)
-
-inline
-
-

Extract a value of type unsigned short.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [13/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (int & arg)
-
-inline
-
-

Extract a value of type int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [14/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned int & arg)
-
-inline
-
-

Extract a value of type unsigned int.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [15/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (long & arg)
-
-inline
-
-

Extract a value of type long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [16/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (unsigned long & arg)
-
-inline
-
-

Extract a value of type unsigned long.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [17/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (double & arg)
-
-inline
-
-

Extract a value of type double.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [18/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (float & arg)
-
-inline
-
-

Extract a value of type float.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ operator>>() [19/19]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::operator>> (void *& arg)
-
-inline
-
-

Extract a value of type void*.

Parameters
- - -
[out]arglocation to store the value.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ peek()

- -
-
- - - - - - - -
int istream::peek ()
-
-

Return the next available character without consuming it.

-
Returns
The character if the stream state is good else -1;
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekg() [1/2]

- -
-
- - - - - -
- - - - - - - - -
istream& istream::seekg (pos_type pos)
-
-inline
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the read pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekg() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& istream::seekg (off_type off,
seekdir way 
)
-
-inline
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the read pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ skipWhite()

- -
-
- - - - - - - -
void istream::skipWhite ()
-
-

used to implement ws()

- -
-
- -

◆ tellg()

- -
-
- - - - - -
- - - - - - - -
pos_type istream::tellg ()
-
-inline
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/istream.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/istream.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream__coll__graph.png deleted file mode 100644 index d4c4e3ab..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream__inherit__graph.png deleted file mode 100644 index aa20a7a2..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classistream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream-members.html deleted file mode 100644 index 94d498d5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream-members.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
obufstream Member List
-
-
- -

This is the complete list of members for obufstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
buf()obufstreaminline
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
init(char *buf, size_t size)obufstreaminline
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
length()obufstreaminline
obufstream()obufstreaminline
obufstream(char *buf, size_t size)obufstreaminline
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream.html deleted file mode 100644 index bbbcee17..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream.html +++ /dev/null @@ -1,2562 +0,0 @@ - - - - - - - -SdFat: obufstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

format a char string - More...

- -

#include <bufstream.h>

-
-Inheritance diagram for obufstream:
-
-
Inheritance graph
- - - - - -
[legend]
-
-Collaboration diagram for obufstream:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
char * buf ()
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
void init (char *buf, size_t size)
 
size_t length ()
 
 obufstream ()
 
 obufstream (char *buf, size_t size)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

format a char string

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ obufstream() [1/2]

- -
-
- - - - - -
- - - - - - - -
obufstream::obufstream ()
-
-inline
-
-

constructor

- -
-
- -

◆ obufstream() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
obufstream::obufstream (char * buf,
size_t size 
)
-
-inline
-
-

Constructor

Parameters
- - - -
[in]bufbuffer for formatted string
[in]sizebuffer size
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ buf()

- -
-
- - - - - -
- - - - - - - -
char* obufstream::buf ()
-
-inline
-
-
Returns
a pointer to the buffer
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ init()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void obufstream::init (char * buf,
size_t size 
)
-
-inline
-
-

Initialize an obufstream

Parameters
- - - -
[in]bufbuffer for formatted string
[in]sizebuffer size
-
-
- -
-
- -

◆ length()

- -
-
- - - - - -
- - - - - - - -
size_t obufstream::length ()
-
-inline
-
-
Returns
the length of the formatted string
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream__coll__graph.png deleted file mode 100644 index 24cb78cb..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream__inherit__graph.png deleted file mode 100644 index 24cb78cb..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classobufstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream-members.html deleted file mode 100644 index c4882188..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream-members.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ofstream Member List
-
-
- -

This is the complete list of members for ofstream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)ofstreaminline
close()ofstreaminline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
is_open()ofstreaminline
leftios_basestatic
octios_basestatic
off_type typedefios_base
ofstream() (defined in ofstream)ofstreaminline
ofstream(const char *path, ios::openmode mode=out)ofstreaminlineexplicit
open(const char *path, openmode mode=out)ofstreaminline
FatStreamBase::open(FatFileSystem *fs, const char *path, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, uint16_t index, oflag_t oflag)FatFileprivate
FatStreamBase::open(FatFile *dirFile, const char *path, oflag_t oflag)FatFileprivate
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream.html deleted file mode 100644 index a15b9adc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream.html +++ /dev/null @@ -1,2548 +0,0 @@ - - - - - - - -SdFat: ofstream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

file output stream. - More...

- -

#include <fstream.h>

-
-Inheritance diagram for ofstream:
-
-
Inheritance graph
- - - - - - - -
[legend]
-
-Collaboration diagram for ofstream:
-
-
Collaboration graph
- - - - - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
void close ()
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
bool is_open ()
 
 ofstream (const char *path, ios::openmode mode=out)
 
void open (const char *path, openmode mode=out)
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
- - - - - - - -

-Private Member Functions

bool open (FatFileSystem *fs, const char *path, oflag_t oflag)
 
bool open (FatFile *dirFile, uint16_t index, oflag_t oflag)
 
bool open (FatFile *dirFile, const char *path, oflag_t oflag)
 
-

Detailed Description

-

file output stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Constructor & Destructor Documentation

- -

◆ ofstream()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ofstream::ofstream (const char * path,
ios::openmode mode = out 
)
-
-inlineexplicit
-
-

Constructor with open

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ofstream::clear (iostate state = goodbit)
-
-inline
-
-

Clear state and writeError

Parameters
- - -
[in]statenew state for stream
-
-
- -
-
- -

◆ close()

- -
-
- - - - - -
- - - - - - - -
void ofstream::close ()
-
-inline
-
-

Close a file and force cached data and directory information to be written to the storage device.

- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inlineinherited
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool ofstream::is_open ()
-
-inline
-
-
Returns
True if stream is open else false.
- -
-
- -

◆ open()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void ofstream::open (const char * path,
openmode mode = out 
)
-
-inline
-
-

Open an ofstream

Parameters
- - - -
[in]pathfile to open
[in]modeopen mode
-
-
-

mode See fstream::open() for valid modes.

- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inlineinherited
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inlineinherited
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inlineinherited
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inlineinherited
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inlineinherited
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inlineinherited
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inlineinherited
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inlineinherited
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inlineinherited
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inlineinherited
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inlineinherited
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inlineinherited
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inlineinherited
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inlineinherited
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inlineinherited
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inlineinherited
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inlineinherited
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inlineinherited
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/fstream.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream__coll__graph.png deleted file mode 100644 index bb2fc854..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream__inherit__graph.png deleted file mode 100644 index bb2fc854..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classofstream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream-members.html deleted file mode 100644 index ae7fe1b1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream-members.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
ostream Member List
-
-
- -

This is the complete list of members for ostream, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
adjustfieldios_basestatic
appios_basestatic
ateios_basestatic
bad() constiosinline
badbitios_basestatic
basefieldios_basestatic
beg enum valueios_base
binaryios_basestatic
boolalphaios_basestatic
clear(iostate state=goodbit)iosinline
cur enum valueios_base
decios_basestatic
end enum valueios_base
eof() constiosinline
eofbitios_basestatic
fail() constiosinline
failbitios_basestatic
fill()ios_baseinline
fill(char c)ios_baseinline
flags() constios_baseinline
flags(fmtflags fl)ios_baseinline
flush()ostreaminline
fmtflags typedefios_base
good() constiosinline
goodbitios_basestatic
hexios_basestatic
inios_basestatic
internalios_basestatic
ios()iosinline
ios_base() (defined in ios_base)ios_baseinline
iostate typedefios_base
leftios_basestatic
octios_basestatic
off_type typedefios_base
openmode typedefios_base
operator const void *() constiosinline
operator!() constiosinline
operator<<(ostream &(*pf)(ostream &str))ostreaminline
operator<<(ios_base &(*pf)(ios_base &str))ostreaminline
operator<<(bool arg)ostreaminline
operator<<(const char *arg)ostreaminline
operator<<(const signed char *arg)ostreaminline
operator<<(const unsigned char *arg)ostreaminline
operator<<(char arg)ostreaminline
operator<<(signed char arg)ostreaminline
operator<<(unsigned char arg)ostreaminline
operator<<(double arg)ostreaminline
operator<<(float arg)ostreaminline
operator<<(short arg)ostreaminline
operator<<(unsigned short arg)ostreaminline
operator<<(int arg)ostreaminline
operator<<(unsigned int arg)ostreaminline
operator<<(long arg)ostreaminline
operator<<(unsigned long arg)ostreaminline
operator<<(const void *arg)ostreaminline
operator<<(const __FlashStringHelper *arg)ostreaminline
ostream() (defined in ostream)ostreaminline
outios_basestatic
pos_type typedefios_base
precision() constios_baseinline
precision(unsigned int n)ios_baseinline
put(char ch)ostreaminline
rdstate() constiosinline
rightios_basestatic
seekdir enum nameios_base
seekp(pos_type pos)ostreaminline
seekp(off_type off, seekdir way)ostreaminline
setf(fmtflags fl)ios_baseinline
setf(fmtflags fl, fmtflags mask)ios_baseinline
setstate(iostate state)iosinline
showbaseios_basestatic
showpointios_basestatic
showposios_basestatic
skipwsios_basestatic
streamsize typedefios_base
tellp()ostreaminline
truncios_basestatic
unsetf(fmtflags fl)ios_baseinline
uppercaseios_basestatic
width()ios_baseinline
width(unsigned n)ios_baseinline
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream.html deleted file mode 100644 index adc8b664..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream.html +++ /dev/null @@ -1,2391 +0,0 @@ - - - - - - - -SdFat: ostream Class Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Output Stream. - More...

- -

#include <ostream.h>

-
-Inheritance diagram for ostream:
-
-
Inheritance graph
- - - - - - - - - -
[legend]
-
-Collaboration diagram for ostream:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - -

-Public Types

typedef unsigned int fmtflags
 
typedef unsigned char iostate
 
typedef int32_t off_type
 
typedef uint8_t openmode
 
typedef uint32_t pos_type
 
enum  seekdir { beg, -cur, -end - }
 
typedef uint32_t streamsize
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

bool bad () const
 
void clear (iostate state=goodbit)
 
bool eof () const
 
bool fail () const
 
char fill ()
 
char fill (char c)
 
fmtflags flags () const
 
fmtflags flags (fmtflags fl)
 
ostreamflush ()
 
bool good () const
 
 operator const void * () const
 
bool operator! () const
 
ostreamoperator<< (ostream &(*pf)(ostream &str))
 
ostreamoperator<< (ios_base &(*pf)(ios_base &str))
 
ostreamoperator<< (bool arg)
 
ostreamoperator<< (const char *arg)
 
ostreamoperator<< (const signed char *arg)
 
ostreamoperator<< (const unsigned char *arg)
 
ostreamoperator<< (char arg)
 
ostreamoperator<< (signed char arg)
 
ostreamoperator<< (unsigned char arg)
 
ostreamoperator<< (double arg)
 
ostreamoperator<< (float arg)
 
ostreamoperator<< (short arg)
 
ostreamoperator<< (unsigned short arg)
 
ostreamoperator<< (int arg)
 
ostreamoperator<< (unsigned int arg)
 
ostreamoperator<< (long arg)
 
ostreamoperator<< (unsigned long arg)
 
ostreamoperator<< (const void *arg)
 
ostreamoperator<< (const __FlashStringHelper *arg)
 
int precision () const
 
int precision (unsigned int n)
 
ostreamput (char ch)
 
iostate rdstate () const
 
ostreamseekp (pos_type pos)
 
ostreamseekp (off_type off, seekdir way)
 
fmtflags setf (fmtflags fl)
 
fmtflags setf (fmtflags fl, fmtflags mask)
 
void setstate (iostate state)
 
pos_type tellp ()
 
void unsetf (fmtflags fl)
 
unsigned width ()
 
unsigned width (unsigned n)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Attributes

static const fmtflags adjustfield = left | right | internal
 
static const openmode app = 0X4
 
static const openmode ate = 0X8
 
static const iostate badbit = 0X01
 
static const fmtflags basefield = dec | hex | oct
 
static const openmode binary = 0X10
 
static const fmtflags boolalpha = 0x0100
 
static const fmtflags dec = 0x0008
 
static const iostate eofbit = 0x02
 
static const iostate failbit = 0X04
 
static const iostate goodbit = 0x00
 
static const fmtflags hex = 0x0010
 
static const openmode in = 0X20
 
static const fmtflags internal = 0x0004
 
static const fmtflags left = 0x0001
 
static const fmtflags oct = 0x0020
 
static const openmode out = 0X40
 
static const fmtflags right = 0x0002
 
static const fmtflags showbase = 0x0200
 
static const fmtflags showpoint = 0x0400
 
static const fmtflags showpos = 0x0800
 
static const fmtflags skipws = 0x1000
 
static const openmode trunc = 0X80
 
static const fmtflags uppercase = 0x4000
 
-

Detailed Description

-

Output Stream.

-

Member Typedef Documentation

- -

◆ fmtflags

- -
-
- - - - - -
- - - - -
typedef unsigned int ios_base::fmtflags
-
-inherited
-
-

type for format flags

- -
-
- -

◆ iostate

- -
-
- - - - - -
- - - - -
typedef unsigned char ios_base::iostate
-
-inherited
-
-

typedef for iostate bitmask

- -
-
- -

◆ off_type

- -
-
- - - - - -
- - - - -
typedef int32_t ios_base::off_type
-
-inherited
-
-

type for relative seek offset

- -
-
- -

◆ openmode

- -
-
- - - - - -
- - - - -
typedef uint8_t ios_base::openmode
-
-inherited
-
-

typedef for iostream open mode

- -
-
- -

◆ pos_type

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::pos_type
-
-inherited
-
-

type for absolute seek position

- -
-
- -

◆ streamsize

- -
-
- - - - - -
- - - - -
typedef uint32_t ios_base::streamsize
-
-inherited
-
-

unsigned size that can represent maximum file size. (violates spec - should be signed)

- -
-
-

Member Enumeration Documentation

- -

◆ seekdir

- -
-
- - - - - -
- - - - -
enum ios_base::seekdir
-
-inherited
-
-

enumerated type for the direction of relative seeks

- - - - -
Enumerator
beg 

seek relative to the beginning of the stream

-
cur 

seek relative to the current stream position

-
end 

seek relative to the end of the stream

-
- -
-
-

Member Function Documentation

- -

◆ bad()

- -
-
- - - - - -
- - - - - - - -
bool ios::bad () const
-
-inlineinherited
-
-
Returns
true if bad bit is set else false.
- -
-
- -

◆ clear()

- -
-
- - - - - -
- - - - - - - - -
void ios::clear (iostate state = goodbit)
-
-inlineinherited
-
-

Clear iostate bits.

-
Parameters
- - -
[in]stateThe flags you want to set after clearing all flags.
-
-
- -
-
- -

◆ eof()

- -
-
- - - - - -
- - - - - - - -
bool ios::eof () const
-
-inlineinherited
-
-
Returns
true if end of file has been reached else false.
-

Warning: An empty file returns false before the first read.

-

Moral: eof() is only useful in combination with fail(), to find out whether EOF was the cause for failure

- -
-
- -

◆ fail()

- -
-
- - - - - -
- - - - - - - -
bool ios::fail () const
-
-inlineinherited
-
-
Returns
true if any iostate bit other than eof are set else false.
- -
-
- -

◆ fill() [1/2]

- -
-
- - - - - -
- - - - - - - -
char ios_base::fill ()
-
-inlineinherited
-
-
Returns
fill character
- -
-
- -

◆ fill() [2/2]

- -
-
- - - - - -
- - - - - - - - -
char ios_base::fill (char c)
-
-inlineinherited
-
-

Set fill character

Parameters
- - -
[in]cnew fill character
-
-
-
Returns
old fill character
- -
-
- -

◆ flags() [1/2]

- -
-
- - - - - -
- - - - - - - -
fmtflags ios_base::flags () const
-
-inlineinherited
-
-
Returns
format flags
- -
-
- -

◆ flags() [2/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::flags (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flag
-
-
-
Returns
old flags
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - -
ostream& ostream::flush ()
-
-inline
-
-

Flushes the buffer associated with this stream. The flush function calls the sync function of the associated file.

Returns
A reference to the ostream object.
- -
-
- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool ios::good () const
-
-inlineinherited
-
-
Returns
True if no iostate flags are set else false.
- -
-
- -

◆ operator const void *()

- -
-
- - - - - -
- - - - - - - -
ios::operator const void * () const
-
-inlineinherited
-
-
Returns
null pointer if fail() is true.
- -
-
- -

◆ operator!()

- -
-
- - - - - -
- - - - - - - -
bool ios::operator! () const
-
-inlineinherited
-
-
Returns
true if fail() else false.
- -
-
- -

◆ operator<<() [1/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ostream &(*)(ostream &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (ios_base &(*)(ios_base &str) pf)
-
-inline
-
-

call manipulator

Parameters
- - -
[in]pffunction to call
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (bool arg)
-
-inline
-
-

Output bool

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [4/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const char * arg)
-
-inline
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [5/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const signed char * arg)
-
-inline
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [6/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const unsigned char * arg)
-
-inline
-
-

Output string

Parameters
- - -
[in]argstring to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [7/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (char arg)
-
-inline
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [8/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (signed char arg)
-
-inline
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [9/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned char arg)
-
-inline
-
-

Output character

Parameters
- - -
[in]argcharacter to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [10/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (double arg)
-
-inline
-
-

Output double

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [11/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (float arg)
-
-inline
-
-

Output float

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [12/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (short arg)
-
-inline
-
-

Output signed short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [13/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned short arg)
-
-inline
-
-

Output unsigned short

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [14/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (int arg)
-
-inline
-
-

Output signed int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [15/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned int arg)
-
-inline
-
-

Output unsigned int

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [16/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (long arg)
-
-inline
-
-

Output signed long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [17/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (unsigned long arg)
-
-inline
-
-

Output unsigned long

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [18/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const void * arg)
-
-inline
-
-

Output pointer

Parameters
- - -
[in]argvalue to output
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [19/19]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::operator<< (const __FlashStringHelper * arg)
-
-inline
-
-

Output a string from flash using the Arduino F() macro.

Parameters
- - -
[in]argpointing to flash string
-
-
-
Returns
the stream
- -
-
- -

◆ precision() [1/2]

- -
-
- - - - - -
- - - - - - - -
int ios_base::precision () const
-
-inlineinherited
-
-
Returns
precision
- -
-
- -

◆ precision() [2/2]

- -
-
- - - - - -
- - - - - - - - -
int ios_base::precision (unsigned int n)
-
-inlineinherited
-
-

set precision

Parameters
- - -
[in]nnew precision
-
-
-
Returns
old precision
- -
-
- -

◆ put()

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::put (char ch)
-
-inline
-
-

Puts a character in a stream.

-

The unformatted output function inserts the element ch. It returns *this.

-
Parameters
- - -
[in]chThe character
-
-
-
Returns
A reference to the ostream object.
- -
-
- -

◆ rdstate()

- -
-
- - - - - -
- - - - - - - -
iostate ios::rdstate () const
-
-inlineinherited
-
-
Returns
The iostate flags for this file.
- -
-
- -

◆ seekp() [1/2]

- -
-
- - - - - -
- - - - - - - - -
ostream& ostream::seekp (pos_type pos)
-
-inline
-
-

Set the stream position

Parameters
- - -
[in]posThe absolute position in which to move the write pointer.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ seekp() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& ostream::seekp (off_type off,
seekdir way 
)
-
-inline
-
-

Set the stream position.

-
Parameters
- - - -
[in]offAn offset to move the write pointer relative to way. off is a signed 32-bit int so the offset is limited to +- 2GB.
[in]wayOne of ios::beg, ios::cur, or ios::end.
-
-
-
Returns
Is always *this. Failure is indicated by the state of *this.
- -
-
- -

◆ setf() [1/2]

- -
-
- - - - - -
- - - - - - - - -
fmtflags ios_base::setf (fmtflags fl)
-
-inlineinherited
-
-

set format flags

Parameters
- - -
[in]flnew flags to be or'ed in
-
-
-
Returns
old flags
- -
-
- -

◆ setf() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
fmtflags ios_base::setf (fmtflags fl,
fmtflags mask 
)
-
-inlineinherited
-
-

modify format flags

Parameters
- - - -
[in]maskflags to be removed
[in]flflags to be set after mask bits have been cleared
-
-
-
Returns
old flags
- -
-
- -

◆ setstate()

- -
-
- - - - - -
- - - - - - - - -
void ios::setstate (iostate state)
-
-inlineinherited
-
-

Set iostate bits.

-
Parameters
- - -
[in]stateBitts to set.
-
-
- -
-
- -

◆ tellp()

- -
-
- - - - - -
- - - - - - - -
pos_type ostream::tellp ()
-
-inline
-
-
Returns
the stream position
- -
-
- -

◆ unsetf()

- -
-
- - - - - -
- - - - - - - - -
void ios_base::unsetf (fmtflags fl)
-
-inlineinherited
-
-

clear format flags

Parameters
- - -
[in]flflags to be cleared
-
-
-
Returns
old flags
- -
-
- -

◆ width() [1/2]

- -
-
- - - - - -
- - - - - - - -
unsigned ios_base::width ()
-
-inlineinherited
-
-
Returns
width
- -
-
- -

◆ width() [2/2]

- -
-
- - - - - -
- - - - - - - - -
unsigned ios_base::width (unsigned n)
-
-inlineinherited
-
-

set width

Parameters
- - -
[in]nnew width
-
-
-
Returns
old width
- -
-
-

Member Data Documentation

- -

◆ adjustfield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::adjustfield = left | right | internal
-
-staticinherited
-
-

mask for adjustfield

- -
-
- -

◆ app

- -
-
- - - - - -
- - - - -
const openmode ios_base::app = 0X4
-
-staticinherited
-
-

seek to end before each write

- -
-
- -

◆ ate

- -
-
- - - - - -
- - - - -
const openmode ios_base::ate = 0X8
-
-staticinherited
-
-

open and seek to end immediately after opening

- -
-
- -

◆ badbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::badbit = 0X01
-
-staticinherited
-
-

iostate bad bit for a nonrecoverable error.

- -
-
- -

◆ basefield

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::basefield = dec | hex | oct
-
-staticinherited
-
-

mask for basefield

- -
-
- -

◆ binary

- -
-
- - - - - -
- - - - -
const openmode ios_base::binary = 0X10
-
-staticinherited
-
-

perform input and output in binary mode (as opposed to text mode)

- -
-
- -

◆ boolalpha

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::boolalpha = 0x0100
-
-staticinherited
-
-

use strings true/false for bool

- -
-
- -

◆ dec

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::dec = 0x0008
-
-staticinherited
-
-

base 10 flag

- -
-
- -

◆ eofbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::eofbit = 0x02
-
-staticinherited
-
-

iostate bit for end of file reached

- -
-
- -

◆ failbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::failbit = 0X04
-
-staticinherited
-
-

iostate fail bit for nonfatal error

- -
-
- -

◆ goodbit

- -
-
- - - - - -
- - - - -
const iostate ios_base::goodbit = 0x00
-
-staticinherited
-
-

iostate for no flags

- -
-
- -

◆ hex

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::hex = 0x0010
-
-staticinherited
-
-

base 16 flag

- -
-
- -

◆ in

- -
-
- - - - - -
- - - - -
const openmode ios_base::in = 0X20
-
-staticinherited
-
-

open for input

- -
-
- -

◆ internal

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::internal = 0x0004
-
-staticinherited
-
-

fill between sign/base prefix and number

- -
-
- -

◆ left

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::left = 0x0001
-
-staticinherited
-
-

left adjust fields

- -
-
- -

◆ oct

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::oct = 0x0020
-
-staticinherited
-
-

base 8 flag

- -
-
- -

◆ out

- -
-
- - - - - -
- - - - -
const openmode ios_base::out = 0X40
-
-staticinherited
-
-

open for output

- -
-
- -

◆ right

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::right = 0x0002
-
-staticinherited
-
-

right adjust fields

- -
-
- -

◆ showbase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showbase = 0x0200
-
-staticinherited
-
-

use prefix 0X for hex and 0 for oct

- -
-
- -

◆ showpoint

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpoint = 0x0400
-
-staticinherited
-
-

always show '.' for floating numbers

- -
-
- -

◆ showpos

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::showpos = 0x0800
-
-staticinherited
-
-

show + sign for nonnegative numbers

- -
-
- -

◆ skipws

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::skipws = 0x1000
-
-staticinherited
-
-

skip initial white space

- -
-
- -

◆ trunc

- -
-
- - - - - -
- - - - -
const openmode ios_base::trunc = 0X80
-
-staticinherited
-
-

truncate an existing stream when opening

- -
-
- -

◆ uppercase

- -
-
- - - - - -
- - - - -
const fmtflags ios_base::uppercase = 0x4000
-
-staticinherited
-
-

use uppercase letters in number representations

- -
-
-
The documentation for this class was generated from the following files:
    -
  • Arduino/libraries/SdFat/src/FatLib/ostream.h
  • -
  • Arduino/libraries/SdFat/src/FatLib/ostream.cpp
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream__coll__graph.png deleted file mode 100644 index 361df37d..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream__inherit__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream__inherit__graph.png deleted file mode 100644 index e83f4076..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/classostream__inherit__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/closed.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/closed.png deleted file mode 100644 index 98cc2c90..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/closed.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_000005_000006.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_000005_000006.html deleted file mode 100644 index d943d2bf..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_000005_000006.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src -> FatLib Relation - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

src → FatLib Relation

File in Arduino/libraries/SdFat/srcIncludes file in Arduino/libraries/SdFat/src/FatLib
sdios.hArduinoStream.h
sdios.hfstream.h
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_000005_000007.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_000005_000007.html deleted file mode 100644 index 99583f95..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_000005_000007.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src -> SdCard Relation - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

src → SdCard Relation

File in Arduino/libraries/SdFat/srcIncludes file in Arduino/libraries/SdFat/src/SdCard
BlockDriver.hSdSpiCard.h
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_1281b15c327061056ab3b326e90c50cf.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_1281b15c327061056ab3b326e90c50cf.html deleted file mode 100644 index 5d15732a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_1281b15c327061056ab3b326e90c50cf.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
SdFat Directory Reference
-
-
-
-Directory dependency graph for SdFat:
-
-
Arduino/libraries/SdFat
- - - - - - -
- - - - -

-Directories

directory  extras
 
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png deleted file mode 100644 index 88ec2e79..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_1281b15c327061056ab3b326e90c50cf_dep.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_353ccaa5c7dda9a5be3e56b5f40a9e48.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_353ccaa5c7dda9a5be3e56b5f40a9e48.html deleted file mode 100644 index 3185a044..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_353ccaa5c7dda9a5be3e56b5f40a9e48.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/extras/MainPage Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
MainPage Directory Reference
-
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_481cc946b8a81b8d9363a4aad6201160.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_481cc946b8a81b8d9363a4aad6201160.html deleted file mode 100644 index bf02e75b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_481cc946b8a81b8d9363a4aad6201160.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
libraries Directory Reference
-
-
-
-Directory dependency graph for libraries:
-
-
Arduino/libraries
- - - - - -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png deleted file mode 100644 index c1c42499..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_481cc946b8a81b8d9363a4aad6201160_dep.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_7e472674a7b7d2590a789f197241f95f.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_7e472674a7b7d2590a789f197241f95f.html deleted file mode 100644 index 92693b4b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_7e472674a7b7d2590a789f197241f95f.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
FatLib Directory Reference
-
-
-
-Directory dependency graph for FatLib:
-
-
Arduino/libraries/SdFat/src/FatLib
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  ArduinoFiles.h
 PrintFile class.
 
file  ArduinoStream.h
 ArduinoInStream and ArduinoOutStream classes.
 
file  bufstream.h
 ibufstream and obufstream classes
 
file  FatFile.h
 FatFile class.
 
file  FatFileSystem.h
 FatFileSystem class.
 
file  FatLibConfig.h
 configuration definitions
 
file  FatStructs.h
 FAT file structures.
 
file  FatVolume.h
 FatVolume class.
 
file  fstream.h
 fstream, ifstream, and ofstream classes
 
file  ios.h
 ios_base and ios classes
 
file  iostream.h
 iostream class
 
file  istream.h
 istream class
 
file  ostream.h
 ostream class
 
file  StdioStream.h
 StdioStream class.
 
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png deleted file mode 100644 index 0495e08b..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_7e472674a7b7d2590a789f197241f95f_dep.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html deleted file mode 100644 index 12ca0bf3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/SdCard Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
SdCard Directory Reference
-
-
-
-Directory dependency graph for SdCard:
-
-
Arduino/libraries/SdFat/src/SdCard
- - - - -
- - - - - -

-Files

file  SdSpiCard.h
 SdSpiCard class for V2 SD/SDHC cards.
 
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png deleted file mode 100644 index 74f6510a..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a70af2fb8f1edf8b7124f41d82dbf480_dep.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a991eec27578c865874ede3d8ec657c2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a991eec27578c865874ede3d8ec657c2.html deleted file mode 100644 index 3b955f0e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a991eec27578c865874ede3d8ec657c2.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -SdFat: Arduino Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
Arduino Directory Reference
-
-
-
-Directory dependency graph for Arduino:
-
-
Arduino
- - - - -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png deleted file mode 100644 index d3e87478..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_a991eec27578c865874ede3d8ec657c2_dep.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html deleted file mode 100644 index 143c2f52..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
src Directory Reference
-
-
-
-Directory dependency graph for src:
-
-
Arduino/libraries/SdFat/src
- - - - - - - - -
- - -

-Directories

- - - - - - - - - - - - - - - - - - - - - - -

-Files

file  BlockDriver.h
 Define block driver.
 
file  FreeStack.h
 FreeStack() function.
 
file  MinimumSerial.h
 Minimal AVR Serial driver.
 
file  SdFat.h
 SdFat class.
 
file  SdFatConfig.h
 configuration definitions
 
file  sdios.h
 C++ IO Streams features.
 
file  SysCall.h
 SysCall class.
 
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png deleted file mode 100644 index e19e4c47..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_c18d6c86f7b0afecac5c3a8a9885031e_dep.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_d75e759b510f73394903d99f52f52a38.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_d75e759b510f73394903d99f52f52a38.html deleted file mode 100644 index ff3fd514..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dir_d75e759b510f73394903d99f52f52a38.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/extras Directory Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
extras Directory Reference
-
-
- - -

-Directories

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doc.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doc.png deleted file mode 100644 index 17edabff..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doc.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doxygen.css b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doxygen.css deleted file mode 100644 index 266c8b3a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doxygen.css +++ /dev/null @@ -1,1596 +0,0 @@ -/* The standard CSS for doxygen 1.8.14 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - - -/* @end */ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doxygen.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doxygen.png deleted file mode 100644 index 3ff17d80..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/doxygen.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dynsections.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dynsections.js deleted file mode 100644 index c1ce1226..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program 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 2 of the License, or - (at your option) any later version. - - This program 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 this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -SdFat: File List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 123456]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  Arduino
  libraries
  SdFat
  src
  FatLib
 ArduinoFiles.hPrintFile class
 ArduinoStream.hArduinoInStream and ArduinoOutStream classes
 bufstream.hibufstream and obufstream classes
 FatFile.hFatFile class
 FatFileSystem.hFatFileSystem class
 FatLibConfig.hConfiguration definitions
 FatStructs.hFAT file structures
 FatVolume.hFatVolume class
 fstream.hfstream, ifstream, and ofstream classes
 ios.hios_base and ios classes
 iostream.hiostream class
 istream.histream class
 ostream.hostream class
 StdioStream.hStdioStream class
  SdCard
 SdSpiCard.hSdSpiCard class for V2 SD/SDHC cards
 BlockDriver.hDefine block driver
 FreeStack.hFreeStack() function
 MinimumSerial.hMinimal AVR Serial driver
 SdFat.hSdFat class
 SdFatConfig.hConfiguration definitions
 sdios.hC++ IO Streams features
 SysCall.hSysCall class
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/folderclosed.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/folderclosed.png deleted file mode 100644 index bb8ab35e..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/folderclosed.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/folderopen.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/folderopen.png deleted file mode 100644 index d6c7f676..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/folderopen.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h.html deleted file mode 100644 index 188a89c0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/fstream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
fstream.h File Reference
-
-
- -

fstream, ifstream, and ofstream classes -More...

-
#include "FatFile.h"
-#include "iostream.h"
-
-Include dependency graph for fstream.h:
-
-
- - - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - -
-
- - - - - - - - - - - - - -

-Classes

class  FatStreamBase
 Base class for C++ style streams. More...
 
class  fstream
 file input/output stream. More...
 
class  ifstream
 file input stream. More...
 
class  ofstream
 file output stream. More...
 
-

Detailed Description

-

fstream, ifstream, and ofstream classes

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h__dep__incl.png deleted file mode 100644 index a681a0c0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h__incl.png deleted file mode 100644 index ebe24277..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/fstream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions.html deleted file mode 100644 index de79824c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- a -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_b.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_b.html deleted file mode 100644 index e027fc52..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_b.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- b -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_c.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_c.html deleted file mode 100644 index 3e704690..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_c.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- c -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_d.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_d.html deleted file mode 100644 index 12c30e16..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_d.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- d -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_e.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_e.html deleted file mode 100644 index 07fa7c80..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_e.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- e -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_enum.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_enum.html deleted file mode 100644 index cf588706..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_enum.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -SdFat: Class Members - Enumerations - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_eval.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_eval.html deleted file mode 100644 index adf598cf..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_eval.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Class Members - Enumerator - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_f.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_f.html deleted file mode 100644 index d64199f3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_f.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- f -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func.html deleted file mode 100644 index fc7387b3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_b.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_b.html deleted file mode 100644 index 464f15bc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_b.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- b -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_c.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_c.html deleted file mode 100644 index 9f24b048..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_c.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_d.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_d.html deleted file mode 100644 index 5665591e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_d.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- d -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_e.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_e.html deleted file mode 100644 index 5102f6d1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_e.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- e -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_f.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_f.html deleted file mode 100644 index b05774ca..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_f.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- f -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_g.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_g.html deleted file mode 100644 index a70aa9b2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_g.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- g -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_h.html deleted file mode 100644 index 0a01dca5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_h.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- h -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_i.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_i.html deleted file mode 100644 index 3a2cda1a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_i.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- i -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_k.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_k.html deleted file mode 100644 index 2476ebb9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_k.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- k -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_l.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_l.html deleted file mode 100644 index 90823536..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_l.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- l -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_m.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_m.html deleted file mode 100644 index 61370a05..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_m.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- m -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_n.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_n.html deleted file mode 100644 index ecf1c594..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_n.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- n -

    -
  • name() -: File -
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_o.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_o.html deleted file mode 100644 index 42b25ad7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_o.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- o -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_p.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_p.html deleted file mode 100644 index e0a9b135..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_p.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- p -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_r.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_r.html deleted file mode 100644 index f31039a5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_r.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- r -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_s.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_s.html deleted file mode 100644 index 33a3e4ba..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_s.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- s -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_t.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_t.html deleted file mode 100644 index 6c1dd587..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_t.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- t -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_u.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_u.html deleted file mode 100644 index 0cef8a17..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_u.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- u -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_v.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_v.html deleted file mode 100644 index b3f14d6b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_v.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- v -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_w.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_w.html deleted file mode 100644 index 814c06d9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_w.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- w -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_y.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_y.html deleted file mode 100644 index 0cee27f9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_func_y.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- y -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_g.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_g.html deleted file mode 100644 index 3854cf99..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_g.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- g -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_h.html deleted file mode 100644 index 4c1542f3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_h.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- h -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_i.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_i.html deleted file mode 100644 index de1f59aa..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_i.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- i -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_j.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_j.html deleted file mode 100644 index 589e7aee..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_j.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- j -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_k.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_k.html deleted file mode 100644 index 02f62036..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_k.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- k -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_l.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_l.html deleted file mode 100644 index bdb96027..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_l.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- l -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_m.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_m.html deleted file mode 100644 index dd26bf03..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_m.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- m -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_n.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_n.html deleted file mode 100644 index 40109594..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_n.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- n -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_o.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_o.html deleted file mode 100644 index d7e8c420..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_o.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- o -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_p.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_p.html deleted file mode 100644 index d496c697..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_p.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- p -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_r.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_r.html deleted file mode 100644 index 1872e1f2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_r.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- r -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_rela.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_rela.html deleted file mode 100644 index cd491533..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_rela.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -SdFat: Class Members - Related Functions - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_s.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_s.html deleted file mode 100644 index e0c0778e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_s.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- s -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_t.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_t.html deleted file mode 100644 index 35fa7e27..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_t.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- t -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_type.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_type.html deleted file mode 100644 index 688f3ab2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_type.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -SdFat: Class Members - Typedefs - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_u.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_u.html deleted file mode 100644 index bc8de458..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_u.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- u -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_v.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_v.html deleted file mode 100644 index d74e2056..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_v.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- v -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_vars.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_vars.html deleted file mode 100644 index b9e7dd02..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_vars.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - - - - -SdFat: Class Members - Variables - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- g -

- - -

- h -

- - -

- i -

- - -

- j -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_w.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_w.html deleted file mode 100644 index 07192ab5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_w.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- w -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_y.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_y.html deleted file mode 100644 index bdbce3ea..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/functions_y.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -SdFat: Class Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- y -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals.html deleted file mode 100644 index a693ae32..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented file members with links to the documentation:
- -

- _ -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- r -

- - -

- s -

- - -

- u -

- - -

- w -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_defs.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_defs.html deleted file mode 100644 index 9edf0f39..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_defs.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- i -

- - -

- m -

- - -

- n -

- - -

- p -

- - -

- s -

- - -

- u -

- - -

- w -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_func.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_func.html deleted file mode 100644 index 1573a55a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_func.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- b -

    -
  • boolalpha() -: ios.h -
  • -
- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- h -

- - -

- i -

    -
  • internal() -: ios.h -
  • -
- - -

- l -

- - -

- n -

    -
  • noboolalpha() -: ios.h -
  • -
  • noshowbase() -: ios.h -
  • -
  • noshowpoint() -: ios.h -
  • -
  • noshowpos() -: ios.h -
  • -
  • noskipws() -: ios.h -
  • -
  • nouppercase() -: ios.h -
  • -
- - -

- o -

- - -

- r -

- - -

- s -

- - -

- u -

    -
  • uppercase() -: ios.h -
  • -
- - -

- w -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_type.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_type.html deleted file mode 100644 index 3a89695d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_type.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_vars.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_vars.html deleted file mode 100644 index 6ed61c41..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/globals_vars.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - -SdFat: File Members - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- _ -

- - -

- b -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- l -

- - -

- s -

- - -

- u -

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/graph_legend.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/graph_legend.html deleted file mode 100644 index 2b2c358b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/graph_legend.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -SdFat: Graph Legend - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Graph Legend
-
-
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

-
- -
-

The boxes in the above graph have the following meaning:

-
    -
  • -A filled gray box represents the struct or class for which the graph is generated.
  • -
  • -A box with a black border denotes a documented struct or class.
  • -
  • -A box with a gray border denotes an undocumented struct or class.
  • -
  • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • -
-

The arrows have the following meaning:

-
    -
  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • -
  • -A dark green arrow is used for protected inheritance.
  • -
  • -A dark red arrow is used for private inheritance.
  • -
  • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • -
  • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/graph_legend.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/graph_legend.png deleted file mode 100644 index c0d711ba..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/graph_legend.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/hierarchy.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/hierarchy.html deleted file mode 100644 index 23d6faa6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/hierarchy.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -SdFat: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
-
-

Go to the graphical class hierarchy

-This inheritance list is sorted roughly, but not completely, alphabetically:
-
[detail level 12345]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 CBaseBlockDriverBase block driver
 CSdioCardRaw SDIO access to SD and SDHC flash memory cards
 CSdioCardEXExtended SD I/O block driver
 CbiosParmBlockBIOS parameter block
 Ccache_tCache for an raw data block
 CdirectoryEntryFAT short directory entry
 Cfat32_bootBoot sector for a FAT32 volume
 Cfat32_fsinfoFSINFO sector for a FAT32 volume
 Cfat_bootBoot sector for a FAT12/FAT16 volume
 CFatCacheBlock cache
 CFatFileBasic file class
 CFatStreamBaseBase class for C++ style streams
 CfstreamFile input/output stream
 CifstreamFile input stream
 CofstreamFile output stream
 CFileArduino SD.h style File API
 CPrintFileFatFile with Print
 CSdFileClass for backward compatibility
 CSdBaseFileClass for backward compatibility
 CStdioStreamStdioStream implements a minimal stdio stream
 CFatPos_tInternal type for file position - do not use in user apps
 CFatVolumeAccess FAT16 and FAT32 volumes on raw file devices
 CFatFileSystemIntegration class for the FatLib library
 CSdFileSystem< SdDriverClass >Virtual base class for SdFat library
 CSdFileSystem< SdioCard >
 CSdFatSdioSdFat class using SDIO
 CSdFileSystem< SdioCardEX >
 CSdFatSdioEXSdFat class using SDIO
 CSdFileSystem< SdSpiCard >
 CSdFatMain file system class for SdFat library
 CSdFatSoftSpi< MisoPin, MosiPin, SckPin >SdFat class using software SPI
 CSdFileSystem< SdSpiCardEX >
 CSdFatEXSdFat class with extended SD I/O
 CSdFatSoftSpiEX< MisoPin, MosiPin, SckPin >SdFat class using software SPI and extended SD I/O
 Cfname_tInternal type for Short File Name - do not use in user apps
 Cios_baseBase class for all streams
 CiosError and state information for all streams
 CFatStreamBaseBase class for C++ style streams
 CistreamInput Stream
 CibufstreamParse a char string
 CArduinoInStreamInput stream for Arduino Stream objects
 CifstreamFile input stream
 CiostreamInput/Output stream
 CfstreamFile input/output stream
 CostreamOutput Stream
 CArduinoOutStreamOutput stream for Arduino Print objects
 CiostreamInput/Output stream
 CobufstreamFormat a char string
 CofstreamFile output stream
 ClongDirectoryEntryFAT long directory entry
 CmasterBootRecordMaster Boot Record
 CpartitionTableMBR partition table entry
 CPrint
 CMinimumSerialMini serial class for the SdFat library
 CPrintFileFatFile with Print
 CSdSpiCardRaw access to SD and SDHC flash memory cards via SPI protocol
 CSd2CardRaw access to SD and SDHC card using default SPI library
 CSdSpiCardEXExtended SD I/O block driver
 CsetfillType for setfill manipulator
 CsetprecisionType for setprecision manipulator
 CsetwType for setw manipulator
 CStream
 CFileArduino SD.h style File API
 CSysCallSysCall - Class to wrap system calls
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/index.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/index.html deleted file mode 100644 index ac05f106..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/index.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - -SdFat: Arduino SdFat Library - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Arduino SdFat Library
-
-
-

Copyright (c) 20011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-

Copyright &copy 2012-2018 by William Greiman

-Introduction

-

The Arduino SdFat Library is a minimal implementation of FAT16 and FAT32 file systems on SD flash memory cards. Standard SD and high capacity SDHC cards are supported.

-

Experimental support for FAT12 can be enabled by setting FAT12_SUPPORT nonzero in SdFatConfig.h.

-

The SdFat library supports Long File Names or short 8.3 names. Edit the SdFatConfig.h file to select short or long file names.

-

The main classes in SdFat are SdFat, SdFatEX, SdFatSoftSpi, SdFatSoftSpiEX, SdBaseFile, SdFile, File, StdioStream, fstream, ifstream, and ofstream.

-

The SdFat, SdFatEX, SdFatSoftSpi and SdFatSoftSpiEX classes maintain a FAT volume, a current working directory, and simplify initialization of other classes. The SdFat and SdFatEX classes uses a fast custom hardware SPI implementation. The SdFatSoftSpi and SdFatSoftSpiEX classes uses software SPI.

-

the SdFatEX and SdFatSoftSpiEX use extended multi-block I/O for enhanced performance. These classes must have exclusive use of the SPI bus.

-

The SdBaseFile class provides basic file access functions such as open(), binary read(), binary write(), close(), remove(), and sync(). SdBaseFile is the smallest file class.

-

The SdFile class has all the SdBaseFile class functions plus the Arduino Print class functions.

-

The File class has all the SdBaseFile functions plus the functions in the Arduino SD.h File class. This provides compatibility with the Arduino SD.h library.

-

The StdioStream class implements functions similar to Linux/Unix standard buffered input/output.

-

The fstream class implements C++ iostreams for both reading and writing text files.

-

The ifstream class implements C++ iostreams for reading text files.

-

The ofstream class implements C++ iostreams for writing text files.

-

The classes ifstream, ofstream, istream, and ostream follow the C++ iostream standard when possible.

-

There are many tutorials and much documentation about using C++ iostreams on the web.

-

http://www.cplusplus.com/ is a good C++ site for learning iostreams.

-

The classes ibufstream and obufstream format and parse character strings in memory buffers.

-

the classes ArduinoInStream and ArduinoOutStream provide iostream functions for Serial, LiquidCrystal, and other devices.

-

A number of example are provided in the SdFat/examples folder. These were developed to test SdFat and illustrate its use.

-

-Installation

-

You must manually install SdFat by copying the SdFat folder from the download package to the Arduino libraries folder in your sketch folder.

-

See the Manual installation section of this guide.

-

http://arduino.cc/en/Guide/Libraries

-

-SdFat Configuration

-

Several configuration options may be changed by editing the SdFatConfig.h file in the SdFat folder.

-

Set USE_LONG_FILE_NAMES nonzero to enable Long File Names. By default, Long File Names are enabled. For the leanest fastest library disable Long File Names. Long File names require extra flash but no extra RAM. Opening Long File Names can be slower than opening Short File Names. Data read and write performance is not changed by the type of File Name.

-

If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, the class SdFatSoftSpiEX will be defined. These classes used extended multi-block SD I/O for better performance. the SPI bus may not be shared with other devices in this mode.

-

Set USE_STANDARD_SPI_LIBRARY and ENABLE_SOFTWARE_SPI_CLASS to enable various SPI options. set USE_STANDARD_SPI_LIBRARY to use the standard Arduino SPI library. set ENABLE_SOFTWARE_SPI_CLASS to enable the SdFatSoftSpi class which uses software SPI.

-

To enable SD card CRC checking set USE_SD_CRC nonzero.

-

Set FAT12_SUPPORT nonzero to enable use of FAT12 volumes. FAT12 has not been well tested and requires additional flash.

-

-Paths and Working Directories

-

Relative paths in SdFat are resolved in a manner similar to Windows.

-

Each instance of SdFat has a current directory. In SdFat this directory is called the volume working directory, vwd. Initially this directory is the root directory for the volume.

-

The volume working directory is changed by calling SdFat::chdir(path).

-

The call sd.chdir("/2014") will change the volume working directory for sd to "/2014", assuming "/2014" exists.

-

Relative paths for SdFat member functions are resolved by starting at the volume working directory.

-

For example, the call sd.mkdir("April") will create the directory "/2014/April" assuming the volume working directory is "/2014".

-

SdFat has a current working directory, cwd, that is used to resolve paths for file.open() calls.

-

For a single SD card the current working directory is always the volume working directory for that card.

-

For multiple SD cards the current working directory is set to the volume working directory of a card by calling the SdFat::chvol() member function. The chvol() call is like the Windows <drive letter>: command.

-

The call sd2.chvol() will set the current working directory to the volume working directory for sd2.

-

If the volume working directory for sd2 is "/music" the call

-

file.open("BigBand.wav", O_READ);

-

will then open "/music/BigBand.wav" on sd2.

-

The following functions are used to change or get current directories. See the html documentation for more information.

bool SdFat::chdir(bool set_cwd = false);
bool SdFat::chdir(const char* path, bool set_cwd = false);
void SdFat::chvol();

-SD\SDHC Cards

-

Arduinos access SD cards using the cards SPI protocol. PCs, Macs, and most consumer devices use the 4-bit parallel SD protocol. A card that functions well on A PC or Mac may not work well on the Arduino.

-

Most cards have good SPI read performance but cards vary widely in SPI write performance. Write performance is limited by how efficiently the card manages internal erase/remapping operations. The Arduino cannot optimize writes to reduce erase operations because of its limit RAM.

-

SanDisk cards generally have good write performance. They seem to have more internal RAM buffering than other cards and therefore can limit the number of flash erase operations that the Arduino forces due to its limited RAM.

-

-Hardware Configuration

-

SdFat was developed using an Adafruit Industries Data Logging Shield.

-

The hardware interface to the SD card should not use a resistor based level shifter. SdFat sets the SPI bus frequency to 8 MHz which results in signal rise times that are too slow for the edge detectors in many newer SD card controllers when resistor voltage dividers are used.

-

The 5 to 3.3 V level shifter for 5 V Arduinos should be IC based like the 74HC4050N based circuit shown in the file SdLevel.png. The Adafruit Wave Shield uses a 74AHC125N. Gravitech sells SD and MicroSD Card Adapters based on the 74LCX245.

-

If you are using a resistor based level shifter and are having problems try setting the SPI bus frequency to 4 MHz. This can be done by using card.init(SPI_HALF_SPEED) to initialize the SD card.

-

A feature to use software SPI is available. Software SPI is slower than hardware SPI but allows any digital pins to be used. See SdFatConfig.h for software SPI definitions.

-

-Bugs and Comments

-

If you wish to report bugs or have comments, send email to fat16.nosp@m.lib@.nosp@m.sbcgl.nosp@m.obal.nosp@m..net. If possible, include a simple program that illustrates the bug or problem.

-

-Troubleshooting

-

The two example programs QuickStart, and SdInfo are useful for troubleshooting.

-

A message like this from SdInfo with errorCode 0X1 indicates the SD card is not seen by SdFat. This is often caused by a wiring error and reformatting the card will not solve the problem.

-cardBegin failed
-SD errorCode: 0X1
-SD errorData: 0XFF
-

Here is a similar message from QuickStart:

-SD initialization failed.
-Do not reformat the card!
-Is the card correctly inserted?
-Is chipSelect set to the correct value?
-Does another SPI device need to be disabled?
-Is there a wiring/soldering problem?
errorCode: 0x1, errorData: 0xff
-

Here is a message from QuickStart that indicates a formatting problem:

-Card successfully initialized.
-Can't find a valid FAT16/FAT32 partition.
-Try reformatting the card.  For best results use
-the SdFormatter program in SdFat/examples or download
-and use SDFormatter from www.sdcard.org/downloads.
-

The best source of recent information and help is the Arduino forum.

-

http://arduino.cc/forum/

-

Also search the Adafruit forum.

-

http://forums.adafruit.com/

-

If you are using a Teensy try.

-

http://forum.pjrc.com/forum.php

-

-SdFat Usage

-

SdFat supports Long File Names. Long names in SdFat are limited to 7-bit ASCII characters in the range 0X20 - 0XFE The following are reserved characters:

    -
  • -< (less than)
  • -
  • -> (greater than)
  • -
  • -: (colon)
  • -
  • -" (double quote)
  • -
  • -/ (forward slash)
  • -
  • -\ (backslash)
  • -
  • -| (vertical bar or pipe)
  • -
  • -? (question mark)
  • -
  • -* (asterisk)
  • -
-

SdFat uses a slightly restricted form of short names. Short names are limited to 8 characters followed by an optional period (.) and extension of up to 3 characters. The characters may be any combination of letters and digits. The following special characters are also allowed:

-

$ % ' - _ @ ~ ` ! ( ) { } ^ # &

-

Short names are always converted to upper case and their original case value is lost. Files that have a base-name where all characters have the same case and an extension where all characters have the same case will display properly. Examples this type name are UPPER.low, lower.TXT, UPPER.TXT, and lower.txt.

-

An application which writes to a file using print(), println() or write() must close the file or call sync() at the appropriate time to force data and directory information to be written to the SD Card.

-

Applications must use care calling sync() since 2048 bytes of I/O is required to update file and directory information. This includes writing the current data block, reading the block that contains the directory entry for update, writing the directory block back and reading back the current data block.

-

It is possible to open a file with two or more instances of a file object. A file may be corrupted if data is written to the file by more than one instance of a file object.

-

-How to format SD Cards as FAT Volumes

-

The best way to restore an SD card's format on a PC or Mac is to use SDFormatter which can be downloaded from:

-

http://www.sdcard.org/downloads

-

A formatter program, SdFormatter.ino, is included in the SdFat/examples/SdFormatter directory. This program attempts to emulate SD Association's SDFormatter.

-

SDFormatter aligns flash erase boundaries with file system structures which reduces write latency and file system overhead.

-

The PC/Mac SDFormatter does not have an option for FAT type so it may format very small cards as FAT12. Use the SdFat formatter to force FAT16 formatting of small cards.

-

Do not format the SD card with an OS utility, OS utilities do not format SD cards in conformance with the SD standard.

-

You should use a freshly formatted SD card for best performance. FAT file systems become slower if many files have been created and deleted. This is because the directory entry for a deleted file is marked as deleted, but is not deleted. When a new file is created, these entries must be scanned before creating the file. Also files can become fragmented which causes reads and writes to be slower.

-

-Examples

-

A number of examples are provided in the SdFat/examples folder. See the html documentation for a list.

-

To access these examples from the Arduino development environment go to: File -> Examples -> SdFat -> <program Name>

-

Compile, upload to your Arduino and click on Serial Monitor to run the example.

-

Here is a list:

-

AnalogBinLogger - Fast AVR ADC logger - see the AnalogBinLoggerExtras folder.

-

bench - A read/write benchmark.

-

dataLogger - A simple modifiable data logger.

-

DirectoryFunctions - Demo of chdir(), ls(), mkdir(), and rmdir().

-

fgets - Demo of the fgets read line/string function.

-

formating - Print a table with various formatting options.

-

getline - Example of getline from section 27.7.1.3 of the C++ standard.

-

LongFileName - Example use of openNext, printName, and open by index.

-

LowLatencyLogger - A data logger for higher data rates. ADC version.

-

LowLatencyLoggerADXL345 - A data logger for higher data rates. ADXL345 SPI.

-

LowLatencyLoggerMPU6050 - A data logger for higher data rates. MPU6050 I2C.

-

OpenNext - Open all files in the root dir and print their filename.

-

PrintBenchmark - A simple benchmark for printing to a text file.

-

QuickStart - A program to quickly test your SD card and SD shield/module.

-

RawWrite - A test of raw write functions for contiguous files.

-

ReadCsv - Function to read a CSV text file one field at a time.

-

ReadCsvStream - Read a comma-separated value file using iostream extractors.

-

ReadCsvArray - Read a two dimensional array from a CSV file.

-

ReadWrite - Compatibility test of Arduino SD ReadWrite example.

-

rename - A demo of SdFat::rename(old, new) and SdFile::rename(dirFile, newPath).

-

SdFormatter - This program will format an SD or SDHC card.

-

SoftwareSpi - Simple demonstration of the SdFatSoftSpi template class.

-

SdInfo - Initialize an SD card and analyze its structure for trouble shooting.

-

StdioBench - Demo and test of stdio style stream.

-

Timestamp - Sets file create, modify, and access timestamps.

-

TwoCards - Example using two SD cards.

-

VolumeFreeSpace - Demonstrate the freeClusterCount() call.

-

wipe - Example to wipe all data from an already formatted SD.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_0.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_0.png deleted file mode 100644 index 011af3dc..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_0.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_1.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_1.png deleted file mode 100644 index aaa33493..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_1.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_10.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_10.png deleted file mode 100644 index 93805fc6..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_10.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_11.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_11.png deleted file mode 100644 index aeccc523..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_11.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_12.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_12.png deleted file mode 100644 index 6e9deb22..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_12.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_13.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_13.png deleted file mode 100644 index 27cef82e..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_13.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_14.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_14.png deleted file mode 100644 index 1a576ca7..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_14.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_15.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_15.png deleted file mode 100644 index abcb0be0..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_15.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_16.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_16.png deleted file mode 100644 index adae8006..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_16.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_17.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_17.png deleted file mode 100644 index 6815203e..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_17.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_18.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_18.png deleted file mode 100644 index 50928857..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_18.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_19.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_19.png deleted file mode 100644 index cb756b51..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_19.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_2.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_2.png deleted file mode 100644 index 16382510..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_2.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_3.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_3.png deleted file mode 100644 index 26465d57..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_3.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_4.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_4.png deleted file mode 100644 index 9efa23d4..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_4.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_5.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_5.png deleted file mode 100644 index f2d4b5e4..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_5.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_6.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_6.png deleted file mode 100644 index 24c8f4d6..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_6.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_7.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_7.png deleted file mode 100644 index ab588808..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_7.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_8.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_8.png deleted file mode 100644 index 9ac44585..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_8.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_9.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_9.png deleted file mode 100644 index 1f0c1b41..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherit_graph_9.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherits.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherits.html deleted file mode 100644 index 7f8550f7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/inherits.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - -SdFat: Class Hierarchy - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class Hierarchy
-
-
- - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - -
- - - - - -
- - - -
- - - -
- - - -
- - - -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h.html deleted file mode 100644 index 8dbec9cf..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h.html +++ /dev/null @@ -1,767 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/ios.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
ios.h File Reference
-
-
- -

ios_base and ios classes -More...

-
#include "FatFile.h"
-
-Include dependency graph for ios.h:
-
-
- - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - -
-
- - - - - - - -

-Classes

class  ios
 Error and state information for all streams. More...
 
class  ios_base
 Base class for all streams. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

ios_baseboolalpha (ios_base &str)
 
ios_basedec (ios_base &str)
 
ios_basehex (ios_base &str)
 
ios_baseinternal (ios_base &str)
 
ios_baseleft (ios_base &str)
 
ios_basenoboolalpha (ios_base &str)
 
ios_basenoshowbase (ios_base &str)
 
ios_basenoshowpoint (ios_base &str)
 
ios_basenoshowpos (ios_base &str)
 
ios_basenoskipws (ios_base &str)
 
ios_basenouppercase (ios_base &str)
 
ios_baseoct (ios_base &str)
 
ios_baseright (ios_base &str)
 
ios_baseshowbase (ios_base &str)
 
ios_baseshowpoint (ios_base &str)
 
ios_baseshowpos (ios_base &str)
 
ios_baseskipws (ios_base &str)
 
ios_baseuppercase (ios_base &str)
 
-

Detailed Description

-

ios_base and ios classes

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Function Documentation

- -

◆ boolalpha()

- -
-
- - - - - -
- - - - - - - - -
ios_base& boolalpha (ios_basestr)
-
-inline
-
-

function for boolalpha manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ dec()

- -
-
- - - - - -
- - - - - - - - -
ios_base& dec (ios_basestr)
-
-inline
-
-

function for dec manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ hex()

- -
-
- - - - - -
- - - - - - - - -
ios_base& hex (ios_basestr)
-
-inline
-
-

function for hex manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ internal()

- -
-
- - - - - -
- - - - - - - - -
ios_base& internal (ios_basestr)
-
-inline
-
-

function for internal manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ left()

- -
-
- - - - - -
- - - - - - - - -
ios_base& left (ios_basestr)
-
-inline
-
-

function for left manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noboolalpha()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noboolalpha (ios_basestr)
-
-inline
-
-

function for noboolalpha manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noshowbase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noshowbase (ios_basestr)
-
-inline
-
-

function for noshowbase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noshowpoint()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noshowpoint (ios_basestr)
-
-inline
-
-

function for noshowpoint manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noshowpos()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noshowpos (ios_basestr)
-
-inline
-
-

function for noshowpos manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ noskipws()

- -
-
- - - - - -
- - - - - - - - -
ios_base& noskipws (ios_basestr)
-
-inline
-
-

function for noskipws manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ nouppercase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& nouppercase (ios_basestr)
-
-inline
-
-

function for nouppercase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ oct()

- -
-
- - - - - -
- - - - - - - - -
ios_base& oct (ios_basestr)
-
-inline
-
-

function for oct manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ right()

- -
-
- - - - - -
- - - - - - - - -
ios_base& right (ios_basestr)
-
-inline
-
-

function for right manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ showbase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& showbase (ios_basestr)
-
-inline
-
-

function for showbase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ showpoint()

- -
-
- - - - - -
- - - - - - - - -
ios_base& showpoint (ios_basestr)
-
-inline
-
-

function for showpoint manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ showpos()

- -
-
- - - - - -
- - - - - - - - -
ios_base& showpos (ios_basestr)
-
-inline
-
-

function for showpos manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ skipws()

- -
-
- - - - - -
- - - - - - - - -
ios_base& skipws (ios_basestr)
-
-inline
-
-

function for skipws manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ uppercase()

- -
-
- - - - - -
- - - - - - - - -
ios_base& uppercase (ios_basestr)
-
-inline
-
-

function for uppercase manipulator

Parameters
- - -
[in]strThe stream
-
-
-
Returns
The stream
- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h__dep__incl.png deleted file mode 100644 index b24b7d4d..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h__incl.png deleted file mode 100644 index a77ef2b1..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ios_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h.html deleted file mode 100644 index bf6180e8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/iostream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
iostream.h File Reference
-
-
- -

iostream class -More...

-
#include "istream.h"
-#include "ostream.h"
-
-Include dependency graph for iostream.h:
-
-
- - - - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - -
-
- - - - - - - - - - - - - -

-Classes

class  iostream
 Input/Output stream. More...
 
struct  setfill
 type for setfill manipulator More...
 
struct  setprecision
 type for setprecision manipulator More...
 
struct  setw
 type for setw manipulator More...
 
- - - - - - - - - - - - - - - - - - - -

-Functions

ostreamendl (ostream &os)
 
ostreamflush (ostream &os)
 
ostreamoperator<< (ostream &os, const setfill &arg)
 
ostreamoperator<< (ostream &os, const setprecision &arg)
 
ostreamoperator<< (ostream &os, const setw &arg)
 
istreamoperator>> (istream &obj, const setfill &arg)
 
istreamoperator>> (istream &is, const setprecision &arg)
 
istreamoperator>> (istream &is, const setw &arg)
 
istreamws (istream &is)
 
-

Detailed Description

-

iostream class

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-

Function Documentation

- -

◆ endl()

- -
-
- - - - - -
- - - - - - - - -
ostream& endl (ostreamos)
-
-inline
-
-

insert endline

Parameters
- - -
[in]osThe Stream
-
-
-
Returns
The stream
- -
-
- -

◆ flush()

- -
-
- - - - - -
- - - - - - - - -
ostream& flush (ostreamos)
-
-inline
-
-

flush manipulator

Parameters
- - -
[in]osThe stream
-
-
-
Returns
The stream
- -
-
- -

◆ operator<<() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& operator<< (ostreamos,
const setfillarg 
)
-
-inline
-
-

setfill manipulator

Parameters
- - - -
[in]osthe stream
[in]argset setfill object
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& operator<< (ostreamos,
const setprecisionarg 
)
-
-inline
-
-

setprecision manipulator

Parameters
- - - -
[in]osthe stream
[in]argset setprecision object
-
-
-
Returns
the stream
- -
-
- -

◆ operator<<() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
ostream& operator<< (ostreamos,
const setwarg 
)
-
-inline
-
-

setw manipulator

Parameters
- - - -
[in]osthe stream
[in]argset setw object
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [1/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& operator>> (istreamobj,
const setfillarg 
)
-
-inline
-
-

setfill manipulator

Parameters
- - - -
[in]objthe stream
[in]argset setfill object
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [2/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& operator>> (istreamis,
const setprecisionarg 
)
-
-inline
-
-

setprecision manipulator

Parameters
- - - -
[in]isthe stream
[in]argset setprecision object
-
-
-
Returns
the stream
- -
-
- -

◆ operator>>() [3/3]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
istream& operator>> (istreamis,
const setwarg 
)
-
-inline
-
-

setw manipulator

Parameters
- - - -
[in]isthe stream
[in]argset setw object
-
-
-
Returns
the stream
- -
-
- -

◆ ws()

- -
-
- - - - - -
- - - - - - - - -
istream& ws (istreamis)
-
-inline
-
-

Skip white space

Parameters
- - -
[in]isthe Stream
-
-
-
Returns
The stream
- -
-
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h__dep__incl.png deleted file mode 100644 index 187f7922..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h__incl.png deleted file mode 100644 index d456d03d..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/iostream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h.html deleted file mode 100644 index c06bb11b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/FatLib/istream.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
istream.h File Reference
-
-
- -

istream class -More...

-
#include "ios.h"
-
-Include dependency graph for istream.h:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
- - - - -

-Classes

class  istream
 Input Stream. More...
 
-

Detailed Description

-

istream class

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h__dep__incl.png deleted file mode 100644 index af8daebf..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h__incl.png deleted file mode 100644 index 8dc6f516..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/istream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/jquery.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/jquery.js deleted file mode 100644 index 2771c749..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/jquery.js +++ /dev/null @@ -1,115 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' - - - - -
- -
-
ostream.h File Reference
-
-
- -

ostream class -More...

-
#include "ios.h"
-
-Include dependency graph for ostream.h:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - -
-
- - - - -

-Classes

class  ostream
 Output Stream. More...
 
-

Detailed Description

-

ostream class

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ostream_8h__dep__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ostream_8h__dep__incl.png deleted file mode 100644 index 1d797ce7..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ostream_8h__dep__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ostream_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ostream_8h__incl.png deleted file mode 100644 index 1488d518..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/ostream_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sdios_8h.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sdios_8h.html deleted file mode 100644 index 2359926f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sdios_8h.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -SdFat: Arduino/libraries/SdFat/src/sdios.h File Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
sdios.h File Reference
-
-
- -

C++ IO Streams features. -More...

-
#include "FatLib/fstream.h"
-#include "FatLib/ArduinoStream.h"
-
-Include dependency graph for sdios.h:
-
-
- - - - - - - - - - - - - - - - - -
-

Detailed Description

-

C++ IO Streams features.

-

Copyright (c) 2011-2018 Bill Greiman This file is part of the SdFat library for SD memory cards.

-

MIT License

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sdios_8h__incl.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sdios_8h__incl.png deleted file mode 100644 index f03703b8..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sdios_8h__incl.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_0.html deleted file mode 100644 index 5125b940..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_0.js deleted file mode 100644 index c3aa3dc7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5f_5fbrkval',['__brkval',['../_free_stack_8h.html#ad193a2cc121e0d4614a1c21eb463fb56',1,'FreeStack.h']]], - ['_5f_5fbss_5fend',['__bss_end',['../_free_stack_8h.html#adbad17f740c2d7f2bc4833681c93c932',1,'FreeStack.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_1.html deleted file mode 100644 index b8ff8711..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_1.js deleted file mode 100644 index b82534e4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_1.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['adjustfield',['adjustfield',['../classios__base.html#adaaf735381254aa096ebe3605e8bbd0a',1,'ios_base']]], - ['app',['app',['../classios__base.html#a8380aac3c405730708888fdc68905820',1,'ios_base']]], - ['arduinofiles_2eh',['ArduinoFiles.h',['../_arduino_files_8h.html',1,'']]], - ['arduinoinstream',['ArduinoInStream',['../class_arduino_in_stream.html',1,'ArduinoInStream'],['../class_arduino_in_stream.html#a61ee22a5824849ec3261ee2f814dfb93',1,'ArduinoInStream::ArduinoInStream()']]], - ['arduinooutstream',['ArduinoOutStream',['../class_arduino_out_stream.html',1,'ArduinoOutStream'],['../class_arduino_out_stream.html#a228b667f9f53dc91c6ed7735d34f04a8',1,'ArduinoOutStream::ArduinoOutStream()']]], - ['arduinostream_2eh',['ArduinoStream.h',['../_arduino_stream_8h.html',1,'']]], - ['ate',['ate',['../classios__base.html#aa434355c165500065276d955d8b36e99',1,'ios_base']]], - ['attr',['attr',['../structlong_directory_entry.html#aa36bf1210d0c2b3b80948e5f697eb02e',1,'longDirectoryEntry']]], - ['attributes',['attributes',['../structdirectory_entry.html#a16c6cde55c8175c90935c386f1cfb21a',1,'directoryEntry']]], - ['available',['available',['../class_minimum_serial.html#a2abe4370989968938b5dc4872d51c3df',1,'MinimumSerial::available()'],['../class_print_file.html#a600592235b2bee6bdb3a9701d0d6eee3',1,'PrintFile::available()'],['../class_file.html#acf613c4e75bae85f543b30e701ebcc44',1,'File::available()'],['../class_fat_file.html#ac1fa779d98db7ffdb96f8019ab0060d6',1,'FatFile::available()']]], - ['arduino_20_25sdfat_20library',['Arduino %SdFat Library',['../index.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_10.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_10.html deleted file mode 100644 index 50bc449e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_10.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_10.js deleted file mode 100644 index 7ee09e61..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_10.js +++ /dev/null @@ -1,33 +0,0 @@ -var searchData= -[ - ['p',['p',['../structsetprecision.html#a7cb7bb355a303fa39a8035615bde9348',1,'setprecision']]], - ['part',['part',['../structmaster_boot_record.html#aa4e294e50f311635c10c92f4c99227c5',1,'masterBootRecord']]], - ['part_5ft',['part_t',['../_fat_structs_8h.html#a37251e7d5c69a159be727a3fc8c9d0e6',1,'FatStructs.h']]], - ['partitiontable',['partitionTable',['../structpartition_table.html',1,'']]], - ['peek',['peek',['../class_print_file.html#a3a2a66f4a0cb69ab4edc66d39997fda7',1,'PrintFile::peek()'],['../class_file.html#a0e5025f39bd584563bfe4b05fc1db268',1,'File::peek()'],['../class_fat_file.html#ac05b7136b887539426856c623869aa3a',1,'FatFile::peek()'],['../classistream.html#a4022265e0ede3698454f1ff59348c14a',1,'istream::peek()']]], - ['pgm_5fread_5fbyte',['pgm_read_byte',['../_fat_file_8h.html#a48c60b057902adf805797f183286728d',1,'FatFile.h']]], - ['pgm_5fread_5fword',['pgm_read_word',['../_fat_file_8h.html#a910fb5f01313d339d3b835d45e1e5ad0',1,'FatFile.h']]], - ['pos_5ftype',['pos_type',['../classios__base.html#abe85cf1f181b8bce8022f05ab76aae7f',1,'ios_base']]], - ['position',['position',['../struct_fat_pos__t.html#a8e14c6f2705777502b543452743eaa26',1,'FatPos_t::position()'],['../class_file.html#aae991c597c0bc4c5eb44c1f3b06a21ec',1,'File::position()']]], - ['precision',['precision',['../classios__base.html#aba92f0687644fc14f202958635ce276f',1,'ios_base::precision() const'],['../classios__base.html#a5b70cc65fc2c276136fea99bddedb6f0',1,'ios_base::precision(unsigned int n)']]], - ['print',['print',['../class_stdio_stream.html#ad3f6ee8e8ca5dcf6dabfd88199b172e2',1,'StdioStream::print(char c)'],['../class_stdio_stream.html#a1158ea5f9bf041f21b1733b7811c9bb9',1,'StdioStream::print(const char *str)'],['../class_stdio_stream.html#aac4d7b3548d03b8fd70adf12c7ee315c',1,'StdioStream::print(const __FlashStringHelper *str)'],['../class_stdio_stream.html#a26f5b98560b6771225005b073166108b',1,'StdioStream::print(double val, uint8_t prec=2)'],['../class_stdio_stream.html#a06b6eb9f0a7000fdcc73cd6af8d40560',1,'StdioStream::print(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a7129f85c7c5f16867f467731ef84dee9',1,'StdioStream::print(T val)']]], - ['print_5ft',['print_t',['../_fat_volume_8h.html#ac62f6449331cfe1a71f29be30efe7890',1,'FatVolume.h']]], - ['printcreatedatetime',['printCreateDateTime',['../class_fat_file.html#a558530f20314a8d8ee3d1a488fc7f46e',1,'FatFile']]], - ['printdec',['printDec',['../class_stdio_stream.html#ac0a907feb1e4b7e00de99857b4c0a470',1,'StdioStream::printDec(char n)'],['../class_stdio_stream.html#a2707ea97f6113c226781469f4f39ff62',1,'StdioStream::printDec(signed char n)'],['../class_stdio_stream.html#a6e6ac78caa6259a4c4934707bf497a2b',1,'StdioStream::printDec(unsigned char n)'],['../class_stdio_stream.html#a218af88db35f38babf01d6e0a9cdceeb',1,'StdioStream::printDec(int16_t n)'],['../class_stdio_stream.html#a90b2999af94a3578fff7579c2acf8e35',1,'StdioStream::printDec(uint16_t n)'],['../class_stdio_stream.html#ad4591f1234b57f63c1acf0f3392099ac',1,'StdioStream::printDec(int32_t n)'],['../class_stdio_stream.html#a8b6c2c80342abe45e6f564e9bd5bb7ea',1,'StdioStream::printDec(uint32_t n)'],['../class_stdio_stream.html#aaa8921947d4dbbae840d285cb633e8aa',1,'StdioStream::printDec(double value, uint8_t prec)'],['../class_stdio_stream.html#a6a09284b1c6d0769c27916a2e131e749',1,'StdioStream::printDec(float value, uint8_t prec)']]], - ['printfatdate',['printFatDate',['../class_fat_file.html#a8fdb038aafdf3a17ac80b53c063aa73b',1,'FatFile::printFatDate(uint16_t fatDate)'],['../class_fat_file.html#ada5364f66204b1a64afbf9d2e6cd2b0b',1,'FatFile::printFatDate(print_t *pr, uint16_t fatDate)']]], - ['printfattime',['printFatTime',['../class_fat_file.html#a7740731f08ef97de7dfbc9b075c4c7d1',1,'FatFile::printFatTime(uint16_t fatTime)'],['../class_fat_file.html#a4e7e56ba52ca17c602af1b85684b09a9',1,'FatFile::printFatTime(print_t *pr, uint16_t fatTime)']]], - ['printfield',['printField',['../class_fat_file.html#a7478cad0f9e5079311b9e1fa558016ff',1,'FatFile::printField(float value, char term, uint8_t prec=2)'],['../class_fat_file.html#abd3e1747511216462b3ef98167156cbb',1,'FatFile::printField(int16_t value, char term)'],['../class_fat_file.html#a9972c2419c293ef9c382bff666b9ae4d',1,'FatFile::printField(uint16_t value, char term)'],['../class_fat_file.html#a41b3b32dd8482429b74c7af3432d6cf8',1,'FatFile::printField(int32_t value, char term)'],['../class_fat_file.html#a097240f08baadeb1c64b63eab9afb088',1,'FatFile::printField(uint32_t value, char term)'],['../class_stdio_stream.html#a4988592ada39c4b4c603b061f84d183f',1,'StdioStream::printField(double value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a3b90b2317cc391f94784a847f5313c08',1,'StdioStream::printField(float value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a02c2ad1a2e71e82d238b8386cf3e6c41',1,'StdioStream::printField(T value, char term)']]], - ['printfile',['PrintFile',['../class_print_file.html',1,'PrintFile'],['../class_print_file.html#a537ea4364a7958550acf2c8ddb8791ec',1,'PrintFile::PrintFile()']]], - ['printfilesize',['printFileSize',['../class_fat_file.html#a12a5d2de2737c201aa39ca1bd2ab9c47',1,'FatFile']]], - ['printhex',['printHex',['../class_stdio_stream.html#add39b2b4ec3daa7c8922e96ce5d368bc',1,'StdioStream']]], - ['printhexln',['printHexln',['../class_stdio_stream.html#aec6ebea511489b0ef6b61d9132d93af9',1,'StdioStream']]], - ['println',['println',['../class_stdio_stream.html#ad0cd3acc05a91456f505752377bd405a',1,'StdioStream::println()'],['../class_stdio_stream.html#a3793dd66cf347a1ca0b7b167e948cce9',1,'StdioStream::println(double val, uint8_t prec=2)'],['../class_stdio_stream.html#aac250d041a7844c8db1cbd2d97ecfdaa',1,'StdioStream::println(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a3b14532768d07e6ed89c762d04792c12',1,'StdioStream::println(T val)']]], - ['printmodifydatetime',['printModifyDateTime',['../class_fat_file.html#a05cee5df46a370bf916d3ba597c82e39',1,'FatFile']]], - ['printname',['printName',['../class_fat_file.html#ad1cbc3aeb0f5193b7a26595966da9621',1,'FatFile::printName()'],['../class_fat_file.html#afe18a787fb8640e2d2483370c770f82f',1,'FatFile::printName(print_t *pr)']]], - ['printsfn',['printSFN',['../class_fat_file.html#a791cd7aade71f609aab62ec018aea3c0',1,'FatFile']]], - ['progmem',['PROGMEM',['../_fat_file_8h.html#a75acaba9e781937468d0911423bc0c35',1,'FatFile.h']]], - ['pstr',['PSTR',['../_fat_file_8h.html#a9c00057fd19e916cc1aa0a5949336beb',1,'FatFile.h']]], - ['put',['put',['../classostream.html#a11aad8a1efd284ccfa91cbfb78d089bd',1,'ostream']]], - ['putc',['putc',['../class_stdio_stream.html#adf9e552212aad6fc2284da0ee62d04dc',1,'StdioStream']]], - ['putcrlf',['putCRLF',['../class_stdio_stream.html#a09ccc4b6cabc3502c1052e85d94e84ef',1,'StdioStream']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_11.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_11.html deleted file mode 100644 index b35c8bf0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_11.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_11.js deleted file mode 100644 index ff13a902..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_11.js +++ /dev/null @@ -1,29 +0,0 @@ -var searchData= -[ - ['rdstate',['rdstate',['../classios.html#afe4d084ba0d2704a27525147d1463c36',1,'ios']]], - ['read',['read',['../class_minimum_serial.html#a4890dd60f2ffb61eba0821cc80d411ad',1,'MinimumSerial::read()'],['../class_file.html#a4c46a1975e66c37977bf07c58ec10b4e',1,'File::read()'],['../class_fat_file.html#a60ae55ff6fe158c2340071d702a363c5',1,'FatFile::read()'],['../class_fat_file.html#a200e6e0553d5b709520c9dfac9ef77dd',1,'FatFile::read(void *buf, size_t nbyte)'],['../class_fat_cache.html#ac2bb0b8f2ce3ab5cd86cf30b4a663cea',1,'FatCache::read()']]], - ['readblock',['readBlock',['../class_base_block_driver.html#a16bb3305f3130253dd7ab6e19aa1b524',1,'BaseBlockDriver::readBlock()'],['../class_sdio_card.html#ac94605c428fa9258106835cceec470d8',1,'SdioCard::readBlock()'],['../class_sdio_card_e_x.html#a49609f0409ef01284bc83b10a8ec5efe',1,'SdioCardEX::readBlock()'],['../class_sd_spi_card.html#a4393634a82c6683ee94d1fefe0be332a',1,'SdSpiCard::readBlock()'],['../class_sd_spi_card_e_x.html#abb69c8bd538dafed1e7f33382ee48d61',1,'SdSpiCardEX::readBlock()']]], - ['readblocks',['readBlocks',['../class_base_block_driver.html#a3a029a2d02fc7cbdd7c15c8d622565c4',1,'BaseBlockDriver::readBlocks()'],['../class_sdio_card.html#a7de36d26a01dc39b7dc122c54ee03b12',1,'SdioCard::readBlocks()'],['../class_sdio_card_e_x.html#a1b50db2f87246f4ff1af4782152c5fee',1,'SdioCardEX::readBlocks()'],['../class_sd_spi_card.html#ac630f77c3137923b47c1bd12a9bbfadf',1,'SdSpiCard::readBlocks()'],['../class_sd_spi_card_e_x.html#a9e158cda94fadd12267fe7e63d06622a',1,'SdSpiCardEX::readBlocks()']]], - ['readcid',['readCID',['../class_sdio_card.html#add77777fbcf91cc41e8ec62fda169e79',1,'SdioCard::readCID()'],['../class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea',1,'SdSpiCard::readCID()']]], - ['readcsd',['readCSD',['../class_sdio_card.html#a1da0ca418c153e24b4e13b4c1e20d450',1,'SdioCard::readCSD()'],['../class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290',1,'SdSpiCard::readCSD()']]], - ['readdata',['readData',['../class_sdio_card.html#a9dc1cd99d0136e514faaecf56a6318d2',1,'SdioCard::readData()'],['../class_sd_spi_card.html#a3a1d1b4b4ceb42fcd41aaf6649482770',1,'SdSpiCard::readData()']]], - ['readdir',['readDir',['../class_fat_file.html#a1325afe074c3efecff666678cd9f116a',1,'FatFile']]], - ['readline',['readline',['../class_arduino_in_stream.html#ad4c60f813b8df6dd1d6696a3458de09c',1,'ArduinoInStream']]], - ['readocr',['readOCR',['../class_sdio_card.html#adc583f7a27f57ce55ce474b1379b9303',1,'SdioCard::readOCR()'],['../class_sd_spi_card.html#ab446e49338b3ce834a750ac6dae35f61',1,'SdSpiCard::readOCR()']]], - ['readstart',['readStart',['../class_sdio_card.html#a73beed782d16173b2e7b0e29c663f6fb',1,'SdioCard::readStart(uint32_t lba)'],['../class_sdio_card.html#a788171db84a1d724808d56ab9608e3a4',1,'SdioCard::readStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a3b1710d11496c32ba4323831e00ac6d1',1,'SdSpiCard::readStart()']]], - ['readstatus',['readStatus',['../class_sd_spi_card.html#a91d0413599efe0d63c8c2dfe4a12d9ae',1,'SdSpiCard']]], - ['readstop',['readStop',['../class_sdio_card.html#a5bd3f206d790149340783135d08eb701',1,'SdioCard::readStop()'],['../class_sd_spi_card.html#afdac7c399fa1ba3f904cf503526e007e',1,'SdSpiCard::readStop()']]], - ['remove',['remove',['../class_fat_file.html#ac837a537fbcca14c7aa390c5fc9f4e7c',1,'FatFile::remove()'],['../class_fat_file.html#afe820bbb056863e91ec482961c8dc695',1,'FatFile::remove(FatFile *dirFile, const char *path)'],['../class_fat_file_system.html#abf7d7d0dab43083d5be10d70ff4669e4',1,'FatFileSystem::remove()']]], - ['rename',['rename',['../class_fat_file.html#a4b42f2454ff462555c07ea094a92a1e0',1,'FatFile::rename()'],['../class_fat_file_system.html#a0187891a24017b41bd7c5ba63e659e65',1,'FatFileSystem::rename()']]], - ['reserved1',['reserved1',['../structfat__boot.html#affa7e6efb3ccea19ba7ea0ddadce7463',1,'fat_boot::reserved1()'],['../structfat32__boot.html#a7075c3c00aae071110fd1acb2e6fd599',1,'fat32_boot::reserved1()'],['../structfat32__fsinfo.html#ac24bd4801a60a54e5133ed1bb71bcdaa',1,'fat32_fsinfo::reserved1()']]], - ['reserved2',['reserved2',['../structfat32__fsinfo.html#a9ec0e2756cd7e169268798a558df3814',1,'fat32_fsinfo']]], - ['reservednt',['reservedNT',['../structdirectory_entry.html#afe7d00be85f3b78549b21610050da52b',1,'directoryEntry']]], - ['reservedsectorcount',['reservedSectorCount',['../structbios_parm_block.html#adb4830c345b27293c7d7b97b77f52e01',1,'biosParmBlock::reservedSectorCount()'],['../structfat__boot.html#a13f272a8f780fb43a400f873a3fd7b73',1,'fat_boot::reservedSectorCount()'],['../structfat32__boot.html#a8e490f05ad3552dfbdf8f9332d287ba0',1,'fat32_boot::reservedSectorCount()']]], - ['rewind',['rewind',['../class_fat_file.html#a5aac6e0b3cb08fc8b8668e916a8b0ca5',1,'FatFile::rewind()'],['../class_stdio_stream.html#ad985866675193d2ee1dde9e27b0d08da',1,'StdioStream::rewind()']]], - ['rewinddirectory',['rewindDirectory',['../class_file.html#ae1419603dea25a6c8480b941d7ac63a3',1,'File']]], - ['right',['right',['../classios__base.html#aec064a12730b5d87e718c1864e29ac64',1,'ios_base::right()'],['../ios_8h.html#aee80fd600c5c58a2bebbd48afdcf8280',1,'right(): ios.h']]], - ['rmdir',['rmdir',['../class_fat_file.html#a9515bac181d33e7f0125e88fa2ccd283',1,'FatFile::rmdir()'],['../class_fat_file_system.html#aaed2edc7ff7fedb163458c870bb41b33',1,'FatFileSystem::rmdir()']]], - ['rmrfstar',['rmRfStar',['../class_fat_file.html#ac780a80526f86d3def701ecdc99d8bfe',1,'FatFile']]], - ['rootdirentrycount',['rootDirEntryCount',['../structbios_parm_block.html#a9a1b24bb2dbb3a123c4ffc703954d71d',1,'biosParmBlock::rootDirEntryCount()'],['../structfat__boot.html#a2124f89e12307df944f08e6657dbf4af',1,'fat_boot::rootDirEntryCount()'],['../structfat32__boot.html#a94185496fb56c6e0e8078fc3803e9142',1,'fat32_boot::rootDirEntryCount()'],['../class_fat_volume.html#a31d0efaf3e47c9342da0dfb3735eecf1',1,'FatVolume::rootDirEntryCount()']]], - ['rootdirstart',['rootDirStart',['../class_fat_volume.html#a372f1f1fab71f5744eaf538156abe64d',1,'FatVolume']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_12.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_12.html deleted file mode 100644 index fd265245..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_12.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_12.js deleted file mode 100644 index a1c4df07..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_12.js +++ /dev/null @@ -1,68 +0,0 @@ -var searchData= -[ - ['sd2card',['Sd2Card',['../class_sd2_card.html',1,'']]], - ['sd_5ffat_5fversion',['SD_FAT_VERSION',['../_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210',1,'SdFat.h']]], - ['sd_5fhas_5fcustom_5fspi',['SD_HAS_CUSTOM_SPI',['../_sd_fat_config_8h.html#a838861a01379e94361148d22e62b1977',1,'SdFatConfig.h']]], - ['sdbasefile',['SdBaseFile',['../class_sd_base_file.html',1,'SdBaseFile'],['../class_sd_base_file.html#af23fd43105b4eb629f4b66fa695a5cf3',1,'SdBaseFile::SdBaseFile()']]], - ['sdfat',['SdFat',['../class_sd_fat.html',1,'SdFat'],['../class_sd_fat.html#a68d0e890435e3e71e5e44db1736add1e',1,'SdFat::SdFat()']]], - ['sdfat_2eh',['SdFat.h',['../_sd_fat_8h.html',1,'']]], - ['sdfatconfig_2eh',['SdFatConfig.h',['../_sd_fat_config_8h.html',1,'']]], - ['sdfatex',['SdFatEX',['../class_sd_fat_e_x.html',1,'SdFatEX'],['../class_sd_fat_e_x.html#aef4d79f9a36785543f48ddc18ac2af78',1,'SdFatEX::SdFatEX()']]], - ['sdfatsdio',['SdFatSdio',['../class_sd_fat_sdio.html',1,'']]], - ['sdfatsdioex',['SdFatSdioEX',['../class_sd_fat_sdio_e_x.html',1,'']]], - ['sdfatsoftspi',['SdFatSoftSpi',['../class_sd_fat_soft_spi.html',1,'']]], - ['sdfatsoftspiex',['SdFatSoftSpiEX',['../class_sd_fat_soft_spi_e_x.html',1,'']]], - ['sdfile',['SdFile',['../class_sd_file.html',1,'SdFile'],['../class_sd_file.html#ad05be3a1fb635448d15a154424b6c33f',1,'SdFile::SdFile()']]], - ['sdfilesystem',['SdFileSystem',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocard_20_3e',['SdFileSystem< SdioCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocardex_20_3e',['SdFileSystem< SdioCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicard_20_3e',['SdFileSystem< SdSpiCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicardex_20_3e',['SdFileSystem< SdSpiCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdiocard',['SdioCard',['../class_sdio_card.html',1,'']]], - ['sdiocardex',['SdioCardEX',['../class_sdio_card_e_x.html',1,'']]], - ['sdios_2eh',['sdios.h',['../sdios_8h.html',1,'']]], - ['sdspicard',['SdSpiCard',['../class_sd_spi_card.html',1,'SdSpiCard'],['../class_sd_spi_card.html#a0441c5da53bd3bd72fb833fc940f25e8',1,'SdSpiCard::SdSpiCard()']]], - ['sdspicard_2eh',['SdSpiCard.h',['../_sd_spi_card_8h.html',1,'']]], - ['sdspicardex',['SdSpiCardEX',['../class_sd_spi_card_e_x.html',1,'']]], - ['sectorspercluster',['sectorsPerCluster',['../structbios_parm_block.html#a45d5e2d8c93a028a074e8ce3dc751ab5',1,'biosParmBlock::sectorsPerCluster()'],['../structfat__boot.html#ab3063726125b16a2ccad719548d79abd',1,'fat_boot::sectorsPerCluster()'],['../structfat32__boot.html#a63ded2780732f166f7b7d36bc6aed702',1,'fat32_boot::sectorsPerCluster()']]], - ['sectorsperfat16',['sectorsPerFat16',['../structbios_parm_block.html#a24d6e5a9069491d5db6dbe747336985b',1,'biosParmBlock::sectorsPerFat16()'],['../structfat__boot.html#a0d5ab13399759acfa571e49b85600db1',1,'fat_boot::sectorsPerFat16()'],['../structfat32__boot.html#aeaa78272cd42b162ea448e1642f75cab',1,'fat32_boot::sectorsPerFat16()']]], - ['sectorsperfat32',['sectorsPerFat32',['../structbios_parm_block.html#ad80429df03a6b80f79b18cb6e1008d64',1,'biosParmBlock::sectorsPerFat32()'],['../structfat32__boot.html#aa00db084ff2f7e25febef321469adeb9',1,'fat32_boot::sectorsPerFat32()']]], - ['sectorspertrack',['sectorsPerTrack',['../structfat__boot.html#a6d5ceaf374e0607be8b8162bf657f282',1,'fat_boot::sectorsPerTrack()'],['../structfat32__boot.html#a9525b2e63f84a5cf62ea20199cedf5de',1,'fat32_boot::sectorsPerTrack()']]], - ['sectorspertrtack',['sectorsPerTrtack',['../structbios_parm_block.html#a7c27cb7f66c2c9d5266d896e8df227c7',1,'biosParmBlock']]], - ['seek',['seek',['../class_file.html#a2d41ea52356b769e05e1242685758c08',1,'File']]], - ['seek_5fcur',['SEEK_CUR',['../_stdio_stream_8h.html#a4c8d0b76b470ba65a43ca46a88320f39',1,'StdioStream.h']]], - ['seek_5fend',['SEEK_END',['../_stdio_stream_8h.html#ad2a2e6c114780c3071efd24f16c7f7d8',1,'StdioStream.h']]], - ['seek_5fset',['SEEK_SET',['../_stdio_stream_8h.html#a0d112bae8fd35be772185b6ec6bcbe64',1,'StdioStream.h']]], - ['seekcur',['seekCur',['../class_fat_file.html#a5812037ea30777cc350698ad26f2c73f',1,'FatFile']]], - ['seekdir',['seekdir',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191e',1,'ios_base']]], - ['seekend',['seekEnd',['../class_fat_file.html#a84f677f4e75ef6fa2eb632f4cdf6b486',1,'FatFile']]], - ['seekg',['seekg',['../classistream.html#a52d637b1aeca9946085a4a72e0208aec',1,'istream::seekg(pos_type pos)'],['../classistream.html#a60dd48a3b374fb9cbdc59e1f930dea95',1,'istream::seekg(off_type off, seekdir way)']]], - ['seekp',['seekp',['../classostream.html#a18b453d2770a8852c312cbda919c4687',1,'ostream::seekp(pos_type pos)'],['../classostream.html#af6265a5be29237517b30673667ba4213',1,'ostream::seekp(off_type off, seekdir way)']]], - ['seekset',['seekSet',['../class_fat_file.html#ab067190d25733ed7e697d9890f61fd7a',1,'FatFile']]], - ['seqpos',['seqPos',['../structfname__t.html#a96b7c779dec8dd568be3290451078a4e',1,'fname_t']]], - ['setcwd',['setCwd',['../class_fat_file.html#a360ef9c05e677271bed6c0a4d663634c',1,'FatFile']]], - ['setf',['setf',['../classios__base.html#ab5db835cb45bba7684ebf72d9a3cccb4',1,'ios_base::setf(fmtflags fl)'],['../classios__base.html#a74dbc93607ab7d68a87ec326b92b6c81',1,'ios_base::setf(fmtflags fl, fmtflags mask)']]], - ['setfill',['setfill',['../structsetfill.html',1,'setfill'],['../structsetfill.html#abcd87f0632678d277df55406d25c8325',1,'setfill::setfill()']]], - ['setpos',['setpos',['../class_fat_file.html#acf264de4e3ca36c5e8a39e56173c9044',1,'FatFile']]], - ['setprecision',['setprecision',['../structsetprecision.html',1,'setprecision'],['../structsetprecision.html#a73fce143591989f56ef887a2ea86ac45',1,'setprecision::setprecision()']]], - ['setstate',['setstate',['../classios.html#aee5d194656bdfb0c8621b23ea2f51afb',1,'ios']]], - ['setw',['setw',['../structsetw.html',1,'setw'],['../structsetw.html#afd8bfd075474f63df3c8b44ad47517d2',1,'setw::setw()']]], - ['sfn',['sfn',['../structfname__t.html#a37ed0c108b1feb81be4f8c041a4336bd',1,'fname_t']]], - ['showbase',['showbase',['../classios__base.html#a7e3373ab307feecfc228bc9bdb29cd01',1,'ios_base::showbase()'],['../ios_8h.html#a73159e1398939807aeae6015dd86f2f4',1,'showbase(): ios.h']]], - ['showpoint',['showpoint',['../classios__base.html#ac9bb172682e157f037bd7fb82a236ee6',1,'ios_base::showpoint()'],['../ios_8h.html#a322f5897ace09768cd782f0c8f222770',1,'showpoint(): ios.h']]], - ['showpos',['showpos',['../classios__base.html#a7bfa4a883933105d10f8ce2693cb9f21',1,'ios_base::showpos()'],['../ios_8h.html#a80798554dbfece679adb0e05eb855943',1,'showpos(): ios.h']]], - ['size',['size',['../class_file.html#a603d3cd3319142d00a7ebd434970b017',1,'File']]], - ['skipwhite',['skipWhite',['../classistream.html#a0f7468be86d93de5d33fa99095898279',1,'istream']]], - ['skipws',['skipws',['../classios__base.html#a64977c777d6e45826d1be9763f17f824',1,'ios_base::skipws()'],['../ios_8h.html#a972282e5d9d894f61c8a54423858c0a4',1,'skipws(): ios.h']]], - ['spistart',['spiStart',['../class_sd_spi_card.html#aa39feb6ebb269071ac6843a424ac311c',1,'SdSpiCard']]], - ['spistop',['spiStop',['../class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1',1,'SdSpiCard']]], - ['stdiostream',['StdioStream',['../class_stdio_stream.html',1,'StdioStream'],['../class_stdio_stream.html#a96b2c027e76bfca6d6835c9ae1be2ad2',1,'StdioStream::StdioStream()']]], - ['stdiostream_2eh',['StdioStream.h',['../_stdio_stream_8h.html',1,'']]], - ['stream_5fbuf_5fsize',['STREAM_BUF_SIZE',['../_stdio_stream_8h.html#ad9a6150ef11e2616c1a99bc777df17d3',1,'StdioStream.h']]], - ['streamsize',['streamsize',['../classios__base.html#a82836e1d3cc603fba8f0b54d323a2dff',1,'ios_base']]], - ['structsignature',['structSignature',['../structfat32__fsinfo.html#aa4a9ed657a0f58a7a1c75760c3a79fd4',1,'fat32_fsinfo']]], - ['sync',['sync',['../class_fat_file.html#a67f3dc4896c542d695e11aac927f585e',1,'FatFile::sync()'],['../class_fat_cache.html#a4d76d4f46ce5994f6fc4678a7b4f8cf1',1,'FatCache::sync()']]], - ['syncblocks',['syncBlocks',['../class_base_block_driver.html#a5361ff2658d7654bf00b97c54c6aa2aa',1,'BaseBlockDriver::syncBlocks()'],['../class_sdio_card.html#affcd36a5c3a42042fe24716671f06632',1,'SdioCard::syncBlocks()'],['../class_sdio_card_e_x.html#a02699a39ef940441ef0f1049742c5aa7',1,'SdioCardEX::syncBlocks()'],['../class_sd_spi_card.html#a1b6d5f412c4ad75c2f575ca75c56c095',1,'SdSpiCard::syncBlocks()'],['../class_sd_spi_card_e_x.html#af4a7c15bae6add50d66d066c0927a021',1,'SdSpiCardEX::syncBlocks()']]], - ['syscall',['SysCall',['../class_sys_call.html',1,'']]], - ['syscall_2eh',['SysCall.h',['../_sys_call_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_13.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_13.html deleted file mode 100644 index 04f66e2f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_13.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_13.js deleted file mode 100644 index aaf59419..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_13.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['tailsignature',['tailSignature',['../structfat32__fsinfo.html#a484dd16425e4e687dc914d12309470e0',1,'fat32_fsinfo']]], - ['tellg',['tellg',['../classistream.html#a18332bdcb7fbe33ca06045c786cac4c3',1,'istream']]], - ['tellp',['tellp',['../classostream.html#a92dec0e2bc8352df1419d1cdc434e619',1,'ostream']]], - ['timestamp',['timestamp',['../class_fat_file.html#aa53a8d1d2467ad9af7d61cbf8ee85243',1,'FatFile::timestamp(FatFile *file)'],['../class_fat_file.html#a56dabdf73833b7e961c4530eb8e16d23',1,'FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)']]], - ['totalsectors',['totalSectors',['../structpartition_table.html#acf96e59ce648a9a0cf35751c3b6d7730',1,'partitionTable']]], - ['totalsectors16',['totalSectors16',['../structbios_parm_block.html#a686c686fde2fb109bea120f2f434db87',1,'biosParmBlock::totalSectors16()'],['../structfat__boot.html#ac8bd40dd9186882e423e10b0c83e89b7',1,'fat_boot::totalSectors16()'],['../structfat32__boot.html#acbcae2f15475a886f674f932da1deb3f',1,'fat32_boot::totalSectors16()']]], - ['totalsectors32',['totalSectors32',['../structbios_parm_block.html#abead42e130c40e2aa535202e7cb07578',1,'biosParmBlock::totalSectors32()'],['../structfat__boot.html#addeb2dd8f78418edbf544303d44133e2',1,'fat_boot::totalSectors32()'],['../structfat32__boot.html#ab79466016103c2762c6b057dd458d434',1,'fat32_boot::totalSectors32()']]], - ['trunc',['trunc',['../classios__base.html#ae62b8972f37509819e1384214071194b',1,'ios_base']]], - ['truncate',['truncate',['../class_fat_file.html#aa6e663098a578635d37d92e82d18d616',1,'FatFile::truncate()'],['../class_fat_file_system.html#ad60cb13557f35578f868e03e9ccb8be1',1,'FatFileSystem::truncate()']]], - ['type',['type',['../structpartition_table.html#a3861cf276c728c4dd30ca04e74197ee8',1,'partitionTable::type()'],['../structlong_directory_entry.html#a9adb019dbf24cce65c8d1419cd000f91',1,'longDirectoryEntry::type()'],['../class_sdio_card.html#a2151106a93280ae41bab654428214661',1,'SdioCard::type()'],['../class_sd_spi_card.html#a48f1e3f107d7242518bdfed78acb46bc',1,'SdSpiCard::type()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_14.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_14.html deleted file mode 100644 index 285f34bd..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_14.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_14.js deleted file mode 100644 index d732d327..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_14.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['ungetc',['ungetc',['../class_stdio_stream.html#ac00e0dd906c2e857ece53794c6c92786',1,'StdioStream']]], - ['ungetc_5fbuf_5fsize',['UNGETC_BUF_SIZE',['../_stdio_stream_8h.html#a785dd413c0d7b05f95df82d3453ecacd',1,'StdioStream.h']]], - ['unsetf',['unsetf',['../classios__base.html#a3bf7d054a433ed15e8b984e16f630fa4',1,'ios_base']]], - ['uppercase',['uppercase',['../classios__base.html#ade3db1fe3249e87f4c47a9a8916793d9',1,'ios_base::uppercase()'],['../ios_8h.html#af5d5e1a0effa1b500bb882feed5a2061',1,'uppercase(): ios.h']]], - ['use_5ffcntl_5fh',['USE_FCNTL_H',['../_sd_fat_config_8h.html#ab4b7255422e65730612f1f6af1a26752',1,'SdFatConfig.h']]], - ['use_5flong_5ffile_5fnames',['USE_LONG_FILE_NAMES',['../_sd_fat_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): FatLibConfig.h']]], - ['use_5fmulti_5fblock_5fio',['USE_MULTI_BLOCK_IO',['../_sd_fat_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): SdFatConfig.h'],['../_fat_lib_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): FatLibConfig.h']]], - ['use_5fsd_5fcrc',['USE_SD_CRC',['../_sd_fat_config_8h.html#af2e76ffb2fdb830175abf513dd640fdd',1,'SdFatConfig.h']]], - ['use_5fseparate_5ffat_5fcache',['USE_SEPARATE_FAT_CACHE',['../_sd_fat_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): FatLibConfig.h']]], - ['use_5fstandard_5fspi_5flibrary',['USE_STANDARD_SPI_LIBRARY',['../_sd_fat_config_8h.html#a3dc42547ca4567cb789bec55759afeb2',1,'SdFatConfig.h']]], - ['usuallyzero',['usuallyZero',['../structmaster_boot_record.html#afacfc863e98f64053cd9459c6dec948f',1,'masterBootRecord']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_15.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_15.html deleted file mode 100644 index 0ed74e01..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_15.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_15.js deleted file mode 100644 index f19dcfb3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_15.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['vol',['vol',['../class_fat_file_system.html#a4ca68fe47bb675df0a80df1ed7a53698',1,'FatFileSystem']]], - ['volume',['volume',['../class_fat_file.html#ae813920a21860b25f25d95c934dada0f',1,'FatFile']]], - ['volumeblockcount',['volumeBlockCount',['../class_fat_volume.html#ada9f893c796559c132ef9da061f04a39',1,'FatVolume']]], - ['volumelabel',['volumeLabel',['../structfat__boot.html#a9ee733f1b1abc0210ec8f9676bba2218',1,'fat_boot::volumeLabel()'],['../structfat32__boot.html#a8e6349f46344145a7320637a58107b3b',1,'fat32_boot::volumeLabel()']]], - ['volumeserialnumber',['volumeSerialNumber',['../structfat__boot.html#ac05e88a0d27f0340ba008834361d2b20',1,'fat_boot::volumeSerialNumber()'],['../structfat32__boot.html#a20768678da224faefd8acf12cabdbfb8',1,'fat32_boot::volumeSerialNumber()']]], - ['vwd',['vwd',['../class_fat_file_system.html#acf257d02b7166683bda2abc5058004bf',1,'FatFileSystem']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_16.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_16.html deleted file mode 100644 index 696f0252..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_16.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_16.js deleted file mode 100644 index 3f333e17..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_16.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['w',['w',['../structsetw.html#ab48d915a24d3f3365c9eb76e138a6f4e',1,'setw']]], - ['wdt_5fyield_5ftime_5fmicros',['WDT_YIELD_TIME_MICROS',['../_sd_fat_config_8h.html#a4e8a928d86c50c91c0bfc9a442373e14',1,'SdFatConfig.h']]], - ['width',['width',['../classios__base.html#afa30e7644b4eae5928ad9c487ad387de',1,'ios_base::width()'],['../classios__base.html#ab2ba0f005bbf3d8ebed93b64068492e0',1,'ios_base::width(unsigned n)']]], - ['wipe',['wipe',['../class_fat_file_system.html#a36d7831f92acfbfef1c4a24dd7103dc4',1,'FatFileSystem::wipe()'],['../class_fat_volume.html#a8088aa74cf601996905dadd2eea6966c',1,'FatVolume::wipe()']]], - ['write',['write',['../class_minimum_serial.html#a0ca1d9631fe5f2f00878bd481dbbd3aa',1,'MinimumSerial::write()'],['../class_print_file.html#a460b033ff85e85f684f8d9b615645db1',1,'PrintFile::write(uint8_t b)'],['../class_print_file.html#a29c1d534d21c3a82ad04232d37119a57',1,'PrintFile::write(const uint8_t *buf, size_t size)'],['../class_file.html#a618a6b2b7e81bfb93e0d3c158f614f90',1,'File::write(uint8_t b)'],['../class_file.html#aa531c1641a2363e1f6b9d103f37433da',1,'File::write(const uint8_t *buf, size_t size)'],['../class_fat_file.html#aa4a5b81161994cea07938702cdfce49f',1,'FatFile::write(const char *str)'],['../class_fat_file.html#a5524bd9f3b8f54ee163e391cba618186',1,'FatFile::write(uint8_t b)'],['../class_fat_file.html#a0ab9df44a9ee4b6eb0a78f15f1e30004',1,'FatFile::write(const void *buf, size_t nbyte)']]], - ['writeblock',['writeBlock',['../class_base_block_driver.html#a87df3db1b400286883661525441d39fa',1,'BaseBlockDriver::writeBlock()'],['../class_sdio_card.html#ae53e5f72ddf9ace3f47774d968e064ed',1,'SdioCard::writeBlock()'],['../class_sdio_card_e_x.html#ab34379d6663461dd0000180e640b73be',1,'SdioCardEX::writeBlock()'],['../class_sd_spi_card.html#a03a0bdb0f37a88076f24a2133cf5b4ed',1,'SdSpiCard::writeBlock()'],['../class_sd_spi_card_e_x.html#a6bd5e6bcfc2ab9574daa11bdd342be7b',1,'SdSpiCardEX::writeBlock()']]], - ['writeblocks',['writeBlocks',['../class_base_block_driver.html#a3d6520b21252ebfb17b0cac0b87689b1',1,'BaseBlockDriver::writeBlocks()'],['../class_sdio_card.html#a8b811f875497e90e75fbe6c2d41d89cb',1,'SdioCard::writeBlocks()'],['../class_sdio_card_e_x.html#a0e504921296a473da074d4a60d573f29',1,'SdioCardEX::writeBlocks()'],['../class_sd_spi_card.html#a181d96fe44891b7caabcd47dd29ac913',1,'SdSpiCard::writeBlocks()'],['../class_sd_spi_card_e_x.html#a9a7a5815b56c2cc77590a72635593762',1,'SdSpiCardEX::writeBlocks()']]], - ['writedata',['writeData',['../class_sdio_card.html#a8467e7ffafa45ff930b38a6f18e9547a',1,'SdioCard::writeData()'],['../class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa',1,'SdSpiCard::writeData()']]], - ['writestart',['writeStart',['../class_sdio_card.html#a6216b2b1c42bd585669955f774292f78',1,'SdioCard::writeStart(uint32_t lba)'],['../class_sdio_card.html#a55b31eb21c986c8476bf42e975801e05',1,'SdioCard::writeStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a56d4750a5d2f693943eec985cb61ffe2',1,'SdSpiCard::writeStart(uint32_t blockNumber)'],['../class_sd_spi_card.html#a8bf0dc991308dcd2a7427bad89a9e2ba',1,'SdSpiCard::writeStart(uint32_t blockNumber, uint32_t eraseCount)']]], - ['writestop',['writeStop',['../class_sdio_card.html#acb560c2ea1f30c646b96f02e728b0fe1',1,'SdioCard::writeStop()'],['../class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0',1,'SdSpiCard::writeStop()']]], - ['ws',['ws',['../iostream_8h.html#a8adf4c714b8c8f201dedc83ee04556b1',1,'iostream.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_17.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_17.html deleted file mode 100644 index f1e14b63..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_17.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_17.js deleted file mode 100644 index 685c4a73..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['yield',['yield',['../class_sys_call.html#a2219ba5ea8e411b022a3a00df5f380e0',1,'SysCall']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_2.html deleted file mode 100644 index 2f17735e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_2.js deleted file mode 100644 index fdc13ef7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_2.js +++ /dev/null @@ -1,32 +0,0 @@ -var searchData= -[ - ['bad',['bad',['../classios.html#a78be4e3069a644ff36d83a70b080c321',1,'ios']]], - ['badbit',['badbit',['../classios__base.html#ac8c2c8f2f6bc9e6ce101c20e88ebce35',1,'ios_base']]], - ['baseblockdriver',['BaseBlockDriver',['../class_base_block_driver.html',1,'']]], - ['basefield',['basefield',['../classios__base.html#a75ce5482aa207d7aa0265d138b50a102',1,'ios_base']]], - ['beg',['beg',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea6639b4dd9e9b57ffef4a176cd1a1e7bb',1,'ios_base']]], - ['begin',['begin',['../class_minimum_serial.html#a5c56beb3472bb97f949defeecacda52c',1,'MinimumSerial::begin()'],['../class_sd_file_system.html#ad94237ef45c52698e97b04e8c131f21e',1,'SdFileSystem::begin()'],['../class_sd_fat.html#abfafe10a64b28e6c1698ed82d340f624',1,'SdFat::begin()'],['../class_sd_fat_sdio.html#ac742b37bd8f2f4eb4df44b37c98398e0',1,'SdFatSdio::begin()'],['../class_sd_fat_sdio_e_x.html#a5af596a3788fa3c321a6cce2fc4e2824',1,'SdFatSdioEX::begin()'],['../class_sd_fat_soft_spi.html#a061019e4b5e17fad3cf8b0e3a08532e4',1,'SdFatSoftSpi::begin()'],['../class_sd_fat_e_x.html#a25acc97272c6004a6a4118bacef07467',1,'SdFatEX::begin()'],['../class_sd_fat_soft_spi_e_x.html#af84b3a6a61dd4c7f3c2c4bb17a8a6609',1,'SdFatSoftSpiEX::begin()'],['../class_sd2_card.html#a8506e1a2d7c4d8ec3f26e8b62ea81cd7',1,'Sd2Card::begin()'],['../class_fat_file_system.html#a5dda20d3dcbfc8c641babbb2c9aac382',1,'FatFileSystem::begin()'],['../class_sdio_card.html#ac749bdad92a4465d062f5d21a7f4faf5',1,'SdioCard::begin()'],['../class_sdio_card_e_x.html#adf877d2c8641cdbd52657004c34ec18a',1,'SdioCardEX::begin()'],['../class_sd_spi_card.html#a824cd60ef8ac2b06262597d6f30a4ea7',1,'SdSpiCard::begin()'],['../class_sd_spi_card_e_x.html#a4fd0b23d230c6ad7dc406e798bbd5470',1,'SdSpiCardEX::begin()']]], - ['begincylinderhigh',['beginCylinderHigh',['../structpartition_table.html#a744f0c7f9ad4c426b10de085b4f52392',1,'partitionTable']]], - ['begincylinderlow',['beginCylinderLow',['../structpartition_table.html#a941fcb4df298f5f73ccca011bf40787a',1,'partitionTable']]], - ['beginhead',['beginHead',['../structpartition_table.html#a7d426694b8cf2151ae38568670a8c845',1,'partitionTable']]], - ['beginsector',['beginSector',['../structpartition_table.html#ae201c11d9671c9efc307c654a2b6c026',1,'partitionTable']]], - ['binary',['binary',['../classios__base.html#ac99947c17c2936d15243671366605602',1,'ios_base']]], - ['biosparmblock',['biosParmBlock',['../structbios_parm_block.html',1,'']]], - ['block',['block',['../class_fat_cache.html#ab3d9c4f94af61065b6d6d0892827fd8a',1,'FatCache']]], - ['blockdriver',['BlockDriver',['../_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb',1,'BlockDriver.h']]], - ['blockdriver_2eh',['BlockDriver.h',['../_block_driver_8h.html',1,'']]], - ['blockspercluster',['blocksPerCluster',['../class_fat_volume.html#af6ab43bc0853febb38298406c4067a43',1,'FatVolume']]], - ['blocksperfat',['blocksPerFat',['../class_fat_volume.html#adb87da3b10344f28a92dfade492b8398',1,'FatVolume']]], - ['boolalpha',['boolalpha',['../classios__base.html#afa74acd95d4bbc7cc3551251aac2bf00',1,'ios_base::boolalpha()'],['../ios_8h.html#a0016daaaf730481e2ad36972fa7abb17',1,'boolalpha(): ios.h']]], - ['boot',['boot',['../structpartition_table.html#adf386afb1f33046d8b6a1a0afa780ec9',1,'partitionTable']]], - ['bootcode',['bootCode',['../structfat__boot.html#acf9f5d9f61a6e680e11849f957ecf782',1,'fat_boot::bootCode()'],['../structfat32__boot.html#a7a74880066860140386edf3d9278b9f7',1,'fat32_boot::bootCode()']]], - ['bootsectorsig0',['bootSectorSig0',['../structfat__boot.html#a7951b888af4f357b84dd40af2ef7f29d',1,'fat_boot::bootSectorSig0()'],['../structfat32__boot.html#a1cb46a5427b641a6017a082bc56df1be',1,'fat32_boot::bootSectorSig0()']]], - ['bootsectorsig1',['bootSectorSig1',['../structfat__boot.html#afe8f58668ff594bb2022ce7c06b7726c',1,'fat_boot::bootSectorSig1()'],['../structfat32__boot.html#a53bc302a398f02a86d3b28f25a5ec8e2',1,'fat32_boot::bootSectorSig1()']]], - ['bootsig0',['BOOTSIG0',['../_fat_structs_8h.html#acb7f0c892eb84c121c5698b2605e95e3',1,'FatStructs.h']]], - ['bootsig1',['BOOTSIG1',['../_fat_structs_8h.html#a52f90172e11e828b411c803f29853753',1,'FatStructs.h']]], - ['bootsignature',['bootSignature',['../structfat__boot.html#a712dc388c530e91e4a692e7102d6bdc8',1,'fat_boot::bootSignature()'],['../structfat32__boot.html#ab79a1205277ecab05526fb0bac6e42f6',1,'fat32_boot::bootSignature()']]], - ['bpb_5ft',['bpb_t',['../_fat_structs_8h.html#a5c8af240713e05e7e6c959006ced35fb',1,'FatStructs.h']]], - ['buf',['buf',['../classobufstream.html#a4f699181bd3727f4288f4f95a5ce207f',1,'obufstream']]], - ['bufstream_2eh',['bufstream.h',['../bufstream_8h.html',1,'']]], - ['bytespersector',['bytesPerSector',['../structbios_parm_block.html#aec24d316af486445d55da14cbbfa6bf4',1,'biosParmBlock::bytesPerSector()'],['../structfat__boot.html#a60b2461f8ebf0ad295a95094e1bd7d65',1,'fat_boot::bytesPerSector()'],['../structfat32__boot.html#a03c7086a8c988257a6678179a67a3fee',1,'fat32_boot::bytesPerSector()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_3.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_3.html deleted file mode 100644 index a3e6f7db..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_3.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_3.js deleted file mode 100644 index e7254c50..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_3.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['c',['c',['../structsetfill.html#a42ffb4e6135c1274ae827cfed7793a82',1,'setfill']]], - ['cache_5ffor_5fread',['CACHE_FOR_READ',['../class_fat_cache.html#ab4b446515ff9a0cebc747630ddd10c93',1,'FatCache']]], - ['cache_5ffor_5fwrite',['CACHE_FOR_WRITE',['../class_fat_cache.html#a81cb572f33443bd6aee9aa33ec395d0f',1,'FatCache']]], - ['cache_5foption_5fno_5fread',['CACHE_OPTION_NO_READ',['../class_fat_cache.html#adf974f55e53ee0aaa85abb0d7d67181c',1,'FatCache']]], - ['cache_5freserve_5ffor_5fwrite',['CACHE_RESERVE_FOR_WRITE',['../class_fat_cache.html#a49d2896ff525ab77852f76df5c2a09c2',1,'FatCache']]], - ['cache_5fstatus_5fdirty',['CACHE_STATUS_DIRTY',['../class_fat_cache.html#aac8c38e5c545d0f80b13d816117f626e',1,'FatCache']]], - ['cache_5fstatus_5fmask',['CACHE_STATUS_MASK',['../class_fat_cache.html#ab70dc4a2e387f0e9bf392044c702ae32',1,'FatCache']]], - ['cache_5fstatus_5fmirror_5ffat',['CACHE_STATUS_MIRROR_FAT',['../class_fat_cache.html#a45236e1c0a2a098f08d3add0e4b1467a',1,'FatCache']]], - ['cache_5ft',['cache_t',['../unioncache__t.html',1,'']]], - ['cacheclear',['cacheClear',['../class_fat_volume.html#aa1e3b1d0c21d202deb82668068ab00e8',1,'FatVolume']]], - ['card',['card',['../class_sd_file_system.html#ab5dcfbeeb7caa38a38db86003341eb07',1,'SdFileSystem::card()'],['../class_sd_fat_sdio_e_x.html#ac3fe2fd93b491918ec77308ec7c0290c',1,'SdFatSdioEX::card()']]], - ['cardbegin',['cardBegin',['../class_sd_fat.html#ae380e4572776db851b2f80a3ed143fca',1,'SdFat::cardBegin()'],['../class_sd_fat_sdio.html#ac49062cc8fb2a42564d0ff05b4c0be8b',1,'SdFatSdio::cardBegin()'],['../class_sd_fat_sdio_e_x.html#a18f3cf979d7e72105c4642b0ebb56324',1,'SdFatSdioEX::cardBegin()']]], - ['carderrorcode',['cardErrorCode',['../class_sd_file_system.html#aedfd5a0830c955bc5514e52f2f2dd066',1,'SdFileSystem']]], - ['carderrordata',['cardErrorData',['../class_sd_file_system.html#a0602ab3c04ea33293649f0a15fc81e05',1,'SdFileSystem']]], - ['cardsize',['cardSize',['../class_sdio_card.html#a3d8f9a92f7faec77094ec65e6c41dd45',1,'SdioCard::cardSize()'],['../class_sd_spi_card.html#afca8bd6b7e465bf9c475ba375c4deec8',1,'SdSpiCard::cardSize()']]], - ['chdir',['chdir',['../class_fat_file_system.html#a5667915e63187a43a71dfada63800865',1,'FatFileSystem::chdir(bool set_cwd=false)'],['../class_fat_file_system.html#a44af1b98e8d986d12107b654453acbc4',1,'FatFileSystem::chdir(const char *path, bool set_cwd=false)']]], - ['check_5fflash_5fprogramming',['CHECK_FLASH_PROGRAMMING',['../_sd_fat_config_8h.html#a63747c9ac4e3d78579690cf9eb38c4df',1,'SdFatConfig.h']]], - ['chksum',['chksum',['../structlong_directory_entry.html#a60c35531bc0e12f2d764d290244f8cc9',1,'longDirectoryEntry']]], - ['chvol',['chvol',['../class_fat_file_system.html#af24917d6e00c8766dab168eb834047ec',1,'FatFileSystem']]], - ['clear',['clear',['../classfstream.html#a682b278a6a299ffb21b8737717ff12bf',1,'fstream::clear()'],['../classofstream.html#a09edfdb3dbda20aff105e751001313f0',1,'ofstream::clear()'],['../classios.html#aa49ed6670d1743e7a373b2d915ec739a',1,'ios::clear()']]], - ['clearerr',['clearerr',['../class_stdio_stream.html#aa737e5680fc2808a03a603ea8559d82b',1,'StdioStream']]], - ['clearerror',['clearError',['../class_fat_file.html#a052e2c15a39b322a5307b693b8835b22',1,'FatFile']]], - ['clearwriteerror',['clearWriteError',['../class_fat_file.html#aeca2a2eff91e6aa55fe1b0e3860c9a05',1,'FatFile']]], - ['close',['close',['../class_fat_file.html#afd16af325e0642e4bff6430b7d8bb18b',1,'FatFile::close()'],['../classfstream.html#ac5720ee620c09d63dd186823e688ea9a',1,'fstream::close()'],['../classifstream.html#ac5892f472afdef6160f5fe2401b16dce',1,'ifstream::close()'],['../classofstream.html#a240f3752c7ff7a78d10c143d2083715f',1,'ofstream::close()']]], - ['cluster',['cluster',['../struct_fat_pos__t.html#a7b50657b0debaf0e6231af2c74a655fe',1,'FatPos_t']]], - ['clustercount',['clusterCount',['../class_fat_volume.html#ae724879a554174e31a737f73da418009',1,'FatVolume']]], - ['clustersizeshift',['clusterSizeShift',['../class_fat_volume.html#ab36468240ef6846578ad7f58d1bc41ac',1,'FatVolume']]], - ['codearea',['codeArea',['../structmaster_boot_record.html#a26ca1fb4ebbff2cc1a54153b1dfcd688',1,'masterBootRecord']]], - ['contiguousrange',['contiguousRange',['../class_fat_file.html#aa367708bcc8bc0e0c45c0c2a812c65da',1,'FatFile']]], - ['createcontiguous',['createContiguous',['../class_fat_file.html#a0afc2a1cffa238d1cb2049bfa2d8d199',1,'FatFile::createContiguous(FatFile *dirFile, const char *path, uint32_t size)'],['../class_fat_file.html#a0853fbd44aee2798d14d8e3aed78f8bf',1,'FatFile::createContiguous(const char *path, uint32_t size)']]], - ['creationdate',['creationDate',['../structdirectory_entry.html#a7b43372794655fe6604d3c17c02302fe',1,'directoryEntry']]], - ['creationtime',['creationTime',['../structdirectory_entry.html#a622bfa70c2cd9006108d7473d737a953',1,'directoryEntry']]], - ['creationtimetenths',['creationTimeTenths',['../structdirectory_entry.html#aa5e1ce5b411b88f005b28a3e7c7c5af6',1,'directoryEntry']]], - ['cur',['cur',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea53910041525b9e2f33bfc3bb4482134c',1,'ios_base']]], - ['curcluster',['curCluster',['../class_fat_file.html#a526f3dd56ce205690e45ffc86ef6f891',1,'FatFile']]], - ['curposition',['curPosition',['../class_fat_file.html#a97e0620949f97e9b9c91ed1094d728aa',1,'FatFile']]], - ['curtimems',['curTimeMS',['../_sys_call_8h.html#a7a1c5babdcf00c78d4d2e6a012bd9e68',1,'SysCall.h']]], - ['cwd',['cwd',['../class_fat_file.html#a3b68e603ad8e47bad915f0547e580adb',1,'FatFile']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_4.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_4.html deleted file mode 100644 index 6452295d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_4.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_4.js deleted file mode 100644 index 790bcc31..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_4.js +++ /dev/null @@ -1,42 +0,0 @@ -var searchData= -[ - ['data',['data',['../unioncache__t.html#ae675b7a3a87d809070de111d1d1f1d81',1,'cache_t']]], - ['datastartblock',['dataStartBlock',['../class_fat_volume.html#a55906112e0d151db3b144d29630f5066',1,'FatVolume']]], - ['datetimecallback',['dateTimeCallback',['../class_fat_file.html#a29a623f50df057e8b49045ba6611ec2b',1,'FatFile']]], - ['datetimecallbackcancel',['dateTimeCallbackCancel',['../class_fat_file.html#a5df02f1d037e6091375488af25244ebc',1,'FatFile']]], - ['dbgfat',['dbgFat',['../class_fat_volume.html#a25c6311b70fa274b3be94ff25fdebba7',1,'FatVolume']]], - ['dec',['dec',['../classios__base.html#a2826aed005e7c1f6858060cddae7971a',1,'ios_base::dec()'],['../ios_8h.html#ada38ab90e22f0ebb638cb864a35c562d',1,'dec(): ios.h']]], - ['destructor_5fcloses_5ffile',['DESTRUCTOR_CLOSES_FILE',['../_sd_fat_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): FatLibConfig.h']]], - ['dir',['dir',['../unioncache__t.html#a7396fdbdb7c52bd1d72c5329ff32acd1',1,'cache_t']]], - ['dir_5fatt_5farchive',['DIR_ATT_ARCHIVE',['../_fat_structs_8h.html#a0d0745a2bc191d12f6e3294a890c4b13',1,'FatStructs.h']]], - ['dir_5fatt_5fdefined_5fbits',['DIR_ATT_DEFINED_BITS',['../_fat_structs_8h.html#ad0c6ed5cf186a40f98cc3929b52cf8ee',1,'FatStructs.h']]], - ['dir_5fatt_5fdirectory',['DIR_ATT_DIRECTORY',['../_fat_structs_8h.html#a5fe039a9af7304fc97a0e903acd217f7',1,'FatStructs.h']]], - ['dir_5fatt_5ffile_5ftype_5fmask',['DIR_ATT_FILE_TYPE_MASK',['../_fat_structs_8h.html#af006ada1b85a9761dd9538273c1ee97f',1,'FatStructs.h']]], - ['dir_5fatt_5fhidden',['DIR_ATT_HIDDEN',['../_fat_structs_8h.html#aed394afe98ff4b7876a5815319b6ef94',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname',['DIR_ATT_LONG_NAME',['../_fat_structs_8h.html#a0039e1903007eb7383a9fe4b80a3569e',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname_5fmask',['DIR_ATT_LONG_NAME_MASK',['../_fat_structs_8h.html#a74ddbd24c315a682449a51a2a35adf39',1,'FatStructs.h']]], - ['dir_5fatt_5fread_5fonly',['DIR_ATT_READ_ONLY',['../_fat_structs_8h.html#ae5efa2fd21e8a563a3a45f8a52538cde',1,'FatStructs.h']]], - ['dir_5fatt_5fsystem',['DIR_ATT_SYSTEM',['../_fat_structs_8h.html#a31c7e5c119c9ebc1237746c985cf385d',1,'FatStructs.h']]], - ['dir_5fatt_5fvolume_5fid',['DIR_ATT_VOLUME_ID',['../_fat_structs_8h.html#a410501be78b30a75224dd4e81a4a1105',1,'FatStructs.h']]], - ['dir_5fis_5ffile',['DIR_IS_FILE',['../_fat_structs_8h.html#a5ce8bde4d6ff3950df951e84c7bb8d58',1,'FatStructs.h']]], - ['dir_5fis_5ffile_5for_5fsubdir',['DIR_IS_FILE_OR_SUBDIR',['../_fat_structs_8h.html#a9d99b04fa090825a9b9c2468fa81e627',1,'FatStructs.h']]], - ['dir_5fis_5fhidden',['DIR_IS_HIDDEN',['../_fat_structs_8h.html#a5137c8165addb9d32c6094d03a9d029d',1,'FatStructs.h']]], - ['dir_5fis_5flong_5fname',['DIR_IS_LONG_NAME',['../_fat_structs_8h.html#a504c3d996b412f386becc27a8c49cd2c',1,'FatStructs.h']]], - ['dir_5fis_5fsubdir',['DIR_IS_SUBDIR',['../_fat_structs_8h.html#ace8ed88fcb41afc4d2fe0eabf96e71c6',1,'FatStructs.h']]], - ['dir_5fis_5fsystem',['DIR_IS_SYSTEM',['../_fat_structs_8h.html#a46cad0d590c5e290c52ccf660b316dd9',1,'FatStructs.h']]], - ['dir_5fname_5f0xe5',['DIR_NAME_0XE5',['../_fat_structs_8h.html#a1696d3db9949d6e22d1c2c595fd14669',1,'FatStructs.h']]], - ['dir_5fname_5fdeleted',['DIR_NAME_DELETED',['../_fat_structs_8h.html#a8c08d4823047505f3231e86c5033d08c',1,'FatStructs.h']]], - ['dir_5fname_5ffree',['DIR_NAME_FREE',['../_fat_structs_8h.html#a0f1f0001102ae59b9e7c9e3b04cc06d8',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fbase',['DIR_NT_LC_BASE',['../_fat_structs_8h.html#a39f9b8960dba007b537e9b71c25384fe',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fext',['DIR_NT_LC_EXT',['../_fat_structs_8h.html#a8766a8bbab6ad3da38c1b308545d7572',1,'FatStructs.h']]], - ['dir_5ft',['dir_t',['../_fat_structs_8h.html#a803db59d4e16a0c54a647afc6a7954e3',1,'FatStructs.h']]], - ['directoryentry',['directoryEntry',['../structdirectory_entry.html',1,'']]], - ['direntry',['dirEntry',['../class_fat_file.html#a6858d18c807411a071fd6d1b39d50087',1,'FatFile']]], - ['dirindex',['dirIndex',['../class_fat_file.html#ae5ec24d4a94d3780384d3f2b731c7eb9',1,'FatFile']]], - ['dirname',['dirName',['../class_fat_file.html#a648461081fe07578780f4cd3f246cb66',1,'FatFile']]], - ['dirsize',['dirSize',['../class_fat_file.html#ae2ed15f05c9ccbce355e7a8d3ce8382d',1,'FatFile']]], - ['dirty',['dirty',['../class_fat_cache.html#ab4d3b0c16bb6a116c7d01afff2dcb307',1,'FatCache']]], - ['disksignature',['diskSignature',['../structmaster_boot_record.html#a77151c641444c0653ff71a253f0423ef',1,'masterBootRecord']]], - ['dmpfile',['dmpFile',['../class_fat_file.html#a4f01d27954ae49aeb6888ac7302f55d9',1,'FatFile']]], - ['drivenumber',['driveNumber',['../structfat__boot.html#aebd280b93563b75b9612d3db844b0d16',1,'fat_boot::driveNumber()'],['../structfat32__boot.html#aca415c1a6eb1c242d460a6d0ffa9ebec',1,'fat32_boot::driveNumber()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_5.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_5.html deleted file mode 100644 index e59e1d53..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_5.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_5.js deleted file mode 100644 index b4375180..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_5.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['enable_5farduino_5ffeatures',['ENABLE_ARDUINO_FEATURES',['../_fat_lib_config_8h.html#a9a8c1ea8596f35f7f33a24b642567206',1,'FatLibConfig.h']]], - ['enable_5fextended_5ftransfer_5fclass',['ENABLE_EXTENDED_TRANSFER_CLASS',['../_sd_fat_config_8h.html#aad4f0ecbc65cdc3a7be544225b44f86a',1,'SdFatConfig.h']]], - ['enable_5fsdio_5fclass',['ENABLE_SDIO_CLASS',['../_sd_fat_config_8h.html#a1d106f3a0ba8577abdcc9ce3961ef90b',1,'SdFatConfig.h']]], - ['enable_5fsoftware_5fspi_5fclass',['ENABLE_SOFTWARE_SPI_CLASS',['../_sd_fat_config_8h.html#acc3d779d87b785bb7236b9b3acf7e619',1,'SdFatConfig.h']]], - ['end',['end',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191eaae47c0ae984e90b38907783a1a804811',1,'ios_base']]], - ['endcylinderhigh',['endCylinderHigh',['../structpartition_table.html#a32fea225b8ffd925ad919ffc56e9abda',1,'partitionTable']]], - ['endcylinderlow',['endCylinderLow',['../structpartition_table.html#ad7829e34be70084abe145227b0d18274',1,'partitionTable']]], - ['endhead',['endHead',['../structpartition_table.html#a4a3945bfd3a29f474984cb9f180dbd51',1,'partitionTable']]], - ['endl',['endl',['../iostream_8h.html#ab9868f8e151efc1705646437dbb59bb2',1,'iostream.h']]], - ['endl_5fcalls_5fflush',['ENDL_CALLS_FLUSH',['../_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): FatLibConfig.h']]], - ['endsector',['endSector',['../structpartition_table.html#a27cdc4320c418ed0d833ab163ed77ad7',1,'partitionTable']]], - ['eof',['eof',['../classios.html#a7aa5ea2f670d64eb3dcb3b62eddd576c',1,'ios::eof()'],['../_stdio_stream_8h.html#a59adc4c82490d23754cd39c2fb99b0da',1,'EOF(): StdioStream.h']]], - ['eofbit',['eofbit',['../classios__base.html#af75072b7ef2a931c77a2cb8e7ccda460',1,'ios_base']]], - ['erase',['erase',['../class_sdio_card.html#a1ce82b035257790ed8e4a9be3d966b80',1,'SdioCard::erase()'],['../class_sdio_card_e_x.html#a58362f3ddf4bc5ce632cce6768b2d780',1,'SdioCardEX::erase()'],['../class_sd_spi_card.html#a1caa13d19df6596b2c0dd62365c75362',1,'SdSpiCard::erase()']]], - ['erasesingleblockenable',['eraseSingleBlockEnable',['../class_sd_spi_card.html#aed4591884254c9f58daa8738d7c1ccdd',1,'SdSpiCard']]], - ['error',['error',['../class_sd_spi_card.html#aa12ad53111abcb187d3c6119a3a77592',1,'SdSpiCard']]], - ['errorcode',['errorCode',['../class_sdio_card.html#a4ff272009a24fc4078ac87c2d87ccd16',1,'SdioCard::errorCode()'],['../class_sd_spi_card.html#a4c736fb8d6d9d734d5e262875c74f054',1,'SdSpiCard::errorCode()']]], - ['errordata',['errorData',['../class_sdio_card.html#a8251b9aa0d623487e80cf908fc1625b5',1,'SdioCard::errorData()'],['../class_sd_spi_card.html#a10bb2f65b1ca85ad14de19e61a283262',1,'SdSpiCard::errorData()']]], - ['errorhalt',['errorHalt',['../class_sd_file_system.html#a855267374306bfee2df67642c99d4d18',1,'SdFileSystem::errorHalt()'],['../class_sd_file_system.html#ae1f79a2974ebe134e70f898c32d97e98',1,'SdFileSystem::errorHalt(Print *pr)'],['../class_sd_file_system.html#a32c20dfa6a8cb8af95f25847b19bdbca',1,'SdFileSystem::errorHalt(char const *msg)'],['../class_sd_file_system.html#a27fb329d6aee79a63c20386218ce7e9e',1,'SdFileSystem::errorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#af856494745a9842d9728dfeabf19c51e',1,'SdFileSystem::errorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a746c80d048c30baf0b281e16932670a2',1,'SdFileSystem::errorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['errorline',['errorLine',['../class_sdio_card.html#aafa9feb1b5a90f3cf96456b6b286bfdf',1,'SdioCard']]], - ['errorprint',['errorPrint',['../class_sd_file_system.html#ab0b78154d6874c29279ba81f36ccb09c',1,'SdFileSystem::errorPrint()'],['../class_sd_file_system.html#a03736274debea71fef5e2ff34d7ec3dc',1,'SdFileSystem::errorPrint(Print *pr)'],['../class_sd_file_system.html#a2e2436b7b2666737cbaf4b22218bc69f',1,'SdFileSystem::errorPrint(const char *msg)'],['../class_sd_file_system.html#a0eb6b92a0700ba932f6127962981d153',1,'SdFileSystem::errorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#a1ccb1f937f42e9c1331c942bc357f6da',1,'SdFileSystem::errorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a43344a079d9af92ea4b550914d0512f6',1,'SdFileSystem::errorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['exists',['exists',['../class_fat_file.html#a50242f98dea0d4488ce4039a279f2a57',1,'FatFile::exists()'],['../class_fat_file_system.html#aee58c6352652f216577196e32a594b67',1,'FatFileSystem::exists()']]], - ['extended_5fboot_5fsig',['EXTENDED_BOOT_SIG',['../_fat_structs_8h.html#aefadfae26e4cc8d57c1ff727a9d1cd20',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_6.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_6.html deleted file mode 100644 index f75a754e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_6.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_6.js deleted file mode 100644 index 804b1804..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_6.js +++ /dev/null @@ -1,98 +0,0 @@ -var searchData= -[ - ['f',['F',['../_sys_call_8h.html#a0e3009529aac180ed5f48296d6670d6b',1,'SysCall.h']]], - ['fail',['fail',['../classios.html#a15269e67d05d4fe83a6cf344d542f8ae',1,'ios']]], - ['failbit',['failbit',['../classios__base.html#a36157154001bcce17827db6786e35efd',1,'ios_base']]], - ['fat12_5fsupport',['FAT12_SUPPORT',['../_sd_fat_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): FatLibConfig.h']]], - ['fat12eoc',['FAT12EOC',['../_fat_structs_8h.html#af314c45d1d37d09c9e44847326232466',1,'FatStructs.h']]], - ['fat12eoc_5fmin',['FAT12EOC_MIN',['../_fat_structs_8h.html#a48951911b522ebf72bf5561c3402aa15',1,'FatStructs.h']]], - ['fat16',['fat16',['../unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887',1,'cache_t']]], - ['fat16eoc',['FAT16EOC',['../_fat_structs_8h.html#afcd95ebc621a46c82b9997c8b9208550',1,'FatStructs.h']]], - ['fat16eoc_5fmin',['FAT16EOC_MIN',['../_fat_structs_8h.html#a2f549b850b74666ba7d922bcb373896e',1,'FatStructs.h']]], - ['fat32',['fat32',['../unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83',1,'cache_t']]], - ['fat32_5fboot',['fat32_boot',['../structfat32__boot.html',1,'']]], - ['fat32_5fboot_5ft',['fat32_boot_t',['../_fat_structs_8h.html#a38fa081d004647a828095d31b07ec491',1,'FatStructs.h']]], - ['fat32_5ffsinfo',['fat32_fsinfo',['../structfat32__fsinfo.html',1,'']]], - ['fat32_5ffsinfo_5ft',['fat32_fsinfo_t',['../_fat_structs_8h.html#a6030ed0fce3a819326a2548407fc8556',1,'FatStructs.h']]], - ['fat32backbootblock',['fat32BackBootBlock',['../structbios_parm_block.html#a7a4e93790b6e66f090c1551020b099bd',1,'biosParmBlock::fat32BackBootBlock()'],['../structfat32__boot.html#ac93acdae62dab5cd1f7a35187992dbf2',1,'fat32_boot::fat32BackBootBlock()']]], - ['fat32eoc',['FAT32EOC',['../_fat_structs_8h.html#a67a9dbf970f43fadd41a6a9fede60c47',1,'FatStructs.h']]], - ['fat32eoc_5fmin',['FAT32EOC_MIN',['../_fat_structs_8h.html#a8f97a312e990c3f4faf7e98c3256aae5',1,'FatStructs.h']]], - ['fat32flags',['fat32Flags',['../structbios_parm_block.html#a626ac3dc473d764688b8171916eecf44',1,'biosParmBlock::fat32Flags()'],['../structfat32__boot.html#aaa31a140202021bf33aed72765531b3f',1,'fat32_boot::fat32Flags()']]], - ['fat32fsinfo',['fat32FSInfo',['../structbios_parm_block.html#a25ea392d8284e6c1d007cb8fcad4b86c',1,'biosParmBlock::fat32FSInfo()'],['../structfat32__boot.html#a03ff6d1197c08688f20c7aad40206bc4',1,'fat32_boot::fat32FSInfo()']]], - ['fat32mask',['FAT32MASK',['../_fat_structs_8h.html#a7491c79fff0bda3b026ffa098a28d6df',1,'FatStructs.h']]], - ['fat32reserved',['fat32Reserved',['../structbios_parm_block.html#a351f87fe3446b1a71963a30bbdc23218',1,'biosParmBlock::fat32Reserved()'],['../structfat32__boot.html#a3343ad07c664fb7564d68c5194ea7da9',1,'fat32_boot::fat32Reserved()']]], - ['fat32rootcluster',['fat32RootCluster',['../structbios_parm_block.html#a77ca01bd99f746e05dd872cbd2979937',1,'biosParmBlock::fat32RootCluster()'],['../structfat32__boot.html#aa216677f22a95dd86ed2e61604883a13',1,'fat32_boot::fat32RootCluster()']]], - ['fat32version',['fat32Version',['../structbios_parm_block.html#abad4f6f0c14dad9f5b7d43de94e685e8',1,'biosParmBlock::fat32Version()'],['../structfat32__boot.html#a29c37e1163772493efb524c5ca0e1aa8',1,'fat32_boot::fat32Version()']]], - ['fat_5fboot',['fat_boot',['../structfat__boot.html',1,'']]], - ['fat_5fboot_5ft',['fat_boot_t',['../_fat_structs_8h.html#aedac4595ee08198da26c14b9891a07d5',1,'FatStructs.h']]], - ['fat_5fdate',['FAT_DATE',['../_fat_structs_8h.html#a44899ad42ddf32ff1c1a73b5251b304a',1,'FatStructs.h']]], - ['fat_5fday',['FAT_DAY',['../_fat_structs_8h.html#a4cc8bc105529bf9e9c11e8ef099d68b0',1,'FatStructs.h']]], - ['fat_5fdefault_5fdate',['FAT_DEFAULT_DATE',['../_fat_structs_8h.html#a42eeb0322bced1f7b527c707f8bd54a4',1,'FatStructs.h']]], - ['fat_5fdefault_5ftime',['FAT_DEFAULT_TIME',['../_fat_structs_8h.html#a23c2510407ec3be457e0e4807644deb2',1,'FatStructs.h']]], - ['fat_5fhour',['FAT_HOUR',['../_fat_structs_8h.html#ae7c733d49a5570054f6db3bd53332ba1',1,'FatStructs.h']]], - ['fat_5fminute',['FAT_MINUTE',['../_fat_structs_8h.html#a1b09676a41ae6c9e19664bdcd5b1d34e',1,'FatStructs.h']]], - ['fat_5fmonth',['FAT_MONTH',['../_fat_structs_8h.html#a429bc2d96f5bc26dc3bd6cc2bd535b84',1,'FatStructs.h']]], - ['fat_5fsecond',['FAT_SECOND',['../_fat_structs_8h.html#a4d553e2088d42e01d6c08ee84e611b00',1,'FatStructs.h']]], - ['fat_5ftime',['FAT_TIME',['../_fat_structs_8h.html#a375720927be5a39475d48b2d75dae29a',1,'FatStructs.h']]], - ['fat_5fyear',['FAT_YEAR',['../_fat_structs_8h.html#a279a75f907dd2603543c7bdad00ff603',1,'FatStructs.h']]], - ['fatcache',['FatCache',['../class_fat_cache.html',1,'FatCache'],['../class_fat_volume.html#a1e97a7aed860b898c403cb29455b3fe7',1,'FatVolume::FatCache()']]], - ['fatcount',['fatCount',['../structbios_parm_block.html#a7c03f147c3fb18f0df03d346050af13b',1,'biosParmBlock::fatCount()'],['../structfat__boot.html#a04d3b6a45acf28a80ff909dc1b33da2f',1,'fat_boot::fatCount()'],['../structfat32__boot.html#a7882fa8744bd171bfa1512bd442574bc',1,'fat32_boot::fatCount()'],['../class_fat_volume.html#acdedc6a200b01e401c9cd9b511eae6ec',1,'FatVolume::fatCount()']]], - ['fatfile',['FatFile',['../class_fat_file.html',1,'FatFile'],['../class_fat_volume.html#a18fb15a715ea85037ab802286853103e',1,'FatVolume::FatFile()'],['../class_fat_file.html#a7b591c9b92165fa8e4eae8c30c30e533',1,'FatFile::FatFile()'],['../class_fat_file.html#a38f9a296138648d6135cbbbf41ef6b92',1,'FatFile::FatFile(const char *path, oflag_t oflag)']]], - ['fatfile_2eh',['FatFile.h',['../_fat_file_8h.html',1,'']]], - ['fatfilesystem',['FatFileSystem',['../class_fat_file_system.html',1,'FatFileSystem'],['../class_fat_volume.html#ac095954ff68b78a07c0cf5fabbb2db6f',1,'FatVolume::FatFileSystem()']]], - ['fatfilesystem_2eh',['FatFileSystem.h',['../_fat_file_system_8h.html',1,'']]], - ['fatlibconfig_2eh',['FatLibConfig.h',['../_fat_lib_config_8h.html',1,'']]], - ['fatpos_5ft',['FatPos_t',['../struct_fat_pos__t.html',1,'']]], - ['fatstartblock',['fatStartBlock',['../class_fat_volume.html#a260bc030ab188a481dd34d6062f7b9d2',1,'FatVolume']]], - ['fatstreambase',['FatStreamBase',['../class_fat_stream_base.html',1,'']]], - ['fatstructs_2eh',['FatStructs.h',['../_fat_structs_8h.html',1,'']]], - ['fattype',['fatType',['../class_fat_volume.html#a0d736f0e8f03476b896307fbe5427376',1,'FatVolume']]], - ['fatvolume',['FatVolume',['../class_fat_volume.html',1,'FatVolume'],['../class_fat_volume.html#a026de2bb58026e4edea130db2949b84c',1,'FatVolume::FatVolume()']]], - ['fatvolume_2eh',['FatVolume.h',['../_fat_volume_8h.html',1,'']]], - ['fbs',['fbs',['../unioncache__t.html#ad1a4f1c0e8b8ca4d530427dbc920c764',1,'cache_t']]], - ['fbs32',['fbs32',['../unioncache__t.html#ad0613173ed4e83920eedfeb33102848a',1,'cache_t']]], - ['fclose',['fclose',['../class_stdio_stream.html#a4ddd4658d49182013d2fa2a181e96c5a',1,'StdioStream']]], - ['feof',['feof',['../class_stdio_stream.html#acb38c3211feedbf2206eb1d9a3a9d24f',1,'StdioStream']]], - ['ferror',['ferror',['../class_stdio_stream.html#afd64cec6440b923660b444f6d5f0586e',1,'StdioStream']]], - ['fflush',['fflush',['../class_stdio_stream.html#a7ce32ec7ea3f2fd8ea42b9633890f1c0',1,'StdioStream']]], - ['fgetc',['fgetc',['../class_stdio_stream.html#a160bd2828cb7e7370cffe1046eff8899',1,'StdioStream']]], - ['fgets',['fgets',['../class_fat_file.html#a31ef26b3ee37cf5f5f4c6024c0ddab69',1,'FatFile::fgets()'],['../class_stdio_stream.html#aa240c1021a1aad1cc57f63a483541dc7',1,'StdioStream::fgets()']]], - ['file',['File',['../class_file.html',1,'File'],['../class_file.html#af72feff53281f269ac592cba92397cd4',1,'File::File()']]], - ['file_5fread',['FILE_READ',['../_arduino_files_8h.html#ad52d51659a75e25d96fb04d22ff718cb',1,'ArduinoFiles.h']]], - ['file_5fwrite',['FILE_WRITE',['../_arduino_files_8h.html#ace34e503254fa9004599ddf122264c8f',1,'ArduinoFiles.h']]], - ['fileattr',['fileAttr',['../class_fat_file.html#a28ebaf42f0173adeb9faa1884337c8f8',1,'FatFile']]], - ['filesize',['fileSize',['../structdirectory_entry.html#ac2445d99b50f925f662952e0ccd26a02',1,'directoryEntry::fileSize()'],['../class_fat_file.html#a874940574b9c99e763526465adf8dc28',1,'FatFile::fileSize()']]], - ['filesystemtype',['fileSystemType',['../structfat__boot.html#aee529e32908406866f3ec3c17c4632fa',1,'fat_boot::fileSystemType()'],['../structfat32__boot.html#a13ee6c63e17d634b6826bfdfa94cbd78',1,'fat32_boot::fileSystemType()']]], - ['fill',['fill',['../classios__base.html#ade5bd46462e075999c3a5c2cff2015f1',1,'ios_base::fill()'],['../classios__base.html#aa5683f9bdf295311bd5a6d3cdc2fedd5',1,'ios_base::fill(char c)']]], - ['firstblock',['firstBlock',['../class_fat_file.html#ac87b753811e540c7b799da56fa89724b',1,'FatFile']]], - ['firstcluster',['firstCluster',['../class_fat_file.html#ad6233a5122080219b6d8148b1bec4b6a',1,'FatFile']]], - ['firstclusterhigh',['firstClusterHigh',['../structdirectory_entry.html#a3b492598b2b05e8425d2a500443613bd',1,'directoryEntry']]], - ['firstclusterlow',['firstClusterLow',['../structdirectory_entry.html#a74bd660417a9c3501eae353326c14bb9',1,'directoryEntry']]], - ['firstsector',['firstSector',['../structpartition_table.html#a02bbdff840c854dc96fa0b6da8589d86',1,'partitionTable']]], - ['flags',['flags',['../structfname__t.html#a39c69edff13165c6e03b308104e7286d',1,'fname_t::flags()'],['../classios__base.html#a2a73a30a8b157cc1cc92bb55b0a62e4a',1,'ios_base::flags() const'],['../classios__base.html#ae67e900dc12e4c7cbc0741ad1c70d6c2',1,'ios_base::flags(fmtflags fl)']]], - ['flush',['flush',['../class_minimum_serial.html#a872f0ff70f0e256352004f83d13fff28',1,'MinimumSerial::flush()'],['../class_print_file.html#a53c4cb94af030fdf83a9160ec9a96949',1,'PrintFile::flush()'],['../class_file.html#af87fa862de707575b8badd044a5af80e',1,'File::flush()'],['../classostream.html#af6be1f30d824f5a65d27d5b5d20b8c6c',1,'ostream::flush()'],['../iostream_8h.html#a2f6f5344fca38fd4fe7b6231fd992a0d',1,'flush(): iostream.h']]], - ['fmtflags',['fmtflags',['../classios__base.html#ac9a54e52cef4f01ac0afd8ae896a3413',1,'ios_base']]], - ['fname_5fflag_5flc_5fbase',['FNAME_FLAG_LC_BASE',['../_fat_file_8h.html#a79e43960e1b4eecf274f5faea9c3168c',1,'FatFile.h']]], - ['fname_5fflag_5flc_5fext',['FNAME_FLAG_LC_EXT',['../_fat_file_8h.html#a135b7572768b09661aa38afaceec7296',1,'FatFile.h']]], - ['fname_5fflag_5flost_5fchars',['FNAME_FLAG_LOST_CHARS',['../_fat_file_8h.html#acd45286b7dfc5ba68be18c8c3a9d298d',1,'FatFile.h']]], - ['fname_5fflag_5fmixed_5fcase',['FNAME_FLAG_MIXED_CASE',['../_fat_file_8h.html#a63994c21f3b723a55247f063a1b01c9c',1,'FatFile.h']]], - ['fname_5fflag_5fneed_5flfn',['FNAME_FLAG_NEED_LFN',['../_fat_file_8h.html#a1a041207a19d2fd9a1e2739343ccb29b',1,'FatFile.h']]], - ['fname_5ft',['fname_t',['../structfname__t.html',1,'']]], - ['fopen',['fopen',['../class_stdio_stream.html#a4ffc37225fb6deed98905aa71d1f9c4b',1,'StdioStream']]], - ['fputc',['fputc',['../class_stdio_stream.html#a9f23cfa6b112a5da6ae08340af23c57b',1,'StdioStream']]], - ['fputs',['fputs',['../class_stdio_stream.html#a6adea52f55ef7d97cdb54e9e11fc2daa',1,'StdioStream']]], - ['fread',['fread',['../class_stdio_stream.html#a2d363b02abcef82b25ff025d50375bce',1,'StdioStream']]], - ['freeclustercount',['freeClusterCount',['../class_fat_volume.html#a1683b063fc6202ab85470b9610f16f93',1,'FatVolume']]], - ['freecount',['freeCount',['../structfat32__fsinfo.html#a6c2d84388c0a38a74f7682fd602492c7',1,'fat32_fsinfo']]], - ['freestack',['FreeStack',['../_free_stack_8h.html#a2c0121d5649d35329a8d0a71e4ffb89b',1,'FreeStack.h']]], - ['freestack_2eh',['FreeStack.h',['../_free_stack_8h.html',1,'']]], - ['fsbegin',['fsBegin',['../class_sd_fat.html#add6a9a3ad07585f6e0e5c35e35cacb9a',1,'SdFat::fsBegin()'],['../class_sd_fat_sdio.html#aac0e8d86182a0e0566c4671c15f3df61',1,'SdFatSdio::fsBegin()'],['../class_sd_fat_sdio_e_x.html#ae7c3cc13d2ec18ab14b4ff88348cc7a0',1,'SdFatSdioEX::fsBegin()']]], - ['fseek',['fseek',['../class_stdio_stream.html#a71584fd5c5cda3c31ce6cdbcc56f104d',1,'StdioStream']]], - ['fsinfo',['fsinfo',['../unioncache__t.html#a46c7b14586a6248824a97101111cbae1',1,'cache_t']]], - ['fsinfo_5flead_5fsig',['FSINFO_LEAD_SIG',['../_fat_structs_8h.html#a7a7a74a7315ad523e3b0c9dbd44d9a32',1,'FatStructs.h']]], - ['fsinfo_5fstruct_5fsig',['FSINFO_STRUCT_SIG',['../_fat_structs_8h.html#a9bf6b77df7bec6c49d81562c54371e81',1,'FatStructs.h']]], - ['fstream',['fstream',['../classfstream.html',1,'fstream'],['../classfstream.html#aed23877c52f828cab8de7a23603b3b6c',1,'fstream::fstream()']]], - ['fstream_2eh',['fstream.h',['../fstream_8h.html',1,'']]], - ['ftell',['ftell',['../class_stdio_stream.html#a809639fc5fb4fa5b6789dc121659f386',1,'StdioStream']]], - ['fwrite',['fwrite',['../class_stdio_stream.html#ad79465afb52579cbc801f4585c3f9c25',1,'StdioStream']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_7.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_7.html deleted file mode 100644 index 88acd946..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_7.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_7.js deleted file mode 100644 index 5ac197d3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_7.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['gcount',['gcount',['../classistream.html#ad0a3db5199ca44b191a9675f2dd3a098',1,'istream']]], - ['get',['get',['../classistream.html#a36573c9b7fc522e6c85a73221019fd11',1,'istream::get()'],['../classistream.html#a9c7313d6f21f1f7ac9b0e759e74b4db2',1,'istream::get(char &ch)'],['../classistream.html#a2c963fd04375e5faa1b7a4362986269a',1,'istream::get(char *str, streamsize n, char delim='\n')']]], - ['getc',['getc',['../class_stdio_stream.html#a28ba31e7b526607744bfa41844ffce31',1,'StdioStream']]], - ['geterror',['getError',['../class_fat_file.html#ad0dbbd083180f44c7a3ce7124d4ce19c',1,'FatFile']]], - ['getline',['getline',['../classistream.html#a7ea6a5edd6b44a6e1ed297fb278b5d52',1,'istream']]], - ['getname',['getName',['../class_fat_file.html#aafa565e286440aab612cdb430fc01da5',1,'FatFile']]], - ['getpos',['getpos',['../class_fat_file.html#aaa4f9886887947815a61eaf015996932',1,'FatFile']]], - ['getsfn',['getSFN',['../class_fat_file.html#aba30e92a66f8e0d2f815c85662772a58',1,'FatFile']]], - ['getwriteerror',['getWriteError',['../class_fat_file.html#a8062c0d3a118e8d77d0310418703d5f5',1,'FatFile']]], - ['good',['good',['../classios.html#a0192d754476f243d7f13dc16e851c7cc',1,'ios']]], - ['goodbit',['goodbit',['../classios__base.html#a07a00996a6e525b88bdfe7935d5ead05',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_8.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_8.html deleted file mode 100644 index b74d5fd8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_8.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_8.js deleted file mode 100644 index 035f01b9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_8.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['halt',['halt',['../class_sys_call.html#a9b1ef8900e97f572ca561760b4dd4191',1,'SysCall']]], - ['headcount',['headCount',['../structbios_parm_block.html#a2324ca82e2a7da4d91f458fa32a6e239',1,'biosParmBlock::headCount()'],['../structfat__boot.html#ae31da876cd9f48de5268a129218df2c2',1,'fat_boot::headCount()'],['../structfat32__boot.html#a1a5298db692526bc64243766d6b54181',1,'fat32_boot::headCount()']]], - ['hex',['hex',['../classios__base.html#a3608e51eb0a80ea94ddadd5b713a3750',1,'ios_base::hex()'],['../ios_8h.html#ace2036d970905192360d622140bfe336',1,'hex(): ios.h']]], - ['hidddensectors',['hidddenSectors',['../structbios_parm_block.html#a9413199be8525190d40589f60c22bcab',1,'biosParmBlock::hidddenSectors()'],['../structfat__boot.html#a18f1b4c245fe7bd09f5a9430c005e23a',1,'fat_boot::hidddenSectors()'],['../structfat32__boot.html#ab10224aa4bba42b262fcd3479e279e1f',1,'fat32_boot::hidddenSectors()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_9.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_9.html deleted file mode 100644 index 95e88dd2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_9.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_9.js deleted file mode 100644 index 6a271f30..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_9.js +++ /dev/null @@ -1,38 +0,0 @@ -var searchData= -[ - ['ibufstream',['ibufstream',['../classibufstream.html',1,'ibufstream'],['../classibufstream.html#afe28f27d24a62a21428b60fe8834dd05',1,'ibufstream::ibufstream()'],['../classibufstream.html#a819561105ef7dc3828e0cfedfed708d8',1,'ibufstream::ibufstream(const char *str)']]], - ['ifstream',['ifstream',['../classifstream.html',1,'ifstream'],['../classifstream.html#a11f4bfaa5c37cfcf8878c367fd861a88',1,'ifstream::ifstream()']]], - ['ignore',['ignore',['../classistream.html#a12597b03d86b66047a5581bbd26eb032',1,'istream']]], - ['implement_5fspi_5fport_5fselection',['IMPLEMENT_SPI_PORT_SELECTION',['../_sd_fat_config_8h.html#aa13678c06fd801cb8f00b497a517d91e',1,'SdFatConfig.h']]], - ['in',['in',['../classios__base.html#ae5432e3c269064480652c4602f5f74ad',1,'ios_base']]], - ['include_5fsdios',['INCLUDE_SDIOS',['../_sd_fat_config_8h.html#a7cc6c9647297d65f8e823de70740630b',1,'SdFatConfig.h']]], - ['init',['init',['../classibufstream.html#a1d7bae17d9d2c79218085251946f322a',1,'ibufstream::init()'],['../classobufstream.html#a8f75dbadab2fed7770d01a2cc2628258',1,'obufstream::init()'],['../class_fat_cache.html#ae1d8a2da1493b5ffca0520184daaddf1',1,'FatCache::init()'],['../class_fat_volume.html#acab819fa25a91dad1cc698a7e1e0eb32',1,'FatVolume::init()'],['../class_fat_volume.html#a034d997a1e7a0b2b664a4357bcccd256',1,'FatVolume::init(uint8_t part)']]], - ['initerrorhalt',['initErrorHalt',['../class_sd_file_system.html#a8e1f26486bb878a24fa9868e59dbbbc2',1,'SdFileSystem::initErrorHalt()'],['../class_sd_file_system.html#a24bd0f699cf0fe11fd2148b15c49251a',1,'SdFileSystem::initErrorHalt(Print *pr)'],['../class_sd_file_system.html#a893833a880e2a83757480ba4c1351041',1,'SdFileSystem::initErrorHalt(char const *msg)'],['../class_sd_file_system.html#a3077b1a53d789d0401b707963cb28f46',1,'SdFileSystem::initErrorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#a2a1e4cc8056ba23b55dfa2c6486b8798',1,'SdFileSystem::initErrorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#ab03d98012dea18733c3252f27832de69',1,'SdFileSystem::initErrorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['initerrorprint',['initErrorPrint',['../class_sd_file_system.html#ae31c9cbd7e1c03129d6c99b25f73cd50',1,'SdFileSystem::initErrorPrint()'],['../class_sd_file_system.html#a066707dce0667213b5f083d59f67448d',1,'SdFileSystem::initErrorPrint(Print *pr)'],['../class_sd_file_system.html#a538796f79fd9db9c5bbeefd9defe639a',1,'SdFileSystem::initErrorPrint(char const *msg)'],['../class_sd_file_system.html#ad9855d33ebd465715b706d0926291b13',1,'SdFileSystem::initErrorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#ad6ffec5a7d82be46d46b8a4f82d0803b',1,'SdFileSystem::initErrorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a8a2018b6366145a9843d3d29a47d6560',1,'SdFileSystem::initErrorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['internal',['internal',['../classios__base.html#afc720b7f6f461ec8e9cf5505059e5d7c',1,'ios_base::internal()'],['../ios_8h.html#a8dd76c1ce8fced364a98428ca1eea7a6',1,'internal(): ios.h']]], - ['invalidate',['invalidate',['../class_fat_cache.html#a70071a128d647b49b523dbb2f5f944a5',1,'FatCache']]], - ['ios',['ios',['../classios.html',1,'ios'],['../classios.html#adc5dbd7b69da79493ebc84aa1e681aaa',1,'ios::ios()']]], - ['ios_2eh',['ios.h',['../ios_8h.html',1,'']]], - ['ios_5fbase',['ios_base',['../classios__base.html',1,'']]], - ['iostate',['iostate',['../classios__base.html#aef19291eeae0f072ac42c6ba1fe3033c',1,'ios_base']]], - ['iostream',['iostream',['../classiostream.html',1,'']]], - ['iostream_2eh',['iostream.h',['../iostream_8h.html',1,'']]], - ['is_5fopen',['is_open',['../classfstream.html#ae4a71c6f3da2f168ec222739d796fc8b',1,'fstream::is_open()'],['../classifstream.html#aaa16c6422ea371995d02159f2e6707b2',1,'ifstream::is_open()'],['../classofstream.html#a9c97eb2eb6e35ae87cf7f7453a67e70a',1,'ofstream::is_open()']]], - ['isbusy',['isBusy',['../class_sdio_card.html#a560bdfc96932d073c2b0610600560f78',1,'SdioCard::isBusy()'],['../class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328',1,'SdSpiCard::isBusy()']]], - ['isdir',['isDir',['../class_fat_file.html#a933360b20b496421b2bd9ee7a95563a6',1,'FatFile']]], - ['isdirectory',['isDirectory',['../class_file.html#a6ba5bdb943363cda56649238ccb18c27',1,'File']]], - ['isdirseparator',['isDirSeparator',['../_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'FatFile.h']]], - ['isdirty',['isDirty',['../class_fat_cache.html#ae50287d95bd78558db1e4aa97d7b2c06',1,'FatCache']]], - ['isfile',['isFile',['../class_fat_file.html#acc5a87da1a5c8cb9758bfeaa7ae47b57',1,'FatFile']]], - ['ishidden',['isHidden',['../class_fat_file.html#ae216b4a2bc44a9cfb88478fa051a1fd8',1,'FatFile']]], - ['islfn',['isLFN',['../class_fat_file.html#af8f456ab790e818bfdd225cf6ffd40f3',1,'FatFile']]], - ['isopen',['isOpen',['../class_fat_file.html#a8b8a2850c086d3ce79bee64a23fbf7a6',1,'FatFile']]], - ['isreadonly',['isReadOnly',['../class_fat_file.html#abaf639ec8f86f34aeb7e6b3615526f0b',1,'FatFile']]], - ['isroot',['isRoot',['../class_fat_file.html#a03421a0c28649332f55e6ca06d3aeedb',1,'FatFile']]], - ['isroot32',['isRoot32',['../class_fat_file.html#a8fda8004720ec4cc55710869dbb52e35',1,'FatFile']]], - ['isrootfixed',['isRootFixed',['../class_fat_file.html#a0cc65089f7ce6c1ff92edbf0bff59dee',1,'FatFile']]], - ['issubdir',['isSubDir',['../class_fat_file.html#abfd02c5d26f7d4f8739a8610116a6660',1,'FatFile']]], - ['issystem',['isSystem',['../class_fat_file.html#a48087bdeb6b94fc27e0f74c3d90af5a9',1,'FatFile']]], - ['istream',['istream',['../classistream.html',1,'']]], - ['istream_2eh',['istream.h',['../istream_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_a.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_a.html deleted file mode 100644 index 3148a8e5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_a.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_a.js deleted file mode 100644 index e043c526..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jump',['jump',['../structfat__boot.html#a83f9f2d1d0130f25f34c90dfc82e3751',1,'fat_boot::jump()'],['../structfat32__boot.html#a2d93fc193a64ecffbd71ead207fe4810',1,'fat32_boot::jump()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_b.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_b.html deleted file mode 100644 index f2a3c8d0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_b.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_b.js deleted file mode 100644 index a37596e4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['khzsdclk',['kHzSdClk',['../class_sdio_card.html#a3532a1a4b8a43a51ed9b5853186203cb',1,'SdioCard']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_c.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_c.html deleted file mode 100644 index 63768107..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_c.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_c.js deleted file mode 100644 index aaf99c93..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_c.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['lastaccessdate',['lastAccessDate',['../structdirectory_entry.html#abca70dc5c5fcbe199fd78df010111331',1,'directoryEntry']]], - ['lastwritedate',['lastWriteDate',['../structdirectory_entry.html#a12b2e7cf87482a942a0b5d3df6c51468',1,'directoryEntry']]], - ['lastwritetime',['lastWriteTime',['../structdirectory_entry.html#a7bab435322d1928f66fbce53ee1f402d',1,'directoryEntry']]], - ['lbn',['lbn',['../class_fat_cache.html#a9f981b53e212f79937e5f6381b169374',1,'FatCache']]], - ['ldir_5fname1_5fdim',['LDIR_NAME1_DIM',['../_fat_structs_8h.html#af843af29c67dd30ca7c5684806bf02fc',1,'FatStructs.h']]], - ['ldir_5fname2_5fdim',['LDIR_NAME2_DIM',['../_fat_structs_8h.html#a99cae591c59e261f54617617e173e7e0',1,'FatStructs.h']]], - ['ldir_5fname3_5fdim',['LDIR_NAME3_DIM',['../_fat_structs_8h.html#a99fbd27fa9e5003a8d77ca7fc14d2090',1,'FatStructs.h']]], - ['ldir_5ford_5flast_5flong_5fentry',['LDIR_ORD_LAST_LONG_ENTRY',['../_fat_structs_8h.html#a8cfb60b9eaf04dcdc6e4f5a466af5540',1,'FatStructs.h']]], - ['ldir_5ft',['ldir_t',['../_fat_structs_8h.html#aa1b540ee1eedd1aa9b267d11cba0d9e2',1,'FatStructs.h']]], - ['leadsignature',['leadSignature',['../structfat32__fsinfo.html#aa8ee056cc1beb1355e15610c1beba5e3',1,'fat32_fsinfo']]], - ['left',['left',['../classios__base.html#ad364df9af2cfde1f40bd8e10c62bb215',1,'ios_base::left()'],['../ios_8h.html#a24a80a73f0a0d2d72d1cb74f49ff4759',1,'left(): ios.h']]], - ['legal83char',['legal83Char',['../class_fat_file.html#a94df8090f16e9666cdc53ca20f6aff90',1,'FatFile']]], - ['len',['len',['../structfname__t.html#a471184cc4c2671526d7d6fb80b2fe20c',1,'fname_t']]], - ['length',['length',['../classobufstream.html#ac650708e968b0c0545a3badeb809cf15',1,'obufstream']]], - ['lfn',['lfn',['../structfname__t.html#a76ffd7abd5b7d3acf90b329c905770fd',1,'fname_t']]], - ['longdirectoryentry',['longDirectoryEntry',['../structlong_directory_entry.html',1,'']]], - ['ls',['ls',['../class_fat_file.html#ad49f688a494b351ccbb0102dcfafb925',1,'FatFile::ls(uint8_t flags=0)'],['../class_fat_file.html#acabf31ff85e696fbf384c49428012fea',1,'FatFile::ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)'],['../class_fat_file_system.html#a2398fb37a7a9d5e0dc0ffde6a44a993d',1,'FatFileSystem::ls(uint8_t flags=0)'],['../class_fat_file_system.html#a122b61dbec5051304bcc81bc08b1b99d',1,'FatFileSystem::ls(const char *path, uint8_t flags=0)'],['../class_fat_file_system.html#ae12fb8bfad5c4a8e052dda70a5a0ed93',1,'FatFileSystem::ls(print_t *pr, uint8_t flags=0)'],['../class_fat_file_system.html#aa79695db8e910300507210b3067d39fd',1,'FatFileSystem::ls(print_t *pr, const char *path, uint8_t flags)']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_d.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_d.html deleted file mode 100644 index cc52c79f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_d.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_d.js deleted file mode 100644 index 30a4bf7a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_d.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['maintain_5ffree_5fcluster_5fcount',['MAINTAIN_FREE_CLUSTER_COUNT',['../_sd_fat_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): FatLibConfig.h']]], - ['masterbootrecord',['masterBootRecord',['../structmaster_boot_record.html',1,'']]], - ['mbr',['mbr',['../unioncache__t.html#a6ac10bfb1ebb1139c448456679663bb6',1,'cache_t']]], - ['mbr_5ft',['mbr_t',['../_fat_structs_8h.html#a7c429e5097f101c8c97663d6c4155bd9',1,'FatStructs.h']]], - ['mbrsig0',['mbrSig0',['../structmaster_boot_record.html#a42b0b413ecb21ac5314d4f6bca05308f',1,'masterBootRecord']]], - ['mbrsig1',['mbrSig1',['../structmaster_boot_record.html#aafbbcb4f6a2d1181c6458d4c9603df4f',1,'masterBootRecord']]], - ['mediatype',['mediaType',['../structbios_parm_block.html#a4237e7c3ba247516d546c149954e5042',1,'biosParmBlock::mediaType()'],['../structfat__boot.html#a63eaf7185663369af2527309634d3c90',1,'fat_boot::mediaType()'],['../structfat32__boot.html#a3b1ab5d2dc872c0d80cd4f34622de417',1,'fat32_boot::mediaType()']]], - ['minimumserial',['MinimumSerial',['../class_minimum_serial.html',1,'']]], - ['minimumserial_2eh',['MinimumSerial.h',['../_minimum_serial_8h.html',1,'']]], - ['mkdir',['mkdir',['../class_fat_file.html#abab5b9f72cc796388dd4eed01d13d90d',1,'FatFile::mkdir()'],['../class_fat_file_system.html#a231c62c98ba8ac3c2624dc5ad2053ebf',1,'FatFileSystem::mkdir()']]], - ['mustbezero',['mustBeZero',['../structlong_directory_entry.html#af3055930e869875e49b32ef0b49c3649',1,'longDirectoryEntry']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_e.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_e.html deleted file mode 100644 index 85b39bd4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_e.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_e.js deleted file mode 100644 index cc1d64b3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_e.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['name',['name',['../structdirectory_entry.html#a05dc993ea55a1a742de5970541a31ecb',1,'directoryEntry::name()'],['../class_file.html#a3d7c8f86311b9aad2bcc43e677d927ed',1,'File::name()']]], - ['name1',['name1',['../structlong_directory_entry.html#a629f1ca5ba2ccce6cac5295578b6e7b4',1,'longDirectoryEntry']]], - ['name2',['name2',['../structlong_directory_entry.html#ad763b5a3da4b8d326d9888493fbb819a',1,'longDirectoryEntry']]], - ['name3',['name3',['../structlong_directory_entry.html#a6f14c81b7d224dc4431217f92601257a',1,'longDirectoryEntry']]], - ['nextfree',['nextFree',['../structfat32__fsinfo.html#a539b3bb0a2ead9df417df9ac8b6b1606',1,'fat32_fsinfo']]], - ['noboolalpha',['noboolalpha',['../ios_8h.html#aa6a1ec04992fc8090ca775a39678be01',1,'ios.h']]], - ['noshowbase',['noshowbase',['../ios_8h.html#ab861ff5f863de0ae002b65390dde36b0',1,'ios.h']]], - ['noshowpoint',['noshowpoint',['../ios_8h.html#ad85399d1b75151cf9e2436f2a1ccfc13',1,'ios.h']]], - ['noshowpos',['noshowpos',['../ios_8h.html#a985805b22ffb4ce2f5298168662bd2d7',1,'ios.h']]], - ['noskipws',['noskipws',['../ios_8h.html#a773b847300db776fde08a0b562792131',1,'ios.h']]], - ['nouppercase',['nouppercase',['../ios_8h.html#a24b96fb317e056b34aa84c4bb965a79a',1,'ios.h']]], - ['null',['NULL',['../_stdio_stream_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_f.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_f.html deleted file mode 100644 index 89fa15a6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_f.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_f.js deleted file mode 100644 index 1fb63a9e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/all_f.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['obufstream',['obufstream',['../classobufstream.html',1,'obufstream'],['../classobufstream.html#a74f7dbcf1131b77d3665aa85d6629722',1,'obufstream::obufstream()'],['../classobufstream.html#a7af0555c5c08ebf9cbc70fc5e2f67db7',1,'obufstream::obufstream(char *buf, size_t size)']]], - ['oct',['oct',['../classios__base.html#a4155540f8d3ffdb8d25a2f50ee4df08f',1,'ios_base::oct()'],['../ios_8h.html#ae661b435df22f8e8e643817f4f915123',1,'oct(): ios.h']]], - ['oemid',['oemId',['../structfat__boot.html#adc034212201e879fea1eb44db43e55a5',1,'fat_boot::oemId()'],['../structfat32__boot.html#af623a473a960ea20904dce0edfb6bb9d',1,'fat32_boot::oemId()']]], - ['off_5ftype',['off_type',['../classios__base.html#a45de7cca0d01da781f4b886179c65c22',1,'ios_base']]], - ['ofstream',['ofstream',['../classofstream.html',1,'ofstream'],['../classofstream.html#ae8a8145adf2cfe1f948ad482ed504b75',1,'ofstream::ofstream()']]], - ['open',['open',['../class_fat_file.html#a3567b0760afe1250334b6c85c2ad5869',1,'FatFile::open(FatFileSystem *fs, const char *path, oflag_t oflag)'],['../class_fat_file.html#ab44920bb9cd5414b8e69c9dc4343394a',1,'FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)'],['../class_fat_file.html#a58d6ea245f1bc3ae7a6df311cd25052f',1,'FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)'],['../class_fat_file.html#a2da94d4556eebd807669e0514433fffa',1,'FatFile::open(const char *path, oflag_t oflag=O_RDONLY)'],['../class_fat_file_system.html#a1590dbde58cf1622a18d1350058a6e18',1,'FatFileSystem::open(const char *path, oflag_t oflag=FILE_READ)'],['../class_fat_file_system.html#a7c44842544967e0083bec1a6089e5061',1,'FatFileSystem::open(const String &path, oflag_t oflag=FILE_READ)'],['../classfstream.html#a85b24d94552991f33caf4c3a83420879',1,'fstream::open()'],['../classifstream.html#a169694d6535fd551fd6db48a2867590e',1,'ifstream::open()'],['../classofstream.html#a4b9d30c742fbe01baa336406c7afdcb2',1,'ofstream::open()']]], - ['openmode',['openmode',['../classios__base.html#aaa192ec0dccc43050715553a34644523',1,'ios_base']]], - ['opennext',['openNext',['../class_fat_file.html#acda9b1bf547d43e183e657bee053a48d',1,'FatFile']]], - ['opennextfile',['openNextFile',['../class_file.html#a49946976035a0811200dc92d5843b8dc',1,'File']]], - ['openroot',['openRoot',['../class_fat_file.html#a7e0c0548fed3a69e7284b91b694439d4',1,'FatFile']]], - ['operator_20bool',['operator bool',['../class_minimum_serial.html#a73a1a2a92604ecb8507afde0022aedd8',1,'MinimumSerial::operator bool()'],['../class_file.html#af171fbf441c899cf71d88b8b0b83d38b',1,'File::operator bool()']]], - ['operator_20const_20void_20_2a',['operator const void *',['../classios.html#aa919219fd2fa41d49c8573b36bb04418',1,'ios']]], - ['operator_21',['operator!',['../classios.html#aea64e05b9aa58bd75ca636692f881fb6',1,'ios']]], - ['operator_3c_3c',['operator<<',['../classostream.html#a4dfc0cdb38bced959ba7cf963db38c30',1,'ostream::operator<<(ostream &(*pf)(ostream &str))'],['../classostream.html#af52c607ea168aff1025222c62cad392f',1,'ostream::operator<<(ios_base &(*pf)(ios_base &str))'],['../classostream.html#a63e3999be154253cf92a45c22e548f51',1,'ostream::operator<<(bool arg)'],['../classostream.html#a618b5d6861dde2347847102b89e0ccfa',1,'ostream::operator<<(const char *arg)'],['../classostream.html#aebe24ff723b806cbee19deb2165d0a5b',1,'ostream::operator<<(const signed char *arg)'],['../classostream.html#ac0cf68ffa4706994f47acb1fa37c601a',1,'ostream::operator<<(const unsigned char *arg)'],['../classostream.html#a1d1e11d2fadaf4c9e34194a1f28572e4',1,'ostream::operator<<(char arg)'],['../classostream.html#ad06f8c6c47667e9c7b14620882c09434',1,'ostream::operator<<(signed char arg)'],['../classostream.html#a69912ec4a8536f289b716e95953d09d7',1,'ostream::operator<<(unsigned char arg)'],['../classostream.html#a8065697d56d5e5d1a0ca50c1916b4955',1,'ostream::operator<<(double arg)'],['../classostream.html#a6c68e418e19d9dcdfe6b1790b2621666',1,'ostream::operator<<(float arg)'],['../classostream.html#a227c47e2b631f29d8873b00290bb4872',1,'ostream::operator<<(short arg)'],['../classostream.html#ace10a3a767dc55faff2cec71cd0a89b1',1,'ostream::operator<<(unsigned short arg)'],['../classostream.html#a62488f7ce7822c777ea27d15223b8e5f',1,'ostream::operator<<(int arg)'],['../classostream.html#ad31df6cd88c7248c01808e40889a7907',1,'ostream::operator<<(unsigned int arg)'],['../classostream.html#a15db9977ed82e503bd3cd1f585acf9e6',1,'ostream::operator<<(long arg)'],['../classostream.html#aaedd44fefa48cf3f0967fcd699a2909d',1,'ostream::operator<<(unsigned long arg)'],['../classostream.html#a2a8febd7c07f078120dd69bb71f25a94',1,'ostream::operator<<(const void *arg)'],['../classostream.html#a99ee8d9265d9354f197d02a3d17116be',1,'ostream::operator<<(const __FlashStringHelper *arg)'],['../iostream_8h.html#aa125ac928f3377cbc6e3cf288b9378fd',1,'operator<<(ostream &os, const setfill &arg): iostream.h'],['../iostream_8h.html#a23d4c29ef8ae37ec7d972d0b66187652',1,'operator<<(ostream &os, const setprecision &arg): iostream.h'],['../iostream_8h.html#a331649f2fdb01ed069dc18a5fad781b1',1,'operator<<(ostream &os, const setw &arg): iostream.h']]], - ['operator_3e_3e',['operator>>',['../classistream.html#aa67d3b8ac67e2097d876a66657ec6067',1,'istream::operator>>(istream &(*pf)(istream &str))'],['../classistream.html#ac6e2f17c80edd19deecdc20f804c424e',1,'istream::operator>>(ios_base &(*pf)(ios_base &str))'],['../classistream.html#a5a0a2c0e06abadb79951ebe34f36d62a',1,'istream::operator>>(ios &(*pf)(ios &str))'],['../classistream.html#a99db66d2e192f02deff0171ad098271f',1,'istream::operator>>(char *str)'],['../classistream.html#addaf5e0f39a15cc213117165dfef0d77',1,'istream::operator>>(char &ch)'],['../classistream.html#a390af4d28adbdc537e436f2121d1c862',1,'istream::operator>>(signed char *str)'],['../classistream.html#a49ab1a573fbf69809d19a52855a30072',1,'istream::operator>>(signed char &ch)'],['../classistream.html#a52e85d01198968330f20026a52cb9f72',1,'istream::operator>>(unsigned char *str)'],['../classistream.html#a74875fcf9ccdc0dca4b46a0b66821798',1,'istream::operator>>(unsigned char &ch)'],['../classistream.html#a3708636d095d360695e9c23335639317',1,'istream::operator>>(bool &arg)'],['../classistream.html#a662060e885a0551c390b7042b3b9e4a5',1,'istream::operator>>(short &arg)'],['../classistream.html#a31a706a374c5a594e400734b8992e2a0',1,'istream::operator>>(unsigned short &arg)'],['../classistream.html#ae8451bc86d83828892d9d67c67b7f02b',1,'istream::operator>>(int &arg)'],['../classistream.html#a35c9847ebf7b822c5ec9742e9de19345',1,'istream::operator>>(unsigned int &arg)'],['../classistream.html#aa26e7f35e74d96803bb0dfb3fb0dc154',1,'istream::operator>>(long &arg)'],['../classistream.html#a5aafa4c7f6615a7f1441962b61b8ef59',1,'istream::operator>>(unsigned long &arg)'],['../classistream.html#af9bf453725ce1d9ef62142a7ee38936e',1,'istream::operator>>(double &arg)'],['../classistream.html#aa8efce6fecab80cf7a17d5dfa31f5aa8',1,'istream::operator>>(float &arg)'],['../classistream.html#a62ef4762feacc64a8acdcbf8f1296936',1,'istream::operator>>(void *&arg)'],['../iostream_8h.html#a4a4079de901e0f3f10c743115bd345b2',1,'operator>>(istream &obj, const setfill &arg): iostream.h'],['../iostream_8h.html#a2f819cd0ccda31a8b648f20534469308',1,'operator>>(istream &is, const setprecision &arg): iostream.h'],['../iostream_8h.html#a8d1b3da6f1074322a6e9e11ff4ce8c33',1,'operator>>(istream &is, const setw &arg): iostream.h']]], - ['ord',['ord',['../structlong_directory_entry.html#a1b65e85dd63d0708cd1b875ce4e5e338',1,'longDirectoryEntry']]], - ['ostream',['ostream',['../classostream.html',1,'']]], - ['ostream_2eh',['ostream.h',['../ostream_8h.html',1,'']]], - ['out',['out',['../classios__base.html#a4c1d517774c0d11af3424e90395f26ae',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_0.html deleted file mode 100644 index e935fdf7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_0.js deleted file mode 100644 index a9adadb3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['arduinoinstream',['ArduinoInStream',['../class_arduino_in_stream.html',1,'']]], - ['arduinooutstream',['ArduinoOutStream',['../class_arduino_out_stream.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_1.html deleted file mode 100644 index 3df6e80a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_1.js deleted file mode 100644 index db111f8d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['baseblockdriver',['BaseBlockDriver',['../class_base_block_driver.html',1,'']]], - ['biosparmblock',['biosParmBlock',['../structbios_parm_block.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_2.html deleted file mode 100644 index 028694ff..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_2.js deleted file mode 100644 index 2cec96aa..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['cache_5ft',['cache_t',['../unioncache__t.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_3.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_3.html deleted file mode 100644 index 2b1abe38..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_3.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_3.js deleted file mode 100644 index 6d9643ba..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['directoryentry',['directoryEntry',['../structdirectory_entry.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_4.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_4.html deleted file mode 100644 index 87352149..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_4.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_4.js deleted file mode 100644 index 29dc35eb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_4.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['fat32_5fboot',['fat32_boot',['../structfat32__boot.html',1,'']]], - ['fat32_5ffsinfo',['fat32_fsinfo',['../structfat32__fsinfo.html',1,'']]], - ['fat_5fboot',['fat_boot',['../structfat__boot.html',1,'']]], - ['fatcache',['FatCache',['../class_fat_cache.html',1,'']]], - ['fatfile',['FatFile',['../class_fat_file.html',1,'']]], - ['fatfilesystem',['FatFileSystem',['../class_fat_file_system.html',1,'']]], - ['fatpos_5ft',['FatPos_t',['../struct_fat_pos__t.html',1,'']]], - ['fatstreambase',['FatStreamBase',['../class_fat_stream_base.html',1,'']]], - ['fatvolume',['FatVolume',['../class_fat_volume.html',1,'']]], - ['file',['File',['../class_file.html',1,'']]], - ['fname_5ft',['fname_t',['../structfname__t.html',1,'']]], - ['fstream',['fstream',['../classfstream.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_5.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_5.html deleted file mode 100644 index ba8b1c69..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_5.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_5.js deleted file mode 100644 index 356cc7b1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_5.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['ibufstream',['ibufstream',['../classibufstream.html',1,'']]], - ['ifstream',['ifstream',['../classifstream.html',1,'']]], - ['ios',['ios',['../classios.html',1,'']]], - ['ios_5fbase',['ios_base',['../classios__base.html',1,'']]], - ['iostream',['iostream',['../classiostream.html',1,'']]], - ['istream',['istream',['../classistream.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_6.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_6.html deleted file mode 100644 index f5850938..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_6.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_6.js deleted file mode 100644 index 61b2f456..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['longdirectoryentry',['longDirectoryEntry',['../structlong_directory_entry.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_7.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_7.html deleted file mode 100644 index 6418529c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_7.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_7.js deleted file mode 100644 index 5be458c2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['masterbootrecord',['masterBootRecord',['../structmaster_boot_record.html',1,'']]], - ['minimumserial',['MinimumSerial',['../class_minimum_serial.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_8.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_8.html deleted file mode 100644 index 87af6f60..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_8.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_8.js deleted file mode 100644 index 7979fbb9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['obufstream',['obufstream',['../classobufstream.html',1,'']]], - ['ofstream',['ofstream',['../classofstream.html',1,'']]], - ['ostream',['ostream',['../classostream.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_9.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_9.html deleted file mode 100644 index f830ae04..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_9.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_9.js deleted file mode 100644 index fcf5b92a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['partitiontable',['partitionTable',['../structpartition_table.html',1,'']]], - ['printfile',['PrintFile',['../class_print_file.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_a.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_a.html deleted file mode 100644 index 0fd3b7ac..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_a.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_a.js deleted file mode 100644 index 5a74c247..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/classes_a.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['sd2card',['Sd2Card',['../class_sd2_card.html',1,'']]], - ['sdbasefile',['SdBaseFile',['../class_sd_base_file.html',1,'']]], - ['sdfat',['SdFat',['../class_sd_fat.html',1,'']]], - ['sdfatex',['SdFatEX',['../class_sd_fat_e_x.html',1,'']]], - ['sdfatsdio',['SdFatSdio',['../class_sd_fat_sdio.html',1,'']]], - ['sdfatsdioex',['SdFatSdioEX',['../class_sd_fat_sdio_e_x.html',1,'']]], - ['sdfatsoftspi',['SdFatSoftSpi',['../class_sd_fat_soft_spi.html',1,'']]], - ['sdfatsoftspiex',['SdFatSoftSpiEX',['../class_sd_fat_soft_spi_e_x.html',1,'']]], - ['sdfile',['SdFile',['../class_sd_file.html',1,'']]], - ['sdfilesystem',['SdFileSystem',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocard_20_3e',['SdFileSystem< SdioCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdiocardex_20_3e',['SdFileSystem< SdioCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicard_20_3e',['SdFileSystem< SdSpiCard >',['../class_sd_file_system.html',1,'']]], - ['sdfilesystem_3c_20sdspicardex_20_3e',['SdFileSystem< SdSpiCardEX >',['../class_sd_file_system.html',1,'']]], - ['sdiocard',['SdioCard',['../class_sdio_card.html',1,'']]], - ['sdiocardex',['SdioCardEX',['../class_sdio_card_e_x.html',1,'']]], - ['sdspicard',['SdSpiCard',['../class_sd_spi_card.html',1,'']]], - ['sdspicardex',['SdSpiCardEX',['../class_sd_spi_card_e_x.html',1,'']]], - ['setfill',['setfill',['../structsetfill.html',1,'']]], - ['setprecision',['setprecision',['../structsetprecision.html',1,'']]], - ['setw',['setw',['../structsetw.html',1,'']]], - ['stdiostream',['StdioStream',['../class_stdio_stream.html',1,'']]], - ['syscall',['SysCall',['../class_sys_call.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/close.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/close.png deleted file mode 100644 index 9342d3df..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/close.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_0.html deleted file mode 100644 index 3bffafa9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_0.js deleted file mode 100644 index 73b9bad7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['check_5fflash_5fprogramming',['CHECK_FLASH_PROGRAMMING',['../_sd_fat_config_8h.html#a63747c9ac4e3d78579690cf9eb38c4df',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_1.html deleted file mode 100644 index ca5bb94e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_1.js deleted file mode 100644 index 567d919e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['destructor_5fcloses_5ffile',['DESTRUCTOR_CLOSES_FILE',['../_sd_fat_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a9a2b1ca4d91cff876f48deeaacbc33da',1,'DESTRUCTOR_CLOSES_FILE(): FatLibConfig.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_2.html deleted file mode 100644 index 7cc1a74c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_2.js deleted file mode 100644 index 0ac9ddd8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_2.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['enable_5farduino_5ffeatures',['ENABLE_ARDUINO_FEATURES',['../_fat_lib_config_8h.html#a9a8c1ea8596f35f7f33a24b642567206',1,'FatLibConfig.h']]], - ['enable_5fextended_5ftransfer_5fclass',['ENABLE_EXTENDED_TRANSFER_CLASS',['../_sd_fat_config_8h.html#aad4f0ecbc65cdc3a7be544225b44f86a',1,'SdFatConfig.h']]], - ['enable_5fsdio_5fclass',['ENABLE_SDIO_CLASS',['../_sd_fat_config_8h.html#a1d106f3a0ba8577abdcc9ce3961ef90b',1,'SdFatConfig.h']]], - ['enable_5fsoftware_5fspi_5fclass',['ENABLE_SOFTWARE_SPI_CLASS',['../_sd_fat_config_8h.html#acc3d779d87b785bb7236b9b3acf7e619',1,'SdFatConfig.h']]], - ['endl_5fcalls_5fflush',['ENDL_CALLS_FLUSH',['../_sd_fat_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a270eefdaec4778f2a491658f34f61b17',1,'ENDL_CALLS_FLUSH(): FatLibConfig.h']]], - ['eof',['EOF',['../_stdio_stream_8h.html#a59adc4c82490d23754cd39c2fb99b0da',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_3.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_3.html deleted file mode 100644 index 3d0ac123..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_3.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_3.js deleted file mode 100644 index a89012ff..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['f',['F',['../_sys_call_8h.html#a0e3009529aac180ed5f48296d6670d6b',1,'SysCall.h']]], - ['fat12_5fsupport',['FAT12_SUPPORT',['../_sd_fat_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a28998c5daf4bd038f4f93172698320b1',1,'FAT12_SUPPORT(): FatLibConfig.h']]], - ['file_5fread',['FILE_READ',['../_arduino_files_8h.html#ad52d51659a75e25d96fb04d22ff718cb',1,'ArduinoFiles.h']]], - ['file_5fwrite',['FILE_WRITE',['../_arduino_files_8h.html#ace34e503254fa9004599ddf122264c8f',1,'ArduinoFiles.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_4.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_4.html deleted file mode 100644 index 201f927f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_4.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_4.js deleted file mode 100644 index 93543167..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_4.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['implement_5fspi_5fport_5fselection',['IMPLEMENT_SPI_PORT_SELECTION',['../_sd_fat_config_8h.html#aa13678c06fd801cb8f00b497a517d91e',1,'SdFatConfig.h']]], - ['include_5fsdios',['INCLUDE_SDIOS',['../_sd_fat_config_8h.html#a7cc6c9647297d65f8e823de70740630b',1,'SdFatConfig.h']]], - ['isdirseparator',['isDirSeparator',['../_fat_file_8h.html#a9f85580ad6f1dfc86fff09a58ff0a1c0',1,'FatFile.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_5.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_5.html deleted file mode 100644 index 92d51a58..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_5.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_5.js deleted file mode 100644 index df3950f5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['maintain_5ffree_5fcluster_5fcount',['MAINTAIN_FREE_CLUSTER_COUNT',['../_sd_fat_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): SdFatConfig.h'],['../_fat_lib_config_8h.html#ac2865dac8fdbb4fff47105db32ddf05b',1,'MAINTAIN_FREE_CLUSTER_COUNT(): FatLibConfig.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_6.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_6.html deleted file mode 100644 index fa5d74ce..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_6.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_6.js deleted file mode 100644 index b45fe3da..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['null',['NULL',['../_stdio_stream_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_7.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_7.html deleted file mode 100644 index 99054085..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_7.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_7.js deleted file mode 100644 index 9894a74e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_7.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['pgm_5fread_5fbyte',['pgm_read_byte',['../_fat_file_8h.html#a48c60b057902adf805797f183286728d',1,'FatFile.h']]], - ['pgm_5fread_5fword',['pgm_read_word',['../_fat_file_8h.html#a910fb5f01313d339d3b835d45e1e5ad0',1,'FatFile.h']]], - ['progmem',['PROGMEM',['../_fat_file_8h.html#a75acaba9e781937468d0911423bc0c35',1,'FatFile.h']]], - ['pstr',['PSTR',['../_fat_file_8h.html#a9c00057fd19e916cc1aa0a5949336beb',1,'FatFile.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_8.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_8.html deleted file mode 100644 index 9098e183..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_8.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_8.js deleted file mode 100644 index 7c309170..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['sd_5ffat_5fversion',['SD_FAT_VERSION',['../_sd_fat_8h.html#aca25ecce379f446043bdee2c55304210',1,'SdFat.h']]], - ['sd_5fhas_5fcustom_5fspi',['SD_HAS_CUSTOM_SPI',['../_sd_fat_config_8h.html#a838861a01379e94361148d22e62b1977',1,'SdFatConfig.h']]], - ['seek_5fcur',['SEEK_CUR',['../_stdio_stream_8h.html#a4c8d0b76b470ba65a43ca46a88320f39',1,'StdioStream.h']]], - ['seek_5fend',['SEEK_END',['../_stdio_stream_8h.html#ad2a2e6c114780c3071efd24f16c7f7d8',1,'StdioStream.h']]], - ['seek_5fset',['SEEK_SET',['../_stdio_stream_8h.html#a0d112bae8fd35be772185b6ec6bcbe64',1,'StdioStream.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_9.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_9.html deleted file mode 100644 index bdebe602..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_9.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_9.js deleted file mode 100644 index a93232be..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_9.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['use_5ffcntl_5fh',['USE_FCNTL_H',['../_sd_fat_config_8h.html#ab4b7255422e65730612f1f6af1a26752',1,'SdFatConfig.h']]], - ['use_5flong_5ffile_5fnames',['USE_LONG_FILE_NAMES',['../_sd_fat_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a2536b194b3b007604a39e8526e108b52',1,'USE_LONG_FILE_NAMES(): FatLibConfig.h']]], - ['use_5fmulti_5fblock_5fio',['USE_MULTI_BLOCK_IO',['../_sd_fat_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): SdFatConfig.h'],['../_fat_lib_config_8h.html#afc3ef382d3ab8d7e6f8fc134ef21d487',1,'USE_MULTI_BLOCK_IO(): FatLibConfig.h']]], - ['use_5fsd_5fcrc',['USE_SD_CRC',['../_sd_fat_config_8h.html#af2e76ffb2fdb830175abf513dd640fdd',1,'SdFatConfig.h']]], - ['use_5fseparate_5ffat_5fcache',['USE_SEPARATE_FAT_CACHE',['../_sd_fat_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): SdFatConfig.h'],['../_fat_lib_config_8h.html#a23f662882413dcb017ebd8107473b8c3',1,'USE_SEPARATE_FAT_CACHE(): FatLibConfig.h']]], - ['use_5fstandard_5fspi_5flibrary',['USE_STANDARD_SPI_LIBRARY',['../_sd_fat_config_8h.html#a3dc42547ca4567cb789bec55759afeb2',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_a.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_a.html deleted file mode 100644 index d6b491aa..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_a.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_a.js deleted file mode 100644 index beb44631..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/defines_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['wdt_5fyield_5ftime_5fmicros',['WDT_YIELD_TIME_MICROS',['../_sd_fat_config_8h.html#a4e8a928d86c50c91c0bfc9a442373e14',1,'SdFatConfig.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enums_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enums_0.html deleted file mode 100644 index 9efcd1b7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enums_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enums_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enums_0.js deleted file mode 100644 index 82b6107c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['seekdir',['seekdir',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191e',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_0.html deleted file mode 100644 index 03fdfad9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_0.js deleted file mode 100644 index 1836d03f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['beg',['beg',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea6639b4dd9e9b57ffef4a176cd1a1e7bb',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_1.html deleted file mode 100644 index abeea564..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_1.js deleted file mode 100644 index 8d0da198..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['cur',['cur',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191ea53910041525b9e2f33bfc3bb4482134c',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_2.html deleted file mode 100644 index 90289986..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_2.js deleted file mode 100644 index b1792d51..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/enumvalues_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['end',['end',['../classios__base.html#ab01103ba35f6ba93a704b3ec0c86191eaae47c0ae984e90b38907783a1a804811',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_0.html deleted file mode 100644 index 49606c82..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_0.js deleted file mode 100644 index ff5b52d2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['arduinofiles_2eh',['ArduinoFiles.h',['../_arduino_files_8h.html',1,'']]], - ['arduinostream_2eh',['ArduinoStream.h',['../_arduino_stream_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_1.html deleted file mode 100644 index c8871748..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_1.js deleted file mode 100644 index 22718b39..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['blockdriver_2eh',['BlockDriver.h',['../_block_driver_8h.html',1,'']]], - ['bufstream_2eh',['bufstream.h',['../bufstream_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_2.html deleted file mode 100644 index 99bdf21c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_2.js deleted file mode 100644 index 2aca7f97..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['fatfile_2eh',['FatFile.h',['../_fat_file_8h.html',1,'']]], - ['fatfilesystem_2eh',['FatFileSystem.h',['../_fat_file_system_8h.html',1,'']]], - ['fatlibconfig_2eh',['FatLibConfig.h',['../_fat_lib_config_8h.html',1,'']]], - ['fatstructs_2eh',['FatStructs.h',['../_fat_structs_8h.html',1,'']]], - ['fatvolume_2eh',['FatVolume.h',['../_fat_volume_8h.html',1,'']]], - ['freestack_2eh',['FreeStack.h',['../_free_stack_8h.html',1,'']]], - ['fstream_2eh',['fstream.h',['../fstream_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_3.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_3.html deleted file mode 100644 index f8e543a8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_3.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_3.js deleted file mode 100644 index 19c93d78..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_3.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['ios_2eh',['ios.h',['../ios_8h.html',1,'']]], - ['iostream_2eh',['iostream.h',['../iostream_8h.html',1,'']]], - ['istream_2eh',['istream.h',['../istream_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_4.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_4.html deleted file mode 100644 index 2ebb46c7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_4.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_4.js deleted file mode 100644 index 13b542ba..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['minimumserial_2eh',['MinimumSerial.h',['../_minimum_serial_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_5.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_5.html deleted file mode 100644 index 268b7eb5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_5.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_5.js deleted file mode 100644 index fbe6ff45..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ostream_2eh',['ostream.h',['../ostream_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_6.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_6.html deleted file mode 100644 index 98fc6666..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_6.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_6.js deleted file mode 100644 index 74d0dc93..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/files_6.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['sdfat_2eh',['SdFat.h',['../_sd_fat_8h.html',1,'']]], - ['sdfatconfig_2eh',['SdFatConfig.h',['../_sd_fat_config_8h.html',1,'']]], - ['sdios_2eh',['sdios.h',['../sdios_8h.html',1,'']]], - ['sdspicard_2eh',['SdSpiCard.h',['../_sd_spi_card_8h.html',1,'']]], - ['stdiostream_2eh',['StdioStream.h',['../_stdio_stream_8h.html',1,'']]], - ['syscall_2eh',['SysCall.h',['../_sys_call_8h.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_0.html deleted file mode 100644 index 0539c8ce..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_0.js deleted file mode 100644 index 53143e8d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['arduinoinstream',['ArduinoInStream',['../class_arduino_in_stream.html#a61ee22a5824849ec3261ee2f814dfb93',1,'ArduinoInStream']]], - ['arduinooutstream',['ArduinoOutStream',['../class_arduino_out_stream.html#a228b667f9f53dc91c6ed7735d34f04a8',1,'ArduinoOutStream']]], - ['available',['available',['../class_minimum_serial.html#a2abe4370989968938b5dc4872d51c3df',1,'MinimumSerial::available()'],['../class_print_file.html#a600592235b2bee6bdb3a9701d0d6eee3',1,'PrintFile::available()'],['../class_file.html#acf613c4e75bae85f543b30e701ebcc44',1,'File::available()'],['../class_fat_file.html#ac1fa779d98db7ffdb96f8019ab0060d6',1,'FatFile::available()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_1.html deleted file mode 100644 index 4878b3d1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_1.js deleted file mode 100644 index 732d024d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_1.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['bad',['bad',['../classios.html#a78be4e3069a644ff36d83a70b080c321',1,'ios']]], - ['begin',['begin',['../class_minimum_serial.html#a5c56beb3472bb97f949defeecacda52c',1,'MinimumSerial::begin()'],['../class_sd_file_system.html#ad94237ef45c52698e97b04e8c131f21e',1,'SdFileSystem::begin()'],['../class_sd_fat.html#abfafe10a64b28e6c1698ed82d340f624',1,'SdFat::begin()'],['../class_sd_fat_sdio.html#ac742b37bd8f2f4eb4df44b37c98398e0',1,'SdFatSdio::begin()'],['../class_sd_fat_sdio_e_x.html#a5af596a3788fa3c321a6cce2fc4e2824',1,'SdFatSdioEX::begin()'],['../class_sd_fat_soft_spi.html#a061019e4b5e17fad3cf8b0e3a08532e4',1,'SdFatSoftSpi::begin()'],['../class_sd_fat_e_x.html#a25acc97272c6004a6a4118bacef07467',1,'SdFatEX::begin()'],['../class_sd_fat_soft_spi_e_x.html#af84b3a6a61dd4c7f3c2c4bb17a8a6609',1,'SdFatSoftSpiEX::begin()'],['../class_sd2_card.html#a8506e1a2d7c4d8ec3f26e8b62ea81cd7',1,'Sd2Card::begin()'],['../class_fat_file_system.html#a5dda20d3dcbfc8c641babbb2c9aac382',1,'FatFileSystem::begin()'],['../class_sdio_card.html#ac749bdad92a4465d062f5d21a7f4faf5',1,'SdioCard::begin()'],['../class_sdio_card_e_x.html#adf877d2c8641cdbd52657004c34ec18a',1,'SdioCardEX::begin()'],['../class_sd_spi_card.html#a824cd60ef8ac2b06262597d6f30a4ea7',1,'SdSpiCard::begin()'],['../class_sd_spi_card_e_x.html#a4fd0b23d230c6ad7dc406e798bbd5470',1,'SdSpiCardEX::begin()']]], - ['block',['block',['../class_fat_cache.html#ab3d9c4f94af61065b6d6d0892827fd8a',1,'FatCache']]], - ['blockspercluster',['blocksPerCluster',['../class_fat_volume.html#af6ab43bc0853febb38298406c4067a43',1,'FatVolume']]], - ['blocksperfat',['blocksPerFat',['../class_fat_volume.html#adb87da3b10344f28a92dfade492b8398',1,'FatVolume']]], - ['boolalpha',['boolalpha',['../ios_8h.html#a0016daaaf730481e2ad36972fa7abb17',1,'ios.h']]], - ['buf',['buf',['../classobufstream.html#a4f699181bd3727f4288f4f95a5ce207f',1,'obufstream']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_10.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_10.html deleted file mode 100644 index 6f6fbae2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_10.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_10.js deleted file mode 100644 index 20d588bb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_10.js +++ /dev/null @@ -1,32 +0,0 @@ -var searchData= -[ - ['sdbasefile',['SdBaseFile',['../class_sd_base_file.html#af23fd43105b4eb629f4b66fa695a5cf3',1,'SdBaseFile']]], - ['sdfat',['SdFat',['../class_sd_fat.html#a68d0e890435e3e71e5e44db1736add1e',1,'SdFat']]], - ['sdfatex',['SdFatEX',['../class_sd_fat_e_x.html#aef4d79f9a36785543f48ddc18ac2af78',1,'SdFatEX']]], - ['sdfile',['SdFile',['../class_sd_file.html#ad05be3a1fb635448d15a154424b6c33f',1,'SdFile']]], - ['sdspicard',['SdSpiCard',['../class_sd_spi_card.html#a0441c5da53bd3bd72fb833fc940f25e8',1,'SdSpiCard']]], - ['seek',['seek',['../class_file.html#a2d41ea52356b769e05e1242685758c08',1,'File']]], - ['seekcur',['seekCur',['../class_fat_file.html#a5812037ea30777cc350698ad26f2c73f',1,'FatFile']]], - ['seekend',['seekEnd',['../class_fat_file.html#a84f677f4e75ef6fa2eb632f4cdf6b486',1,'FatFile']]], - ['seekg',['seekg',['../classistream.html#a52d637b1aeca9946085a4a72e0208aec',1,'istream::seekg(pos_type pos)'],['../classistream.html#a60dd48a3b374fb9cbdc59e1f930dea95',1,'istream::seekg(off_type off, seekdir way)']]], - ['seekp',['seekp',['../classostream.html#a18b453d2770a8852c312cbda919c4687',1,'ostream::seekp(pos_type pos)'],['../classostream.html#af6265a5be29237517b30673667ba4213',1,'ostream::seekp(off_type off, seekdir way)']]], - ['seekset',['seekSet',['../class_fat_file.html#ab067190d25733ed7e697d9890f61fd7a',1,'FatFile']]], - ['setcwd',['setCwd',['../class_fat_file.html#a360ef9c05e677271bed6c0a4d663634c',1,'FatFile']]], - ['setf',['setf',['../classios__base.html#ab5db835cb45bba7684ebf72d9a3cccb4',1,'ios_base::setf(fmtflags fl)'],['../classios__base.html#a74dbc93607ab7d68a87ec326b92b6c81',1,'ios_base::setf(fmtflags fl, fmtflags mask)']]], - ['setfill',['setfill',['../structsetfill.html#abcd87f0632678d277df55406d25c8325',1,'setfill']]], - ['setpos',['setpos',['../class_fat_file.html#acf264de4e3ca36c5e8a39e56173c9044',1,'FatFile']]], - ['setprecision',['setprecision',['../structsetprecision.html#a73fce143591989f56ef887a2ea86ac45',1,'setprecision']]], - ['setstate',['setstate',['../classios.html#aee5d194656bdfb0c8621b23ea2f51afb',1,'ios']]], - ['setw',['setw',['../structsetw.html#afd8bfd075474f63df3c8b44ad47517d2',1,'setw']]], - ['showbase',['showbase',['../ios_8h.html#a73159e1398939807aeae6015dd86f2f4',1,'ios.h']]], - ['showpoint',['showpoint',['../ios_8h.html#a322f5897ace09768cd782f0c8f222770',1,'ios.h']]], - ['showpos',['showpos',['../ios_8h.html#a80798554dbfece679adb0e05eb855943',1,'ios.h']]], - ['size',['size',['../class_file.html#a603d3cd3319142d00a7ebd434970b017',1,'File']]], - ['skipwhite',['skipWhite',['../classistream.html#a0f7468be86d93de5d33fa99095898279',1,'istream']]], - ['skipws',['skipws',['../ios_8h.html#a972282e5d9d894f61c8a54423858c0a4',1,'ios.h']]], - ['spistart',['spiStart',['../class_sd_spi_card.html#aa39feb6ebb269071ac6843a424ac311c',1,'SdSpiCard']]], - ['spistop',['spiStop',['../class_sd_spi_card.html#a1033a4a68d38f52dddf6a1764fcca3e1',1,'SdSpiCard']]], - ['stdiostream',['StdioStream',['../class_stdio_stream.html#a96b2c027e76bfca6d6835c9ae1be2ad2',1,'StdioStream']]], - ['sync',['sync',['../class_fat_file.html#a67f3dc4896c542d695e11aac927f585e',1,'FatFile::sync()'],['../class_fat_cache.html#a4d76d4f46ce5994f6fc4678a7b4f8cf1',1,'FatCache::sync()']]], - ['syncblocks',['syncBlocks',['../class_base_block_driver.html#a5361ff2658d7654bf00b97c54c6aa2aa',1,'BaseBlockDriver::syncBlocks()'],['../class_sdio_card.html#affcd36a5c3a42042fe24716671f06632',1,'SdioCard::syncBlocks()'],['../class_sdio_card_e_x.html#a02699a39ef940441ef0f1049742c5aa7',1,'SdioCardEX::syncBlocks()'],['../class_sd_spi_card.html#a1b6d5f412c4ad75c2f575ca75c56c095',1,'SdSpiCard::syncBlocks()'],['../class_sd_spi_card_e_x.html#af4a7c15bae6add50d66d066c0927a021',1,'SdSpiCardEX::syncBlocks()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_11.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_11.html deleted file mode 100644 index dd88d8b7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_11.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_11.js deleted file mode 100644 index 0c4a4d7a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_11.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['tellg',['tellg',['../classistream.html#a18332bdcb7fbe33ca06045c786cac4c3',1,'istream']]], - ['tellp',['tellp',['../classostream.html#a92dec0e2bc8352df1419d1cdc434e619',1,'ostream']]], - ['timestamp',['timestamp',['../class_fat_file.html#aa53a8d1d2467ad9af7d61cbf8ee85243',1,'FatFile::timestamp(FatFile *file)'],['../class_fat_file.html#a56dabdf73833b7e961c4530eb8e16d23',1,'FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)']]], - ['truncate',['truncate',['../class_fat_file.html#aa6e663098a578635d37d92e82d18d616',1,'FatFile::truncate()'],['../class_fat_file_system.html#ad60cb13557f35578f868e03e9ccb8be1',1,'FatFileSystem::truncate()']]], - ['type',['type',['../class_sdio_card.html#a2151106a93280ae41bab654428214661',1,'SdioCard::type()'],['../class_sd_spi_card.html#a48f1e3f107d7242518bdfed78acb46bc',1,'SdSpiCard::type()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_12.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_12.html deleted file mode 100644 index 7093d19f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_12.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_12.js deleted file mode 100644 index e5df2462..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_12.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['ungetc',['ungetc',['../class_stdio_stream.html#ac00e0dd906c2e857ece53794c6c92786',1,'StdioStream']]], - ['unsetf',['unsetf',['../classios__base.html#a3bf7d054a433ed15e8b984e16f630fa4',1,'ios_base']]], - ['uppercase',['uppercase',['../ios_8h.html#af5d5e1a0effa1b500bb882feed5a2061',1,'ios.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_13.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_13.html deleted file mode 100644 index 051a1eb8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_13.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_13.js deleted file mode 100644 index 04c50c2e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_13.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['vol',['vol',['../class_fat_file_system.html#a4ca68fe47bb675df0a80df1ed7a53698',1,'FatFileSystem']]], - ['volume',['volume',['../class_fat_file.html#ae813920a21860b25f25d95c934dada0f',1,'FatFile']]], - ['volumeblockcount',['volumeBlockCount',['../class_fat_volume.html#ada9f893c796559c132ef9da061f04a39',1,'FatVolume']]], - ['vwd',['vwd',['../class_fat_file_system.html#acf257d02b7166683bda2abc5058004bf',1,'FatFileSystem']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_14.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_14.html deleted file mode 100644 index d5fdbda4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_14.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_14.js deleted file mode 100644 index ef3473f3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_14.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['width',['width',['../classios__base.html#afa30e7644b4eae5928ad9c487ad387de',1,'ios_base::width()'],['../classios__base.html#ab2ba0f005bbf3d8ebed93b64068492e0',1,'ios_base::width(unsigned n)']]], - ['wipe',['wipe',['../class_fat_file_system.html#a36d7831f92acfbfef1c4a24dd7103dc4',1,'FatFileSystem::wipe()'],['../class_fat_volume.html#a8088aa74cf601996905dadd2eea6966c',1,'FatVolume::wipe()']]], - ['write',['write',['../class_minimum_serial.html#a0ca1d9631fe5f2f00878bd481dbbd3aa',1,'MinimumSerial::write()'],['../class_print_file.html#a460b033ff85e85f684f8d9b615645db1',1,'PrintFile::write(uint8_t b)'],['../class_print_file.html#a29c1d534d21c3a82ad04232d37119a57',1,'PrintFile::write(const uint8_t *buf, size_t size)'],['../class_file.html#a618a6b2b7e81bfb93e0d3c158f614f90',1,'File::write(uint8_t b)'],['../class_file.html#aa531c1641a2363e1f6b9d103f37433da',1,'File::write(const uint8_t *buf, size_t size)'],['../class_fat_file.html#aa4a5b81161994cea07938702cdfce49f',1,'FatFile::write(const char *str)'],['../class_fat_file.html#a5524bd9f3b8f54ee163e391cba618186',1,'FatFile::write(uint8_t b)'],['../class_fat_file.html#a0ab9df44a9ee4b6eb0a78f15f1e30004',1,'FatFile::write(const void *buf, size_t nbyte)']]], - ['writeblock',['writeBlock',['../class_base_block_driver.html#a87df3db1b400286883661525441d39fa',1,'BaseBlockDriver::writeBlock()'],['../class_sdio_card.html#ae53e5f72ddf9ace3f47774d968e064ed',1,'SdioCard::writeBlock()'],['../class_sdio_card_e_x.html#ab34379d6663461dd0000180e640b73be',1,'SdioCardEX::writeBlock()'],['../class_sd_spi_card.html#a03a0bdb0f37a88076f24a2133cf5b4ed',1,'SdSpiCard::writeBlock()'],['../class_sd_spi_card_e_x.html#a6bd5e6bcfc2ab9574daa11bdd342be7b',1,'SdSpiCardEX::writeBlock()']]], - ['writeblocks',['writeBlocks',['../class_base_block_driver.html#a3d6520b21252ebfb17b0cac0b87689b1',1,'BaseBlockDriver::writeBlocks()'],['../class_sdio_card.html#a8b811f875497e90e75fbe6c2d41d89cb',1,'SdioCard::writeBlocks()'],['../class_sdio_card_e_x.html#a0e504921296a473da074d4a60d573f29',1,'SdioCardEX::writeBlocks()'],['../class_sd_spi_card.html#a181d96fe44891b7caabcd47dd29ac913',1,'SdSpiCard::writeBlocks()'],['../class_sd_spi_card_e_x.html#a9a7a5815b56c2cc77590a72635593762',1,'SdSpiCardEX::writeBlocks()']]], - ['writedata',['writeData',['../class_sdio_card.html#a8467e7ffafa45ff930b38a6f18e9547a',1,'SdioCard::writeData()'],['../class_sd_spi_card.html#a9495c0b148eb380358bb4a9721c0dffa',1,'SdSpiCard::writeData()']]], - ['writestart',['writeStart',['../class_sdio_card.html#a6216b2b1c42bd585669955f774292f78',1,'SdioCard::writeStart(uint32_t lba)'],['../class_sdio_card.html#a55b31eb21c986c8476bf42e975801e05',1,'SdioCard::writeStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a56d4750a5d2f693943eec985cb61ffe2',1,'SdSpiCard::writeStart(uint32_t blockNumber)'],['../class_sd_spi_card.html#a8bf0dc991308dcd2a7427bad89a9e2ba',1,'SdSpiCard::writeStart(uint32_t blockNumber, uint32_t eraseCount)']]], - ['writestop',['writeStop',['../class_sdio_card.html#acb560c2ea1f30c646b96f02e728b0fe1',1,'SdioCard::writeStop()'],['../class_sd_spi_card.html#aef9154785a4de5560fb807e4f9316fb0',1,'SdSpiCard::writeStop()']]], - ['ws',['ws',['../iostream_8h.html#a8adf4c714b8c8f201dedc83ee04556b1',1,'iostream.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_15.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_15.html deleted file mode 100644 index 546d13e6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_15.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_15.js deleted file mode 100644 index 685c4a73..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['yield',['yield',['../class_sys_call.html#a2219ba5ea8e411b022a3a00df5f380e0',1,'SysCall']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_2.html deleted file mode 100644 index 67d2a392..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_2.js deleted file mode 100644 index d370df0f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_2.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['cacheclear',['cacheClear',['../class_fat_volume.html#aa1e3b1d0c21d202deb82668068ab00e8',1,'FatVolume']]], - ['card',['card',['../class_sd_file_system.html#ab5dcfbeeb7caa38a38db86003341eb07',1,'SdFileSystem::card()'],['../class_sd_fat_sdio_e_x.html#ac3fe2fd93b491918ec77308ec7c0290c',1,'SdFatSdioEX::card()']]], - ['cardbegin',['cardBegin',['../class_sd_fat.html#ae380e4572776db851b2f80a3ed143fca',1,'SdFat::cardBegin()'],['../class_sd_fat_sdio.html#ac49062cc8fb2a42564d0ff05b4c0be8b',1,'SdFatSdio::cardBegin()'],['../class_sd_fat_sdio_e_x.html#a18f3cf979d7e72105c4642b0ebb56324',1,'SdFatSdioEX::cardBegin()']]], - ['carderrorcode',['cardErrorCode',['../class_sd_file_system.html#aedfd5a0830c955bc5514e52f2f2dd066',1,'SdFileSystem']]], - ['carderrordata',['cardErrorData',['../class_sd_file_system.html#a0602ab3c04ea33293649f0a15fc81e05',1,'SdFileSystem']]], - ['cardsize',['cardSize',['../class_sdio_card.html#a3d8f9a92f7faec77094ec65e6c41dd45',1,'SdioCard::cardSize()'],['../class_sd_spi_card.html#afca8bd6b7e465bf9c475ba375c4deec8',1,'SdSpiCard::cardSize()']]], - ['chdir',['chdir',['../class_fat_file_system.html#a5667915e63187a43a71dfada63800865',1,'FatFileSystem::chdir(bool set_cwd=false)'],['../class_fat_file_system.html#a44af1b98e8d986d12107b654453acbc4',1,'FatFileSystem::chdir(const char *path, bool set_cwd=false)']]], - ['chvol',['chvol',['../class_fat_file_system.html#af24917d6e00c8766dab168eb834047ec',1,'FatFileSystem']]], - ['clear',['clear',['../classfstream.html#a682b278a6a299ffb21b8737717ff12bf',1,'fstream::clear()'],['../classofstream.html#a09edfdb3dbda20aff105e751001313f0',1,'ofstream::clear()'],['../classios.html#aa49ed6670d1743e7a373b2d915ec739a',1,'ios::clear()']]], - ['clearerr',['clearerr',['../class_stdio_stream.html#aa737e5680fc2808a03a603ea8559d82b',1,'StdioStream']]], - ['clearerror',['clearError',['../class_fat_file.html#a052e2c15a39b322a5307b693b8835b22',1,'FatFile']]], - ['clearwriteerror',['clearWriteError',['../class_fat_file.html#aeca2a2eff91e6aa55fe1b0e3860c9a05',1,'FatFile']]], - ['close',['close',['../class_fat_file.html#afd16af325e0642e4bff6430b7d8bb18b',1,'FatFile::close()'],['../classfstream.html#ac5720ee620c09d63dd186823e688ea9a',1,'fstream::close()'],['../classifstream.html#ac5892f472afdef6160f5fe2401b16dce',1,'ifstream::close()'],['../classofstream.html#a240f3752c7ff7a78d10c143d2083715f',1,'ofstream::close()']]], - ['clustercount',['clusterCount',['../class_fat_volume.html#ae724879a554174e31a737f73da418009',1,'FatVolume']]], - ['clustersizeshift',['clusterSizeShift',['../class_fat_volume.html#ab36468240ef6846578ad7f58d1bc41ac',1,'FatVolume']]], - ['contiguousrange',['contiguousRange',['../class_fat_file.html#aa367708bcc8bc0e0c45c0c2a812c65da',1,'FatFile']]], - ['createcontiguous',['createContiguous',['../class_fat_file.html#a0afc2a1cffa238d1cb2049bfa2d8d199',1,'FatFile::createContiguous(FatFile *dirFile, const char *path, uint32_t size)'],['../class_fat_file.html#a0853fbd44aee2798d14d8e3aed78f8bf',1,'FatFile::createContiguous(const char *path, uint32_t size)']]], - ['curcluster',['curCluster',['../class_fat_file.html#a526f3dd56ce205690e45ffc86ef6f891',1,'FatFile']]], - ['curposition',['curPosition',['../class_fat_file.html#a97e0620949f97e9b9c91ed1094d728aa',1,'FatFile']]], - ['curtimems',['curTimeMS',['../_sys_call_8h.html#a7a1c5babdcf00c78d4d2e6a012bd9e68',1,'SysCall.h']]], - ['cwd',['cwd',['../class_fat_file.html#a3b68e603ad8e47bad915f0547e580adb',1,'FatFile']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_3.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_3.html deleted file mode 100644 index 1f0eedb3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_3.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_3.js deleted file mode 100644 index dae4ac05..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_3.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['datastartblock',['dataStartBlock',['../class_fat_volume.html#a55906112e0d151db3b144d29630f5066',1,'FatVolume']]], - ['datetimecallback',['dateTimeCallback',['../class_fat_file.html#a29a623f50df057e8b49045ba6611ec2b',1,'FatFile']]], - ['datetimecallbackcancel',['dateTimeCallbackCancel',['../class_fat_file.html#a5df02f1d037e6091375488af25244ebc',1,'FatFile']]], - ['dbgfat',['dbgFat',['../class_fat_volume.html#a25c6311b70fa274b3be94ff25fdebba7',1,'FatVolume']]], - ['dec',['dec',['../ios_8h.html#ada38ab90e22f0ebb638cb864a35c562d',1,'ios.h']]], - ['dir_5fis_5ffile',['DIR_IS_FILE',['../_fat_structs_8h.html#a5ce8bde4d6ff3950df951e84c7bb8d58',1,'FatStructs.h']]], - ['dir_5fis_5ffile_5for_5fsubdir',['DIR_IS_FILE_OR_SUBDIR',['../_fat_structs_8h.html#a9d99b04fa090825a9b9c2468fa81e627',1,'FatStructs.h']]], - ['dir_5fis_5fhidden',['DIR_IS_HIDDEN',['../_fat_structs_8h.html#a5137c8165addb9d32c6094d03a9d029d',1,'FatStructs.h']]], - ['dir_5fis_5flong_5fname',['DIR_IS_LONG_NAME',['../_fat_structs_8h.html#a504c3d996b412f386becc27a8c49cd2c',1,'FatStructs.h']]], - ['dir_5fis_5fsubdir',['DIR_IS_SUBDIR',['../_fat_structs_8h.html#ace8ed88fcb41afc4d2fe0eabf96e71c6',1,'FatStructs.h']]], - ['dir_5fis_5fsystem',['DIR_IS_SYSTEM',['../_fat_structs_8h.html#a46cad0d590c5e290c52ccf660b316dd9',1,'FatStructs.h']]], - ['direntry',['dirEntry',['../class_fat_file.html#a6858d18c807411a071fd6d1b39d50087',1,'FatFile']]], - ['dirindex',['dirIndex',['../class_fat_file.html#ae5ec24d4a94d3780384d3f2b731c7eb9',1,'FatFile']]], - ['dirname',['dirName',['../class_fat_file.html#a648461081fe07578780f4cd3f246cb66',1,'FatFile']]], - ['dirsize',['dirSize',['../class_fat_file.html#ae2ed15f05c9ccbce355e7a8d3ce8382d',1,'FatFile']]], - ['dirty',['dirty',['../class_fat_cache.html#ab4d3b0c16bb6a116c7d01afff2dcb307',1,'FatCache']]], - ['dmpfile',['dmpFile',['../class_fat_file.html#a4f01d27954ae49aeb6888ac7302f55d9',1,'FatFile']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_4.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_4.html deleted file mode 100644 index c5bf87a4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_4.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_4.js deleted file mode 100644 index d7256582..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_4.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['endl',['endl',['../iostream_8h.html#ab9868f8e151efc1705646437dbb59bb2',1,'iostream.h']]], - ['eof',['eof',['../classios.html#a7aa5ea2f670d64eb3dcb3b62eddd576c',1,'ios']]], - ['erase',['erase',['../class_sdio_card.html#a1ce82b035257790ed8e4a9be3d966b80',1,'SdioCard::erase()'],['../class_sdio_card_e_x.html#a58362f3ddf4bc5ce632cce6768b2d780',1,'SdioCardEX::erase()'],['../class_sd_spi_card.html#a1caa13d19df6596b2c0dd62365c75362',1,'SdSpiCard::erase()']]], - ['erasesingleblockenable',['eraseSingleBlockEnable',['../class_sd_spi_card.html#aed4591884254c9f58daa8738d7c1ccdd',1,'SdSpiCard']]], - ['error',['error',['../class_sd_spi_card.html#aa12ad53111abcb187d3c6119a3a77592',1,'SdSpiCard']]], - ['errorcode',['errorCode',['../class_sdio_card.html#a4ff272009a24fc4078ac87c2d87ccd16',1,'SdioCard::errorCode()'],['../class_sd_spi_card.html#a4c736fb8d6d9d734d5e262875c74f054',1,'SdSpiCard::errorCode()']]], - ['errordata',['errorData',['../class_sdio_card.html#a8251b9aa0d623487e80cf908fc1625b5',1,'SdioCard::errorData()'],['../class_sd_spi_card.html#a10bb2f65b1ca85ad14de19e61a283262',1,'SdSpiCard::errorData()']]], - ['errorhalt',['errorHalt',['../class_sd_file_system.html#a855267374306bfee2df67642c99d4d18',1,'SdFileSystem::errorHalt()'],['../class_sd_file_system.html#ae1f79a2974ebe134e70f898c32d97e98',1,'SdFileSystem::errorHalt(Print *pr)'],['../class_sd_file_system.html#a32c20dfa6a8cb8af95f25847b19bdbca',1,'SdFileSystem::errorHalt(char const *msg)'],['../class_sd_file_system.html#a27fb329d6aee79a63c20386218ce7e9e',1,'SdFileSystem::errorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#af856494745a9842d9728dfeabf19c51e',1,'SdFileSystem::errorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a746c80d048c30baf0b281e16932670a2',1,'SdFileSystem::errorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['errorline',['errorLine',['../class_sdio_card.html#aafa9feb1b5a90f3cf96456b6b286bfdf',1,'SdioCard']]], - ['errorprint',['errorPrint',['../class_sd_file_system.html#ab0b78154d6874c29279ba81f36ccb09c',1,'SdFileSystem::errorPrint()'],['../class_sd_file_system.html#a03736274debea71fef5e2ff34d7ec3dc',1,'SdFileSystem::errorPrint(Print *pr)'],['../class_sd_file_system.html#a2e2436b7b2666737cbaf4b22218bc69f',1,'SdFileSystem::errorPrint(const char *msg)'],['../class_sd_file_system.html#a0eb6b92a0700ba932f6127962981d153',1,'SdFileSystem::errorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#a1ccb1f937f42e9c1331c942bc357f6da',1,'SdFileSystem::errorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a43344a079d9af92ea4b550914d0512f6',1,'SdFileSystem::errorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['exists',['exists',['../class_fat_file.html#a50242f98dea0d4488ce4039a279f2a57',1,'FatFile::exists()'],['../class_fat_file_system.html#aee58c6352652f216577196e32a594b67',1,'FatFileSystem::exists()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_5.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_5.html deleted file mode 100644 index a34446ce..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_5.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_5.js deleted file mode 100644 index c88a4612..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_5.js +++ /dev/null @@ -1,42 +0,0 @@ -var searchData= -[ - ['fail',['fail',['../classios.html#a15269e67d05d4fe83a6cf344d542f8ae',1,'ios']]], - ['fat_5fdate',['FAT_DATE',['../_fat_structs_8h.html#a44899ad42ddf32ff1c1a73b5251b304a',1,'FatStructs.h']]], - ['fat_5fday',['FAT_DAY',['../_fat_structs_8h.html#a4cc8bc105529bf9e9c11e8ef099d68b0',1,'FatStructs.h']]], - ['fat_5fhour',['FAT_HOUR',['../_fat_structs_8h.html#ae7c733d49a5570054f6db3bd53332ba1',1,'FatStructs.h']]], - ['fat_5fminute',['FAT_MINUTE',['../_fat_structs_8h.html#a1b09676a41ae6c9e19664bdcd5b1d34e',1,'FatStructs.h']]], - ['fat_5fmonth',['FAT_MONTH',['../_fat_structs_8h.html#a429bc2d96f5bc26dc3bd6cc2bd535b84',1,'FatStructs.h']]], - ['fat_5fsecond',['FAT_SECOND',['../_fat_structs_8h.html#a4d553e2088d42e01d6c08ee84e611b00',1,'FatStructs.h']]], - ['fat_5ftime',['FAT_TIME',['../_fat_structs_8h.html#a375720927be5a39475d48b2d75dae29a',1,'FatStructs.h']]], - ['fat_5fyear',['FAT_YEAR',['../_fat_structs_8h.html#a279a75f907dd2603543c7bdad00ff603',1,'FatStructs.h']]], - ['fatcount',['fatCount',['../class_fat_volume.html#acdedc6a200b01e401c9cd9b511eae6ec',1,'FatVolume']]], - ['fatfile',['FatFile',['../class_fat_file.html#a7b591c9b92165fa8e4eae8c30c30e533',1,'FatFile::FatFile()'],['../class_fat_file.html#a38f9a296138648d6135cbbbf41ef6b92',1,'FatFile::FatFile(const char *path, oflag_t oflag)']]], - ['fatstartblock',['fatStartBlock',['../class_fat_volume.html#a260bc030ab188a481dd34d6062f7b9d2',1,'FatVolume']]], - ['fattype',['fatType',['../class_fat_volume.html#a0d736f0e8f03476b896307fbe5427376',1,'FatVolume']]], - ['fatvolume',['FatVolume',['../class_fat_volume.html#a026de2bb58026e4edea130db2949b84c',1,'FatVolume']]], - ['fclose',['fclose',['../class_stdio_stream.html#a4ddd4658d49182013d2fa2a181e96c5a',1,'StdioStream']]], - ['feof',['feof',['../class_stdio_stream.html#acb38c3211feedbf2206eb1d9a3a9d24f',1,'StdioStream']]], - ['ferror',['ferror',['../class_stdio_stream.html#afd64cec6440b923660b444f6d5f0586e',1,'StdioStream']]], - ['fflush',['fflush',['../class_stdio_stream.html#a7ce32ec7ea3f2fd8ea42b9633890f1c0',1,'StdioStream']]], - ['fgetc',['fgetc',['../class_stdio_stream.html#a160bd2828cb7e7370cffe1046eff8899',1,'StdioStream']]], - ['fgets',['fgets',['../class_fat_file.html#a31ef26b3ee37cf5f5f4c6024c0ddab69',1,'FatFile::fgets()'],['../class_stdio_stream.html#aa240c1021a1aad1cc57f63a483541dc7',1,'StdioStream::fgets()']]], - ['file',['File',['../class_file.html#af72feff53281f269ac592cba92397cd4',1,'File']]], - ['fileattr',['fileAttr',['../class_fat_file.html#a28ebaf42f0173adeb9faa1884337c8f8',1,'FatFile']]], - ['filesize',['fileSize',['../class_fat_file.html#a874940574b9c99e763526465adf8dc28',1,'FatFile']]], - ['fill',['fill',['../classios__base.html#ade5bd46462e075999c3a5c2cff2015f1',1,'ios_base::fill()'],['../classios__base.html#aa5683f9bdf295311bd5a6d3cdc2fedd5',1,'ios_base::fill(char c)']]], - ['firstblock',['firstBlock',['../class_fat_file.html#ac87b753811e540c7b799da56fa89724b',1,'FatFile']]], - ['firstcluster',['firstCluster',['../class_fat_file.html#ad6233a5122080219b6d8148b1bec4b6a',1,'FatFile']]], - ['flags',['flags',['../classios__base.html#a2a73a30a8b157cc1cc92bb55b0a62e4a',1,'ios_base::flags() const'],['../classios__base.html#ae67e900dc12e4c7cbc0741ad1c70d6c2',1,'ios_base::flags(fmtflags fl)']]], - ['flush',['flush',['../class_minimum_serial.html#a872f0ff70f0e256352004f83d13fff28',1,'MinimumSerial::flush()'],['../class_print_file.html#a53c4cb94af030fdf83a9160ec9a96949',1,'PrintFile::flush()'],['../class_file.html#af87fa862de707575b8badd044a5af80e',1,'File::flush()'],['../classostream.html#af6be1f30d824f5a65d27d5b5d20b8c6c',1,'ostream::flush()'],['../iostream_8h.html#a2f6f5344fca38fd4fe7b6231fd992a0d',1,'flush(): iostream.h']]], - ['fopen',['fopen',['../class_stdio_stream.html#a4ffc37225fb6deed98905aa71d1f9c4b',1,'StdioStream']]], - ['fputc',['fputc',['../class_stdio_stream.html#a9f23cfa6b112a5da6ae08340af23c57b',1,'StdioStream']]], - ['fputs',['fputs',['../class_stdio_stream.html#a6adea52f55ef7d97cdb54e9e11fc2daa',1,'StdioStream']]], - ['fread',['fread',['../class_stdio_stream.html#a2d363b02abcef82b25ff025d50375bce',1,'StdioStream']]], - ['freeclustercount',['freeClusterCount',['../class_fat_volume.html#a1683b063fc6202ab85470b9610f16f93',1,'FatVolume']]], - ['freestack',['FreeStack',['../_free_stack_8h.html#a2c0121d5649d35329a8d0a71e4ffb89b',1,'FreeStack.h']]], - ['fsbegin',['fsBegin',['../class_sd_fat.html#add6a9a3ad07585f6e0e5c35e35cacb9a',1,'SdFat::fsBegin()'],['../class_sd_fat_sdio.html#aac0e8d86182a0e0566c4671c15f3df61',1,'SdFatSdio::fsBegin()'],['../class_sd_fat_sdio_e_x.html#ae7c3cc13d2ec18ab14b4ff88348cc7a0',1,'SdFatSdioEX::fsBegin()']]], - ['fseek',['fseek',['../class_stdio_stream.html#a71584fd5c5cda3c31ce6cdbcc56f104d',1,'StdioStream']]], - ['fstream',['fstream',['../classfstream.html#aed23877c52f828cab8de7a23603b3b6c',1,'fstream']]], - ['ftell',['ftell',['../class_stdio_stream.html#a809639fc5fb4fa5b6789dc121659f386',1,'StdioStream']]], - ['fwrite',['fwrite',['../class_stdio_stream.html#ad79465afb52579cbc801f4585c3f9c25',1,'StdioStream']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_6.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_6.html deleted file mode 100644 index 6fd4b1f3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_6.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_6.js deleted file mode 100644 index 6e73c6e5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_6.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['gcount',['gcount',['../classistream.html#ad0a3db5199ca44b191a9675f2dd3a098',1,'istream']]], - ['get',['get',['../classistream.html#a36573c9b7fc522e6c85a73221019fd11',1,'istream::get()'],['../classistream.html#a9c7313d6f21f1f7ac9b0e759e74b4db2',1,'istream::get(char &ch)'],['../classistream.html#a2c963fd04375e5faa1b7a4362986269a',1,'istream::get(char *str, streamsize n, char delim='\n')']]], - ['getc',['getc',['../class_stdio_stream.html#a28ba31e7b526607744bfa41844ffce31',1,'StdioStream']]], - ['geterror',['getError',['../class_fat_file.html#ad0dbbd083180f44c7a3ce7124d4ce19c',1,'FatFile']]], - ['getline',['getline',['../classistream.html#a7ea6a5edd6b44a6e1ed297fb278b5d52',1,'istream']]], - ['getname',['getName',['../class_fat_file.html#aafa565e286440aab612cdb430fc01da5',1,'FatFile']]], - ['getpos',['getpos',['../class_fat_file.html#aaa4f9886887947815a61eaf015996932',1,'FatFile']]], - ['getsfn',['getSFN',['../class_fat_file.html#aba30e92a66f8e0d2f815c85662772a58',1,'FatFile']]], - ['getwriteerror',['getWriteError',['../class_fat_file.html#a8062c0d3a118e8d77d0310418703d5f5',1,'FatFile']]], - ['good',['good',['../classios.html#a0192d754476f243d7f13dc16e851c7cc',1,'ios']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_7.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_7.html deleted file mode 100644 index 6e09abf1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_7.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_7.js deleted file mode 100644 index 42d85c2a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['halt',['halt',['../class_sys_call.html#a9b1ef8900e97f572ca561760b4dd4191',1,'SysCall']]], - ['hex',['hex',['../ios_8h.html#ace2036d970905192360d622140bfe336',1,'ios.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_8.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_8.html deleted file mode 100644 index d59ea971..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_8.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_8.js deleted file mode 100644 index 579e16e1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_8.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['ibufstream',['ibufstream',['../classibufstream.html#afe28f27d24a62a21428b60fe8834dd05',1,'ibufstream::ibufstream()'],['../classibufstream.html#a819561105ef7dc3828e0cfedfed708d8',1,'ibufstream::ibufstream(const char *str)']]], - ['ifstream',['ifstream',['../classifstream.html#a11f4bfaa5c37cfcf8878c367fd861a88',1,'ifstream']]], - ['ignore',['ignore',['../classistream.html#a12597b03d86b66047a5581bbd26eb032',1,'istream']]], - ['init',['init',['../classibufstream.html#a1d7bae17d9d2c79218085251946f322a',1,'ibufstream::init()'],['../classobufstream.html#a8f75dbadab2fed7770d01a2cc2628258',1,'obufstream::init()'],['../class_fat_cache.html#ae1d8a2da1493b5ffca0520184daaddf1',1,'FatCache::init()'],['../class_fat_volume.html#acab819fa25a91dad1cc698a7e1e0eb32',1,'FatVolume::init()'],['../class_fat_volume.html#a034d997a1e7a0b2b664a4357bcccd256',1,'FatVolume::init(uint8_t part)']]], - ['initerrorhalt',['initErrorHalt',['../class_sd_file_system.html#a8e1f26486bb878a24fa9868e59dbbbc2',1,'SdFileSystem::initErrorHalt()'],['../class_sd_file_system.html#a24bd0f699cf0fe11fd2148b15c49251a',1,'SdFileSystem::initErrorHalt(Print *pr)'],['../class_sd_file_system.html#a893833a880e2a83757480ba4c1351041',1,'SdFileSystem::initErrorHalt(char const *msg)'],['../class_sd_file_system.html#a3077b1a53d789d0401b707963cb28f46',1,'SdFileSystem::initErrorHalt(Print *pr, char const *msg)'],['../class_sd_file_system.html#a2a1e4cc8056ba23b55dfa2c6486b8798',1,'SdFileSystem::initErrorHalt(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#ab03d98012dea18733c3252f27832de69',1,'SdFileSystem::initErrorHalt(Print *pr, const __FlashStringHelper *msg)']]], - ['initerrorprint',['initErrorPrint',['../class_sd_file_system.html#ae31c9cbd7e1c03129d6c99b25f73cd50',1,'SdFileSystem::initErrorPrint()'],['../class_sd_file_system.html#a066707dce0667213b5f083d59f67448d',1,'SdFileSystem::initErrorPrint(Print *pr)'],['../class_sd_file_system.html#a538796f79fd9db9c5bbeefd9defe639a',1,'SdFileSystem::initErrorPrint(char const *msg)'],['../class_sd_file_system.html#ad9855d33ebd465715b706d0926291b13',1,'SdFileSystem::initErrorPrint(Print *pr, char const *msg)'],['../class_sd_file_system.html#ad6ffec5a7d82be46d46b8a4f82d0803b',1,'SdFileSystem::initErrorPrint(const __FlashStringHelper *msg)'],['../class_sd_file_system.html#a8a2018b6366145a9843d3d29a47d6560',1,'SdFileSystem::initErrorPrint(Print *pr, const __FlashStringHelper *msg)']]], - ['internal',['internal',['../ios_8h.html#a8dd76c1ce8fced364a98428ca1eea7a6',1,'ios.h']]], - ['invalidate',['invalidate',['../class_fat_cache.html#a70071a128d647b49b523dbb2f5f944a5',1,'FatCache']]], - ['ios',['ios',['../classios.html#adc5dbd7b69da79493ebc84aa1e681aaa',1,'ios']]], - ['is_5fopen',['is_open',['../classfstream.html#ae4a71c6f3da2f168ec222739d796fc8b',1,'fstream::is_open()'],['../classifstream.html#aaa16c6422ea371995d02159f2e6707b2',1,'ifstream::is_open()'],['../classofstream.html#a9c97eb2eb6e35ae87cf7f7453a67e70a',1,'ofstream::is_open()']]], - ['isbusy',['isBusy',['../class_sdio_card.html#a560bdfc96932d073c2b0610600560f78',1,'SdioCard::isBusy()'],['../class_sd_spi_card.html#aa3cb9139dbc1e6596c6717da2b486328',1,'SdSpiCard::isBusy()']]], - ['isdir',['isDir',['../class_fat_file.html#a933360b20b496421b2bd9ee7a95563a6',1,'FatFile']]], - ['isdirectory',['isDirectory',['../class_file.html#a6ba5bdb943363cda56649238ccb18c27',1,'File']]], - ['isdirty',['isDirty',['../class_fat_cache.html#ae50287d95bd78558db1e4aa97d7b2c06',1,'FatCache']]], - ['isfile',['isFile',['../class_fat_file.html#acc5a87da1a5c8cb9758bfeaa7ae47b57',1,'FatFile']]], - ['ishidden',['isHidden',['../class_fat_file.html#ae216b4a2bc44a9cfb88478fa051a1fd8',1,'FatFile']]], - ['islfn',['isLFN',['../class_fat_file.html#af8f456ab790e818bfdd225cf6ffd40f3',1,'FatFile']]], - ['isopen',['isOpen',['../class_fat_file.html#a8b8a2850c086d3ce79bee64a23fbf7a6',1,'FatFile']]], - ['isreadonly',['isReadOnly',['../class_fat_file.html#abaf639ec8f86f34aeb7e6b3615526f0b',1,'FatFile']]], - ['isroot',['isRoot',['../class_fat_file.html#a03421a0c28649332f55e6ca06d3aeedb',1,'FatFile']]], - ['isroot32',['isRoot32',['../class_fat_file.html#a8fda8004720ec4cc55710869dbb52e35',1,'FatFile']]], - ['isrootfixed',['isRootFixed',['../class_fat_file.html#a0cc65089f7ce6c1ff92edbf0bff59dee',1,'FatFile']]], - ['issubdir',['isSubDir',['../class_fat_file.html#abfd02c5d26f7d4f8739a8610116a6660',1,'FatFile']]], - ['issystem',['isSystem',['../class_fat_file.html#a48087bdeb6b94fc27e0f74c3d90af5a9',1,'FatFile']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_9.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_9.html deleted file mode 100644 index 5ccec429..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_9.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_9.js deleted file mode 100644 index a37596e4..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['khzsdclk',['kHzSdClk',['../class_sdio_card.html#a3532a1a4b8a43a51ed9b5853186203cb',1,'SdioCard']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_a.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_a.html deleted file mode 100644 index 3958eb7b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_a.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_a.js deleted file mode 100644 index 0f3e7bdb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_a.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['lbn',['lbn',['../class_fat_cache.html#a9f981b53e212f79937e5f6381b169374',1,'FatCache']]], - ['left',['left',['../ios_8h.html#a24a80a73f0a0d2d72d1cb74f49ff4759',1,'ios.h']]], - ['legal83char',['legal83Char',['../class_fat_file.html#a94df8090f16e9666cdc53ca20f6aff90',1,'FatFile']]], - ['length',['length',['../classobufstream.html#ac650708e968b0c0545a3badeb809cf15',1,'obufstream']]], - ['ls',['ls',['../class_fat_file.html#ad49f688a494b351ccbb0102dcfafb925',1,'FatFile::ls(uint8_t flags=0)'],['../class_fat_file.html#acabf31ff85e696fbf384c49428012fea',1,'FatFile::ls(print_t *pr, uint8_t flags=0, uint8_t indent=0)'],['../class_fat_file_system.html#a2398fb37a7a9d5e0dc0ffde6a44a993d',1,'FatFileSystem::ls(uint8_t flags=0)'],['../class_fat_file_system.html#a122b61dbec5051304bcc81bc08b1b99d',1,'FatFileSystem::ls(const char *path, uint8_t flags=0)'],['../class_fat_file_system.html#ae12fb8bfad5c4a8e052dda70a5a0ed93',1,'FatFileSystem::ls(print_t *pr, uint8_t flags=0)'],['../class_fat_file_system.html#aa79695db8e910300507210b3067d39fd',1,'FatFileSystem::ls(print_t *pr, const char *path, uint8_t flags)']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_b.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_b.html deleted file mode 100644 index b99b702d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_b.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_b.js deleted file mode 100644 index b9e2c887..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mkdir',['mkdir',['../class_fat_file.html#abab5b9f72cc796388dd4eed01d13d90d',1,'FatFile::mkdir()'],['../class_fat_file_system.html#a231c62c98ba8ac3c2624dc5ad2053ebf',1,'FatFileSystem::mkdir()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_c.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_c.html deleted file mode 100644 index 3a33d874..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_c.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_c.js deleted file mode 100644 index 3652b234..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_c.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['name',['name',['../class_file.html#a3d7c8f86311b9aad2bcc43e677d927ed',1,'File']]], - ['noboolalpha',['noboolalpha',['../ios_8h.html#aa6a1ec04992fc8090ca775a39678be01',1,'ios.h']]], - ['noshowbase',['noshowbase',['../ios_8h.html#ab861ff5f863de0ae002b65390dde36b0',1,'ios.h']]], - ['noshowpoint',['noshowpoint',['../ios_8h.html#ad85399d1b75151cf9e2436f2a1ccfc13',1,'ios.h']]], - ['noshowpos',['noshowpos',['../ios_8h.html#a985805b22ffb4ce2f5298168662bd2d7',1,'ios.h']]], - ['noskipws',['noskipws',['../ios_8h.html#a773b847300db776fde08a0b562792131',1,'ios.h']]], - ['nouppercase',['nouppercase',['../ios_8h.html#a24b96fb317e056b34aa84c4bb965a79a',1,'ios.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_d.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_d.html deleted file mode 100644 index 31b75b88..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_d.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_d.js deleted file mode 100644 index 211ffe05..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_d.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['obufstream',['obufstream',['../classobufstream.html#a74f7dbcf1131b77d3665aa85d6629722',1,'obufstream::obufstream()'],['../classobufstream.html#a7af0555c5c08ebf9cbc70fc5e2f67db7',1,'obufstream::obufstream(char *buf, size_t size)']]], - ['oct',['oct',['../ios_8h.html#ae661b435df22f8e8e643817f4f915123',1,'ios.h']]], - ['ofstream',['ofstream',['../classofstream.html#ae8a8145adf2cfe1f948ad482ed504b75',1,'ofstream']]], - ['open',['open',['../class_fat_file.html#a3567b0760afe1250334b6c85c2ad5869',1,'FatFile::open(FatFileSystem *fs, const char *path, oflag_t oflag)'],['../class_fat_file.html#ab44920bb9cd5414b8e69c9dc4343394a',1,'FatFile::open(FatFile *dirFile, uint16_t index, oflag_t oflag)'],['../class_fat_file.html#a58d6ea245f1bc3ae7a6df311cd25052f',1,'FatFile::open(FatFile *dirFile, const char *path, oflag_t oflag)'],['../class_fat_file.html#a2da94d4556eebd807669e0514433fffa',1,'FatFile::open(const char *path, oflag_t oflag=O_RDONLY)'],['../class_fat_file_system.html#a1590dbde58cf1622a18d1350058a6e18',1,'FatFileSystem::open(const char *path, oflag_t oflag=FILE_READ)'],['../class_fat_file_system.html#a7c44842544967e0083bec1a6089e5061',1,'FatFileSystem::open(const String &path, oflag_t oflag=FILE_READ)'],['../classfstream.html#a85b24d94552991f33caf4c3a83420879',1,'fstream::open()'],['../classifstream.html#a169694d6535fd551fd6db48a2867590e',1,'ifstream::open()'],['../classofstream.html#a4b9d30c742fbe01baa336406c7afdcb2',1,'ofstream::open()']]], - ['opennext',['openNext',['../class_fat_file.html#acda9b1bf547d43e183e657bee053a48d',1,'FatFile']]], - ['opennextfile',['openNextFile',['../class_file.html#a49946976035a0811200dc92d5843b8dc',1,'File']]], - ['openroot',['openRoot',['../class_fat_file.html#a7e0c0548fed3a69e7284b91b694439d4',1,'FatFile']]], - ['operator_20bool',['operator bool',['../class_minimum_serial.html#a73a1a2a92604ecb8507afde0022aedd8',1,'MinimumSerial::operator bool()'],['../class_file.html#af171fbf441c899cf71d88b8b0b83d38b',1,'File::operator bool()']]], - ['operator_20const_20void_20_2a',['operator const void *',['../classios.html#aa919219fd2fa41d49c8573b36bb04418',1,'ios']]], - ['operator_21',['operator!',['../classios.html#aea64e05b9aa58bd75ca636692f881fb6',1,'ios']]], - ['operator_3c_3c',['operator<<',['../classostream.html#a4dfc0cdb38bced959ba7cf963db38c30',1,'ostream::operator<<(ostream &(*pf)(ostream &str))'],['../classostream.html#af52c607ea168aff1025222c62cad392f',1,'ostream::operator<<(ios_base &(*pf)(ios_base &str))'],['../classostream.html#a63e3999be154253cf92a45c22e548f51',1,'ostream::operator<<(bool arg)'],['../classostream.html#a618b5d6861dde2347847102b89e0ccfa',1,'ostream::operator<<(const char *arg)'],['../classostream.html#aebe24ff723b806cbee19deb2165d0a5b',1,'ostream::operator<<(const signed char *arg)'],['../classostream.html#ac0cf68ffa4706994f47acb1fa37c601a',1,'ostream::operator<<(const unsigned char *arg)'],['../classostream.html#a1d1e11d2fadaf4c9e34194a1f28572e4',1,'ostream::operator<<(char arg)'],['../classostream.html#ad06f8c6c47667e9c7b14620882c09434',1,'ostream::operator<<(signed char arg)'],['../classostream.html#a69912ec4a8536f289b716e95953d09d7',1,'ostream::operator<<(unsigned char arg)'],['../classostream.html#a8065697d56d5e5d1a0ca50c1916b4955',1,'ostream::operator<<(double arg)'],['../classostream.html#a6c68e418e19d9dcdfe6b1790b2621666',1,'ostream::operator<<(float arg)'],['../classostream.html#a227c47e2b631f29d8873b00290bb4872',1,'ostream::operator<<(short arg)'],['../classostream.html#ace10a3a767dc55faff2cec71cd0a89b1',1,'ostream::operator<<(unsigned short arg)'],['../classostream.html#a62488f7ce7822c777ea27d15223b8e5f',1,'ostream::operator<<(int arg)'],['../classostream.html#ad31df6cd88c7248c01808e40889a7907',1,'ostream::operator<<(unsigned int arg)'],['../classostream.html#a15db9977ed82e503bd3cd1f585acf9e6',1,'ostream::operator<<(long arg)'],['../classostream.html#aaedd44fefa48cf3f0967fcd699a2909d',1,'ostream::operator<<(unsigned long arg)'],['../classostream.html#a2a8febd7c07f078120dd69bb71f25a94',1,'ostream::operator<<(const void *arg)'],['../classostream.html#a99ee8d9265d9354f197d02a3d17116be',1,'ostream::operator<<(const __FlashStringHelper *arg)'],['../iostream_8h.html#aa125ac928f3377cbc6e3cf288b9378fd',1,'operator<<(ostream &os, const setfill &arg): iostream.h'],['../iostream_8h.html#a23d4c29ef8ae37ec7d972d0b66187652',1,'operator<<(ostream &os, const setprecision &arg): iostream.h'],['../iostream_8h.html#a331649f2fdb01ed069dc18a5fad781b1',1,'operator<<(ostream &os, const setw &arg): iostream.h']]], - ['operator_3e_3e',['operator>>',['../classistream.html#aa67d3b8ac67e2097d876a66657ec6067',1,'istream::operator>>(istream &(*pf)(istream &str))'],['../classistream.html#ac6e2f17c80edd19deecdc20f804c424e',1,'istream::operator>>(ios_base &(*pf)(ios_base &str))'],['../classistream.html#a5a0a2c0e06abadb79951ebe34f36d62a',1,'istream::operator>>(ios &(*pf)(ios &str))'],['../classistream.html#a99db66d2e192f02deff0171ad098271f',1,'istream::operator>>(char *str)'],['../classistream.html#addaf5e0f39a15cc213117165dfef0d77',1,'istream::operator>>(char &ch)'],['../classistream.html#a390af4d28adbdc537e436f2121d1c862',1,'istream::operator>>(signed char *str)'],['../classistream.html#a49ab1a573fbf69809d19a52855a30072',1,'istream::operator>>(signed char &ch)'],['../classistream.html#a52e85d01198968330f20026a52cb9f72',1,'istream::operator>>(unsigned char *str)'],['../classistream.html#a74875fcf9ccdc0dca4b46a0b66821798',1,'istream::operator>>(unsigned char &ch)'],['../classistream.html#a3708636d095d360695e9c23335639317',1,'istream::operator>>(bool &arg)'],['../classistream.html#a662060e885a0551c390b7042b3b9e4a5',1,'istream::operator>>(short &arg)'],['../classistream.html#a31a706a374c5a594e400734b8992e2a0',1,'istream::operator>>(unsigned short &arg)'],['../classistream.html#ae8451bc86d83828892d9d67c67b7f02b',1,'istream::operator>>(int &arg)'],['../classistream.html#a35c9847ebf7b822c5ec9742e9de19345',1,'istream::operator>>(unsigned int &arg)'],['../classistream.html#aa26e7f35e74d96803bb0dfb3fb0dc154',1,'istream::operator>>(long &arg)'],['../classistream.html#a5aafa4c7f6615a7f1441962b61b8ef59',1,'istream::operator>>(unsigned long &arg)'],['../classistream.html#af9bf453725ce1d9ef62142a7ee38936e',1,'istream::operator>>(double &arg)'],['../classistream.html#aa8efce6fecab80cf7a17d5dfa31f5aa8',1,'istream::operator>>(float &arg)'],['../classistream.html#a62ef4762feacc64a8acdcbf8f1296936',1,'istream::operator>>(void *&arg)'],['../iostream_8h.html#a4a4079de901e0f3f10c743115bd345b2',1,'operator>>(istream &obj, const setfill &arg): iostream.h'],['../iostream_8h.html#a2f819cd0ccda31a8b648f20534469308',1,'operator>>(istream &is, const setprecision &arg): iostream.h'],['../iostream_8h.html#a8d1b3da6f1074322a6e9e11ff4ce8c33',1,'operator>>(istream &is, const setw &arg): iostream.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_e.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_e.html deleted file mode 100644 index cddb9bb5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_e.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_e.js deleted file mode 100644 index 759641db..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_e.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['peek',['peek',['../class_print_file.html#a3a2a66f4a0cb69ab4edc66d39997fda7',1,'PrintFile::peek()'],['../class_file.html#a0e5025f39bd584563bfe4b05fc1db268',1,'File::peek()'],['../class_fat_file.html#ac05b7136b887539426856c623869aa3a',1,'FatFile::peek()'],['../classistream.html#a4022265e0ede3698454f1ff59348c14a',1,'istream::peek()']]], - ['position',['position',['../class_file.html#aae991c597c0bc4c5eb44c1f3b06a21ec',1,'File']]], - ['precision',['precision',['../classios__base.html#aba92f0687644fc14f202958635ce276f',1,'ios_base::precision() const'],['../classios__base.html#a5b70cc65fc2c276136fea99bddedb6f0',1,'ios_base::precision(unsigned int n)']]], - ['print',['print',['../class_stdio_stream.html#ad3f6ee8e8ca5dcf6dabfd88199b172e2',1,'StdioStream::print(char c)'],['../class_stdio_stream.html#a1158ea5f9bf041f21b1733b7811c9bb9',1,'StdioStream::print(const char *str)'],['../class_stdio_stream.html#aac4d7b3548d03b8fd70adf12c7ee315c',1,'StdioStream::print(const __FlashStringHelper *str)'],['../class_stdio_stream.html#a26f5b98560b6771225005b073166108b',1,'StdioStream::print(double val, uint8_t prec=2)'],['../class_stdio_stream.html#a06b6eb9f0a7000fdcc73cd6af8d40560',1,'StdioStream::print(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a7129f85c7c5f16867f467731ef84dee9',1,'StdioStream::print(T val)']]], - ['printcreatedatetime',['printCreateDateTime',['../class_fat_file.html#a558530f20314a8d8ee3d1a488fc7f46e',1,'FatFile']]], - ['printdec',['printDec',['../class_stdio_stream.html#ac0a907feb1e4b7e00de99857b4c0a470',1,'StdioStream::printDec(char n)'],['../class_stdio_stream.html#a2707ea97f6113c226781469f4f39ff62',1,'StdioStream::printDec(signed char n)'],['../class_stdio_stream.html#a6e6ac78caa6259a4c4934707bf497a2b',1,'StdioStream::printDec(unsigned char n)'],['../class_stdio_stream.html#a218af88db35f38babf01d6e0a9cdceeb',1,'StdioStream::printDec(int16_t n)'],['../class_stdio_stream.html#a90b2999af94a3578fff7579c2acf8e35',1,'StdioStream::printDec(uint16_t n)'],['../class_stdio_stream.html#ad4591f1234b57f63c1acf0f3392099ac',1,'StdioStream::printDec(int32_t n)'],['../class_stdio_stream.html#a8b6c2c80342abe45e6f564e9bd5bb7ea',1,'StdioStream::printDec(uint32_t n)'],['../class_stdio_stream.html#aaa8921947d4dbbae840d285cb633e8aa',1,'StdioStream::printDec(double value, uint8_t prec)'],['../class_stdio_stream.html#a6a09284b1c6d0769c27916a2e131e749',1,'StdioStream::printDec(float value, uint8_t prec)']]], - ['printfatdate',['printFatDate',['../class_fat_file.html#a8fdb038aafdf3a17ac80b53c063aa73b',1,'FatFile::printFatDate(uint16_t fatDate)'],['../class_fat_file.html#ada5364f66204b1a64afbf9d2e6cd2b0b',1,'FatFile::printFatDate(print_t *pr, uint16_t fatDate)']]], - ['printfattime',['printFatTime',['../class_fat_file.html#a7740731f08ef97de7dfbc9b075c4c7d1',1,'FatFile::printFatTime(uint16_t fatTime)'],['../class_fat_file.html#a4e7e56ba52ca17c602af1b85684b09a9',1,'FatFile::printFatTime(print_t *pr, uint16_t fatTime)']]], - ['printfield',['printField',['../class_fat_file.html#a7478cad0f9e5079311b9e1fa558016ff',1,'FatFile::printField(float value, char term, uint8_t prec=2)'],['../class_fat_file.html#abd3e1747511216462b3ef98167156cbb',1,'FatFile::printField(int16_t value, char term)'],['../class_fat_file.html#a9972c2419c293ef9c382bff666b9ae4d',1,'FatFile::printField(uint16_t value, char term)'],['../class_fat_file.html#a41b3b32dd8482429b74c7af3432d6cf8',1,'FatFile::printField(int32_t value, char term)'],['../class_fat_file.html#a097240f08baadeb1c64b63eab9afb088',1,'FatFile::printField(uint32_t value, char term)'],['../class_stdio_stream.html#a4988592ada39c4b4c603b061f84d183f',1,'StdioStream::printField(double value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a3b90b2317cc391f94784a847f5313c08',1,'StdioStream::printField(float value, char term, uint8_t prec=2)'],['../class_stdio_stream.html#a02c2ad1a2e71e82d238b8386cf3e6c41',1,'StdioStream::printField(T value, char term)']]], - ['printfile',['PrintFile',['../class_print_file.html#a537ea4364a7958550acf2c8ddb8791ec',1,'PrintFile']]], - ['printfilesize',['printFileSize',['../class_fat_file.html#a12a5d2de2737c201aa39ca1bd2ab9c47',1,'FatFile']]], - ['printhex',['printHex',['../class_stdio_stream.html#add39b2b4ec3daa7c8922e96ce5d368bc',1,'StdioStream']]], - ['printhexln',['printHexln',['../class_stdio_stream.html#aec6ebea511489b0ef6b61d9132d93af9',1,'StdioStream']]], - ['println',['println',['../class_stdio_stream.html#ad0cd3acc05a91456f505752377bd405a',1,'StdioStream::println()'],['../class_stdio_stream.html#a3793dd66cf347a1ca0b7b167e948cce9',1,'StdioStream::println(double val, uint8_t prec=2)'],['../class_stdio_stream.html#aac250d041a7844c8db1cbd2d97ecfdaa',1,'StdioStream::println(float val, uint8_t prec=2)'],['../class_stdio_stream.html#a3b14532768d07e6ed89c762d04792c12',1,'StdioStream::println(T val)']]], - ['printmodifydatetime',['printModifyDateTime',['../class_fat_file.html#a05cee5df46a370bf916d3ba597c82e39',1,'FatFile']]], - ['printname',['printName',['../class_fat_file.html#ad1cbc3aeb0f5193b7a26595966da9621',1,'FatFile::printName()'],['../class_fat_file.html#afe18a787fb8640e2d2483370c770f82f',1,'FatFile::printName(print_t *pr)']]], - ['printsfn',['printSFN',['../class_fat_file.html#a791cd7aade71f609aab62ec018aea3c0',1,'FatFile']]], - ['put',['put',['../classostream.html#a11aad8a1efd284ccfa91cbfb78d089bd',1,'ostream']]], - ['putc',['putc',['../class_stdio_stream.html#adf9e552212aad6fc2284da0ee62d04dc',1,'StdioStream']]], - ['putcrlf',['putCRLF',['../class_stdio_stream.html#a09ccc4b6cabc3502c1052e85d94e84ef',1,'StdioStream']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_f.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_f.html deleted file mode 100644 index 49672926..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_f.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_f.js deleted file mode 100644 index 7511368a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/functions_f.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['rdstate',['rdstate',['../classios.html#afe4d084ba0d2704a27525147d1463c36',1,'ios']]], - ['read',['read',['../class_minimum_serial.html#a4890dd60f2ffb61eba0821cc80d411ad',1,'MinimumSerial::read()'],['../class_file.html#a4c46a1975e66c37977bf07c58ec10b4e',1,'File::read()'],['../class_fat_file.html#a60ae55ff6fe158c2340071d702a363c5',1,'FatFile::read()'],['../class_fat_file.html#a200e6e0553d5b709520c9dfac9ef77dd',1,'FatFile::read(void *buf, size_t nbyte)'],['../class_fat_cache.html#ac2bb0b8f2ce3ab5cd86cf30b4a663cea',1,'FatCache::read()']]], - ['readblock',['readBlock',['../class_base_block_driver.html#a16bb3305f3130253dd7ab6e19aa1b524',1,'BaseBlockDriver::readBlock()'],['../class_sdio_card.html#ac94605c428fa9258106835cceec470d8',1,'SdioCard::readBlock()'],['../class_sdio_card_e_x.html#a49609f0409ef01284bc83b10a8ec5efe',1,'SdioCardEX::readBlock()'],['../class_sd_spi_card.html#a4393634a82c6683ee94d1fefe0be332a',1,'SdSpiCard::readBlock()'],['../class_sd_spi_card_e_x.html#abb69c8bd538dafed1e7f33382ee48d61',1,'SdSpiCardEX::readBlock()']]], - ['readblocks',['readBlocks',['../class_base_block_driver.html#a3a029a2d02fc7cbdd7c15c8d622565c4',1,'BaseBlockDriver::readBlocks()'],['../class_sdio_card.html#a7de36d26a01dc39b7dc122c54ee03b12',1,'SdioCard::readBlocks()'],['../class_sdio_card_e_x.html#a1b50db2f87246f4ff1af4782152c5fee',1,'SdioCardEX::readBlocks()'],['../class_sd_spi_card.html#ac630f77c3137923b47c1bd12a9bbfadf',1,'SdSpiCard::readBlocks()'],['../class_sd_spi_card_e_x.html#a9e158cda94fadd12267fe7e63d06622a',1,'SdSpiCardEX::readBlocks()']]], - ['readcid',['readCID',['../class_sdio_card.html#add77777fbcf91cc41e8ec62fda169e79',1,'SdioCard::readCID()'],['../class_sd_spi_card.html#aa073dc42828164883db1b9faeff909ea',1,'SdSpiCard::readCID()']]], - ['readcsd',['readCSD',['../class_sdio_card.html#a1da0ca418c153e24b4e13b4c1e20d450',1,'SdioCard::readCSD()'],['../class_sd_spi_card.html#a9fbea9525e70f6e3602fe5153a5a1290',1,'SdSpiCard::readCSD()']]], - ['readdata',['readData',['../class_sdio_card.html#a9dc1cd99d0136e514faaecf56a6318d2',1,'SdioCard::readData()'],['../class_sd_spi_card.html#a3a1d1b4b4ceb42fcd41aaf6649482770',1,'SdSpiCard::readData()']]], - ['readdir',['readDir',['../class_fat_file.html#a1325afe074c3efecff666678cd9f116a',1,'FatFile']]], - ['readline',['readline',['../class_arduino_in_stream.html#ad4c60f813b8df6dd1d6696a3458de09c',1,'ArduinoInStream']]], - ['readocr',['readOCR',['../class_sdio_card.html#adc583f7a27f57ce55ce474b1379b9303',1,'SdioCard::readOCR()'],['../class_sd_spi_card.html#ab446e49338b3ce834a750ac6dae35f61',1,'SdSpiCard::readOCR()']]], - ['readstart',['readStart',['../class_sdio_card.html#a73beed782d16173b2e7b0e29c663f6fb',1,'SdioCard::readStart(uint32_t lba)'],['../class_sdio_card.html#a788171db84a1d724808d56ab9608e3a4',1,'SdioCard::readStart(uint32_t lba, uint32_t count)'],['../class_sd_spi_card.html#a3b1710d11496c32ba4323831e00ac6d1',1,'SdSpiCard::readStart()']]], - ['readstatus',['readStatus',['../class_sd_spi_card.html#a91d0413599efe0d63c8c2dfe4a12d9ae',1,'SdSpiCard']]], - ['readstop',['readStop',['../class_sdio_card.html#a5bd3f206d790149340783135d08eb701',1,'SdioCard::readStop()'],['../class_sd_spi_card.html#afdac7c399fa1ba3f904cf503526e007e',1,'SdSpiCard::readStop()']]], - ['remove',['remove',['../class_fat_file.html#ac837a537fbcca14c7aa390c5fc9f4e7c',1,'FatFile::remove()'],['../class_fat_file.html#afe820bbb056863e91ec482961c8dc695',1,'FatFile::remove(FatFile *dirFile, const char *path)'],['../class_fat_file_system.html#abf7d7d0dab43083d5be10d70ff4669e4',1,'FatFileSystem::remove()']]], - ['rename',['rename',['../class_fat_file.html#a4b42f2454ff462555c07ea094a92a1e0',1,'FatFile::rename()'],['../class_fat_file_system.html#a0187891a24017b41bd7c5ba63e659e65',1,'FatFileSystem::rename()']]], - ['rewind',['rewind',['../class_fat_file.html#a5aac6e0b3cb08fc8b8668e916a8b0ca5',1,'FatFile::rewind()'],['../class_stdio_stream.html#ad985866675193d2ee1dde9e27b0d08da',1,'StdioStream::rewind()']]], - ['rewinddirectory',['rewindDirectory',['../class_file.html#ae1419603dea25a6c8480b941d7ac63a3',1,'File']]], - ['right',['right',['../ios_8h.html#aee80fd600c5c58a2bebbd48afdcf8280',1,'ios.h']]], - ['rmdir',['rmdir',['../class_fat_file.html#a9515bac181d33e7f0125e88fa2ccd283',1,'FatFile::rmdir()'],['../class_fat_file_system.html#aaed2edc7ff7fedb163458c870bb41b33',1,'FatFileSystem::rmdir()']]], - ['rmrfstar',['rmRfStar',['../class_fat_file.html#ac780a80526f86d3def701ecdc99d8bfe',1,'FatFile']]], - ['rootdirentrycount',['rootDirEntryCount',['../class_fat_volume.html#a31d0efaf3e47c9342da0dfb3735eecf1',1,'FatVolume']]], - ['rootdirstart',['rootDirStart',['../class_fat_volume.html#a372f1f1fab71f5744eaf538156abe64d',1,'FatVolume']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/mag_sel.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/mag_sel.png deleted file mode 100644 index 81f6040a..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/mag_sel.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/nomatches.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/nomatches.html deleted file mode 100644 index b1ded27e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
-
No Matches
-
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/pages_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/pages_0.html deleted file mode 100644 index d7528582..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/pages_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/pages_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/pages_0.js deleted file mode 100644 index b18ff997..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['arduino_20_25sdfat_20library',['Arduino %SdFat Library',['../index.html',1,'']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/related_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/related_0.html deleted file mode 100644 index 575b0401..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/related_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/related_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/related_0.js deleted file mode 100644 index 42581316..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/related_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['fatcache',['FatCache',['../class_fat_volume.html#a1e97a7aed860b898c403cb29455b3fe7',1,'FatVolume']]], - ['fatfile',['FatFile',['../class_fat_volume.html#a18fb15a715ea85037ab802286853103e',1,'FatVolume']]], - ['fatfilesystem',['FatFileSystem',['../class_fat_volume.html#ac095954ff68b78a07c0cf5fabbb2db6f',1,'FatVolume']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/search.css b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/search.css deleted file mode 100644 index 3cf9df94..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/search.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/search.js deleted file mode 100644 index a554ab9c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program 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 2 of the License, or - (at your option) any later version. - - This program 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 this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_0.js deleted file mode 100644 index f638c2bc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['blockdriver',['BlockDriver',['../_block_driver_8h.html#ace97f2377acdc471a01f9f7ec1fd6bbb',1,'BlockDriver.h']]], - ['bpb_5ft',['bpb_t',['../_fat_structs_8h.html#a5c8af240713e05e7e6c959006ced35fb',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_1.html deleted file mode 100644 index 7af807db..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_1.js deleted file mode 100644 index d85cd764..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['dir_5ft',['dir_t',['../_fat_structs_8h.html#a803db59d4e16a0c54a647afc6a7954e3',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_2.html deleted file mode 100644 index 745d076c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_2.js deleted file mode 100644 index c41622d8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['fat32_5fboot_5ft',['fat32_boot_t',['../_fat_structs_8h.html#a38fa081d004647a828095d31b07ec491',1,'FatStructs.h']]], - ['fat32_5ffsinfo_5ft',['fat32_fsinfo_t',['../_fat_structs_8h.html#a6030ed0fce3a819326a2548407fc8556',1,'FatStructs.h']]], - ['fat_5fboot_5ft',['fat_boot_t',['../_fat_structs_8h.html#aedac4595ee08198da26c14b9891a07d5',1,'FatStructs.h']]], - ['fmtflags',['fmtflags',['../classios__base.html#ac9a54e52cef4f01ac0afd8ae896a3413',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_3.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_3.html deleted file mode 100644 index def60a5b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_3.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_3.js deleted file mode 100644 index 14dc331b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['iostate',['iostate',['../classios__base.html#aef19291eeae0f072ac42c6ba1fe3033c',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_4.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_4.html deleted file mode 100644 index ef733ad2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_4.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_4.js deleted file mode 100644 index 54a61258..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ldir_5ft',['ldir_t',['../_fat_structs_8h.html#aa1b540ee1eedd1aa9b267d11cba0d9e2',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_5.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_5.html deleted file mode 100644 index 94db6d21..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_5.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_5.js deleted file mode 100644 index 765b832d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mbr_5ft',['mbr_t',['../_fat_structs_8h.html#a7c429e5097f101c8c97663d6c4155bd9',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_6.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_6.html deleted file mode 100644 index bda8ea1c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_6.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_6.js deleted file mode 100644 index d83d28fc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_6.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['off_5ftype',['off_type',['../classios__base.html#a45de7cca0d01da781f4b886179c65c22',1,'ios_base']]], - ['openmode',['openmode',['../classios__base.html#aaa192ec0dccc43050715553a34644523',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_7.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_7.html deleted file mode 100644 index 565b233f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_7.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_7.js deleted file mode 100644 index d9134e72..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['part_5ft',['part_t',['../_fat_structs_8h.html#a37251e7d5c69a159be727a3fc8c9d0e6',1,'FatStructs.h']]], - ['pos_5ftype',['pos_type',['../classios__base.html#abe85cf1f181b8bce8022f05ab76aae7f',1,'ios_base']]], - ['print_5ft',['print_t',['../_fat_volume_8h.html#ac62f6449331cfe1a71f29be30efe7890',1,'FatVolume.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_8.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_8.html deleted file mode 100644 index 3063e032..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_8.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_8.js deleted file mode 100644 index e8ea77a9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/typedefs_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['streamsize',['streamsize',['../classios__base.html#a82836e1d3cc603fba8f0b54d323a2dff',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_0.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_0.html deleted file mode 100644 index 51f7bd6b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_0.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_0.js deleted file mode 100644 index c3aa3dc7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5f_5fbrkval',['__brkval',['../_free_stack_8h.html#ad193a2cc121e0d4614a1c21eb463fb56',1,'FreeStack.h']]], - ['_5f_5fbss_5fend',['__bss_end',['../_free_stack_8h.html#adbad17f740c2d7f2bc4833681c93c932',1,'FreeStack.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_1.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_1.html deleted file mode 100644 index f46154d8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_1.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_1.js deleted file mode 100644 index 4f7759a9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['adjustfield',['adjustfield',['../classios__base.html#adaaf735381254aa096ebe3605e8bbd0a',1,'ios_base']]], - ['app',['app',['../classios__base.html#a8380aac3c405730708888fdc68905820',1,'ios_base']]], - ['ate',['ate',['../classios__base.html#aa434355c165500065276d955d8b36e99',1,'ios_base']]], - ['attr',['attr',['../structlong_directory_entry.html#aa36bf1210d0c2b3b80948e5f697eb02e',1,'longDirectoryEntry']]], - ['attributes',['attributes',['../structdirectory_entry.html#a16c6cde55c8175c90935c386f1cfb21a',1,'directoryEntry']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_10.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_10.html deleted file mode 100644 index b62b717e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_10.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_10.js deleted file mode 100644 index 887ae386..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_10.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['reserved1',['reserved1',['../structfat__boot.html#affa7e6efb3ccea19ba7ea0ddadce7463',1,'fat_boot::reserved1()'],['../structfat32__boot.html#a7075c3c00aae071110fd1acb2e6fd599',1,'fat32_boot::reserved1()'],['../structfat32__fsinfo.html#ac24bd4801a60a54e5133ed1bb71bcdaa',1,'fat32_fsinfo::reserved1()']]], - ['reserved2',['reserved2',['../structfat32__fsinfo.html#a9ec0e2756cd7e169268798a558df3814',1,'fat32_fsinfo']]], - ['reservednt',['reservedNT',['../structdirectory_entry.html#afe7d00be85f3b78549b21610050da52b',1,'directoryEntry']]], - ['reservedsectorcount',['reservedSectorCount',['../structbios_parm_block.html#adb4830c345b27293c7d7b97b77f52e01',1,'biosParmBlock::reservedSectorCount()'],['../structfat__boot.html#a13f272a8f780fb43a400f873a3fd7b73',1,'fat_boot::reservedSectorCount()'],['../structfat32__boot.html#a8e490f05ad3552dfbdf8f9332d287ba0',1,'fat32_boot::reservedSectorCount()']]], - ['right',['right',['../classios__base.html#aec064a12730b5d87e718c1864e29ac64',1,'ios_base']]], - ['rootdirentrycount',['rootDirEntryCount',['../structbios_parm_block.html#a9a1b24bb2dbb3a123c4ffc703954d71d',1,'biosParmBlock::rootDirEntryCount()'],['../structfat__boot.html#a2124f89e12307df944f08e6657dbf4af',1,'fat_boot::rootDirEntryCount()'],['../structfat32__boot.html#a94185496fb56c6e0e8078fc3803e9142',1,'fat32_boot::rootDirEntryCount()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_11.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_11.html deleted file mode 100644 index 2ce8561a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_11.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_11.js deleted file mode 100644 index 6e928ac2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_11.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['sectorspercluster',['sectorsPerCluster',['../structbios_parm_block.html#a45d5e2d8c93a028a074e8ce3dc751ab5',1,'biosParmBlock::sectorsPerCluster()'],['../structfat__boot.html#ab3063726125b16a2ccad719548d79abd',1,'fat_boot::sectorsPerCluster()'],['../structfat32__boot.html#a63ded2780732f166f7b7d36bc6aed702',1,'fat32_boot::sectorsPerCluster()']]], - ['sectorsperfat16',['sectorsPerFat16',['../structbios_parm_block.html#a24d6e5a9069491d5db6dbe747336985b',1,'biosParmBlock::sectorsPerFat16()'],['../structfat__boot.html#a0d5ab13399759acfa571e49b85600db1',1,'fat_boot::sectorsPerFat16()'],['../structfat32__boot.html#aeaa78272cd42b162ea448e1642f75cab',1,'fat32_boot::sectorsPerFat16()']]], - ['sectorsperfat32',['sectorsPerFat32',['../structbios_parm_block.html#ad80429df03a6b80f79b18cb6e1008d64',1,'biosParmBlock::sectorsPerFat32()'],['../structfat32__boot.html#aa00db084ff2f7e25febef321469adeb9',1,'fat32_boot::sectorsPerFat32()']]], - ['sectorspertrack',['sectorsPerTrack',['../structfat__boot.html#a6d5ceaf374e0607be8b8162bf657f282',1,'fat_boot::sectorsPerTrack()'],['../structfat32__boot.html#a9525b2e63f84a5cf62ea20199cedf5de',1,'fat32_boot::sectorsPerTrack()']]], - ['sectorspertrtack',['sectorsPerTrtack',['../structbios_parm_block.html#a7c27cb7f66c2c9d5266d896e8df227c7',1,'biosParmBlock']]], - ['seqpos',['seqPos',['../structfname__t.html#a96b7c779dec8dd568be3290451078a4e',1,'fname_t']]], - ['sfn',['sfn',['../structfname__t.html#a37ed0c108b1feb81be4f8c041a4336bd',1,'fname_t']]], - ['showbase',['showbase',['../classios__base.html#a7e3373ab307feecfc228bc9bdb29cd01',1,'ios_base']]], - ['showpoint',['showpoint',['../classios__base.html#ac9bb172682e157f037bd7fb82a236ee6',1,'ios_base']]], - ['showpos',['showpos',['../classios__base.html#a7bfa4a883933105d10f8ce2693cb9f21',1,'ios_base']]], - ['skipws',['skipws',['../classios__base.html#a64977c777d6e45826d1be9763f17f824',1,'ios_base']]], - ['stream_5fbuf_5fsize',['STREAM_BUF_SIZE',['../_stdio_stream_8h.html#ad9a6150ef11e2616c1a99bc777df17d3',1,'StdioStream.h']]], - ['structsignature',['structSignature',['../structfat32__fsinfo.html#aa4a9ed657a0f58a7a1c75760c3a79fd4',1,'fat32_fsinfo']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_12.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_12.html deleted file mode 100644 index bba5857f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_12.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_12.js deleted file mode 100644 index 1307ab9a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_12.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['tailsignature',['tailSignature',['../structfat32__fsinfo.html#a484dd16425e4e687dc914d12309470e0',1,'fat32_fsinfo']]], - ['totalsectors',['totalSectors',['../structpartition_table.html#acf96e59ce648a9a0cf35751c3b6d7730',1,'partitionTable']]], - ['totalsectors16',['totalSectors16',['../structbios_parm_block.html#a686c686fde2fb109bea120f2f434db87',1,'biosParmBlock::totalSectors16()'],['../structfat__boot.html#ac8bd40dd9186882e423e10b0c83e89b7',1,'fat_boot::totalSectors16()'],['../structfat32__boot.html#acbcae2f15475a886f674f932da1deb3f',1,'fat32_boot::totalSectors16()']]], - ['totalsectors32',['totalSectors32',['../structbios_parm_block.html#abead42e130c40e2aa535202e7cb07578',1,'biosParmBlock::totalSectors32()'],['../structfat__boot.html#addeb2dd8f78418edbf544303d44133e2',1,'fat_boot::totalSectors32()'],['../structfat32__boot.html#ab79466016103c2762c6b057dd458d434',1,'fat32_boot::totalSectors32()']]], - ['trunc',['trunc',['../classios__base.html#ae62b8972f37509819e1384214071194b',1,'ios_base']]], - ['type',['type',['../structpartition_table.html#a3861cf276c728c4dd30ca04e74197ee8',1,'partitionTable::type()'],['../structlong_directory_entry.html#a9adb019dbf24cce65c8d1419cd000f91',1,'longDirectoryEntry::type()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_13.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_13.html deleted file mode 100644 index c92cbcc3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_13.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_13.js deleted file mode 100644 index 9ca0b15b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_13.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['ungetc_5fbuf_5fsize',['UNGETC_BUF_SIZE',['../_stdio_stream_8h.html#a785dd413c0d7b05f95df82d3453ecacd',1,'StdioStream.h']]], - ['uppercase',['uppercase',['../classios__base.html#ade3db1fe3249e87f4c47a9a8916793d9',1,'ios_base']]], - ['usuallyzero',['usuallyZero',['../structmaster_boot_record.html#afacfc863e98f64053cd9459c6dec948f',1,'masterBootRecord']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_14.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_14.html deleted file mode 100644 index 2c462043..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_14.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_14.js deleted file mode 100644 index abe9f74a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_14.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['volumelabel',['volumeLabel',['../structfat__boot.html#a9ee733f1b1abc0210ec8f9676bba2218',1,'fat_boot::volumeLabel()'],['../structfat32__boot.html#a8e6349f46344145a7320637a58107b3b',1,'fat32_boot::volumeLabel()']]], - ['volumeserialnumber',['volumeSerialNumber',['../structfat__boot.html#ac05e88a0d27f0340ba008834361d2b20',1,'fat_boot::volumeSerialNumber()'],['../structfat32__boot.html#a20768678da224faefd8acf12cabdbfb8',1,'fat32_boot::volumeSerialNumber()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_15.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_15.html deleted file mode 100644 index c86a5fd6..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_15.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_15.js deleted file mode 100644 index 41474a9b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['w',['w',['../structsetw.html#ab48d915a24d3f3365c9eb76e138a6f4e',1,'setw']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_2.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_2.html deleted file mode 100644 index 15275b7a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_2.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_2.js deleted file mode 100644 index bee02c7f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_2.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['badbit',['badbit',['../classios__base.html#ac8c2c8f2f6bc9e6ce101c20e88ebce35',1,'ios_base']]], - ['basefield',['basefield',['../classios__base.html#a75ce5482aa207d7aa0265d138b50a102',1,'ios_base']]], - ['begincylinderhigh',['beginCylinderHigh',['../structpartition_table.html#a744f0c7f9ad4c426b10de085b4f52392',1,'partitionTable']]], - ['begincylinderlow',['beginCylinderLow',['../structpartition_table.html#a941fcb4df298f5f73ccca011bf40787a',1,'partitionTable']]], - ['beginhead',['beginHead',['../structpartition_table.html#a7d426694b8cf2151ae38568670a8c845',1,'partitionTable']]], - ['beginsector',['beginSector',['../structpartition_table.html#ae201c11d9671c9efc307c654a2b6c026',1,'partitionTable']]], - ['binary',['binary',['../classios__base.html#ac99947c17c2936d15243671366605602',1,'ios_base']]], - ['boolalpha',['boolalpha',['../classios__base.html#afa74acd95d4bbc7cc3551251aac2bf00',1,'ios_base']]], - ['boot',['boot',['../structpartition_table.html#adf386afb1f33046d8b6a1a0afa780ec9',1,'partitionTable']]], - ['bootcode',['bootCode',['../structfat__boot.html#acf9f5d9f61a6e680e11849f957ecf782',1,'fat_boot::bootCode()'],['../structfat32__boot.html#a7a74880066860140386edf3d9278b9f7',1,'fat32_boot::bootCode()']]], - ['bootsectorsig0',['bootSectorSig0',['../structfat__boot.html#a7951b888af4f357b84dd40af2ef7f29d',1,'fat_boot::bootSectorSig0()'],['../structfat32__boot.html#a1cb46a5427b641a6017a082bc56df1be',1,'fat32_boot::bootSectorSig0()']]], - ['bootsectorsig1',['bootSectorSig1',['../structfat__boot.html#afe8f58668ff594bb2022ce7c06b7726c',1,'fat_boot::bootSectorSig1()'],['../structfat32__boot.html#a53bc302a398f02a86d3b28f25a5ec8e2',1,'fat32_boot::bootSectorSig1()']]], - ['bootsig0',['BOOTSIG0',['../_fat_structs_8h.html#acb7f0c892eb84c121c5698b2605e95e3',1,'FatStructs.h']]], - ['bootsig1',['BOOTSIG1',['../_fat_structs_8h.html#a52f90172e11e828b411c803f29853753',1,'FatStructs.h']]], - ['bootsignature',['bootSignature',['../structfat__boot.html#a712dc388c530e91e4a692e7102d6bdc8',1,'fat_boot::bootSignature()'],['../structfat32__boot.html#ab79a1205277ecab05526fb0bac6e42f6',1,'fat32_boot::bootSignature()']]], - ['bytespersector',['bytesPerSector',['../structbios_parm_block.html#aec24d316af486445d55da14cbbfa6bf4',1,'biosParmBlock::bytesPerSector()'],['../structfat__boot.html#a60b2461f8ebf0ad295a95094e1bd7d65',1,'fat_boot::bytesPerSector()'],['../structfat32__boot.html#a03c7086a8c988257a6678179a67a3fee',1,'fat32_boot::bytesPerSector()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_3.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_3.html deleted file mode 100644 index fbc36712..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_3.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_3.js deleted file mode 100644 index e1851c22..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_3.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['c',['c',['../structsetfill.html#a42ffb4e6135c1274ae827cfed7793a82',1,'setfill']]], - ['cache_5ffor_5fread',['CACHE_FOR_READ',['../class_fat_cache.html#ab4b446515ff9a0cebc747630ddd10c93',1,'FatCache']]], - ['cache_5ffor_5fwrite',['CACHE_FOR_WRITE',['../class_fat_cache.html#a81cb572f33443bd6aee9aa33ec395d0f',1,'FatCache']]], - ['cache_5foption_5fno_5fread',['CACHE_OPTION_NO_READ',['../class_fat_cache.html#adf974f55e53ee0aaa85abb0d7d67181c',1,'FatCache']]], - ['cache_5freserve_5ffor_5fwrite',['CACHE_RESERVE_FOR_WRITE',['../class_fat_cache.html#a49d2896ff525ab77852f76df5c2a09c2',1,'FatCache']]], - ['cache_5fstatus_5fdirty',['CACHE_STATUS_DIRTY',['../class_fat_cache.html#aac8c38e5c545d0f80b13d816117f626e',1,'FatCache']]], - ['cache_5fstatus_5fmask',['CACHE_STATUS_MASK',['../class_fat_cache.html#ab70dc4a2e387f0e9bf392044c702ae32',1,'FatCache']]], - ['cache_5fstatus_5fmirror_5ffat',['CACHE_STATUS_MIRROR_FAT',['../class_fat_cache.html#a45236e1c0a2a098f08d3add0e4b1467a',1,'FatCache']]], - ['chksum',['chksum',['../structlong_directory_entry.html#a60c35531bc0e12f2d764d290244f8cc9',1,'longDirectoryEntry']]], - ['cluster',['cluster',['../struct_fat_pos__t.html#a7b50657b0debaf0e6231af2c74a655fe',1,'FatPos_t']]], - ['codearea',['codeArea',['../structmaster_boot_record.html#a26ca1fb4ebbff2cc1a54153b1dfcd688',1,'masterBootRecord']]], - ['creationdate',['creationDate',['../structdirectory_entry.html#a7b43372794655fe6604d3c17c02302fe',1,'directoryEntry']]], - ['creationtime',['creationTime',['../structdirectory_entry.html#a622bfa70c2cd9006108d7473d737a953',1,'directoryEntry']]], - ['creationtimetenths',['creationTimeTenths',['../structdirectory_entry.html#aa5e1ce5b411b88f005b28a3e7c7c5af6',1,'directoryEntry']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_4.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_4.html deleted file mode 100644 index 8067e67f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_4.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_4.js deleted file mode 100644 index 6ca820e8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_4.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['data',['data',['../unioncache__t.html#ae675b7a3a87d809070de111d1d1f1d81',1,'cache_t']]], - ['dec',['dec',['../classios__base.html#a2826aed005e7c1f6858060cddae7971a',1,'ios_base']]], - ['dir',['dir',['../unioncache__t.html#a7396fdbdb7c52bd1d72c5329ff32acd1',1,'cache_t']]], - ['dir_5fatt_5farchive',['DIR_ATT_ARCHIVE',['../_fat_structs_8h.html#a0d0745a2bc191d12f6e3294a890c4b13',1,'FatStructs.h']]], - ['dir_5fatt_5fdefined_5fbits',['DIR_ATT_DEFINED_BITS',['../_fat_structs_8h.html#ad0c6ed5cf186a40f98cc3929b52cf8ee',1,'FatStructs.h']]], - ['dir_5fatt_5fdirectory',['DIR_ATT_DIRECTORY',['../_fat_structs_8h.html#a5fe039a9af7304fc97a0e903acd217f7',1,'FatStructs.h']]], - ['dir_5fatt_5ffile_5ftype_5fmask',['DIR_ATT_FILE_TYPE_MASK',['../_fat_structs_8h.html#af006ada1b85a9761dd9538273c1ee97f',1,'FatStructs.h']]], - ['dir_5fatt_5fhidden',['DIR_ATT_HIDDEN',['../_fat_structs_8h.html#aed394afe98ff4b7876a5815319b6ef94',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname',['DIR_ATT_LONG_NAME',['../_fat_structs_8h.html#a0039e1903007eb7383a9fe4b80a3569e',1,'FatStructs.h']]], - ['dir_5fatt_5flong_5fname_5fmask',['DIR_ATT_LONG_NAME_MASK',['../_fat_structs_8h.html#a74ddbd24c315a682449a51a2a35adf39',1,'FatStructs.h']]], - ['dir_5fatt_5fread_5fonly',['DIR_ATT_READ_ONLY',['../_fat_structs_8h.html#ae5efa2fd21e8a563a3a45f8a52538cde',1,'FatStructs.h']]], - ['dir_5fatt_5fsystem',['DIR_ATT_SYSTEM',['../_fat_structs_8h.html#a31c7e5c119c9ebc1237746c985cf385d',1,'FatStructs.h']]], - ['dir_5fatt_5fvolume_5fid',['DIR_ATT_VOLUME_ID',['../_fat_structs_8h.html#a410501be78b30a75224dd4e81a4a1105',1,'FatStructs.h']]], - ['dir_5fname_5f0xe5',['DIR_NAME_0XE5',['../_fat_structs_8h.html#a1696d3db9949d6e22d1c2c595fd14669',1,'FatStructs.h']]], - ['dir_5fname_5fdeleted',['DIR_NAME_DELETED',['../_fat_structs_8h.html#a8c08d4823047505f3231e86c5033d08c',1,'FatStructs.h']]], - ['dir_5fname_5ffree',['DIR_NAME_FREE',['../_fat_structs_8h.html#a0f1f0001102ae59b9e7c9e3b04cc06d8',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fbase',['DIR_NT_LC_BASE',['../_fat_structs_8h.html#a39f9b8960dba007b537e9b71c25384fe',1,'FatStructs.h']]], - ['dir_5fnt_5flc_5fext',['DIR_NT_LC_EXT',['../_fat_structs_8h.html#a8766a8bbab6ad3da38c1b308545d7572',1,'FatStructs.h']]], - ['disksignature',['diskSignature',['../structmaster_boot_record.html#a77151c641444c0653ff71a253f0423ef',1,'masterBootRecord']]], - ['drivenumber',['driveNumber',['../structfat__boot.html#aebd280b93563b75b9612d3db844b0d16',1,'fat_boot::driveNumber()'],['../structfat32__boot.html#aca415c1a6eb1c242d460a6d0ffa9ebec',1,'fat32_boot::driveNumber()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_5.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_5.html deleted file mode 100644 index 7e95e946..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_5.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_5.js deleted file mode 100644 index 09381d7b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_5.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['endcylinderhigh',['endCylinderHigh',['../structpartition_table.html#a32fea225b8ffd925ad919ffc56e9abda',1,'partitionTable']]], - ['endcylinderlow',['endCylinderLow',['../structpartition_table.html#ad7829e34be70084abe145227b0d18274',1,'partitionTable']]], - ['endhead',['endHead',['../structpartition_table.html#a4a3945bfd3a29f474984cb9f180dbd51',1,'partitionTable']]], - ['endsector',['endSector',['../structpartition_table.html#a27cdc4320c418ed0d833ab163ed77ad7',1,'partitionTable']]], - ['eofbit',['eofbit',['../classios__base.html#af75072b7ef2a931c77a2cb8e7ccda460',1,'ios_base']]], - ['extended_5fboot_5fsig',['EXTENDED_BOOT_SIG',['../_fat_structs_8h.html#aefadfae26e4cc8d57c1ff727a9d1cd20',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_6.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_6.html deleted file mode 100644 index 3d398e62..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_6.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_6.js deleted file mode 100644 index fecfaa21..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_6.js +++ /dev/null @@ -1,39 +0,0 @@ -var searchData= -[ - ['failbit',['failbit',['../classios__base.html#a36157154001bcce17827db6786e35efd',1,'ios_base']]], - ['fat12eoc',['FAT12EOC',['../_fat_structs_8h.html#af314c45d1d37d09c9e44847326232466',1,'FatStructs.h']]], - ['fat12eoc_5fmin',['FAT12EOC_MIN',['../_fat_structs_8h.html#a48951911b522ebf72bf5561c3402aa15',1,'FatStructs.h']]], - ['fat16',['fat16',['../unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887',1,'cache_t']]], - ['fat16eoc',['FAT16EOC',['../_fat_structs_8h.html#afcd95ebc621a46c82b9997c8b9208550',1,'FatStructs.h']]], - ['fat16eoc_5fmin',['FAT16EOC_MIN',['../_fat_structs_8h.html#a2f549b850b74666ba7d922bcb373896e',1,'FatStructs.h']]], - ['fat32',['fat32',['../unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83',1,'cache_t']]], - ['fat32backbootblock',['fat32BackBootBlock',['../structbios_parm_block.html#a7a4e93790b6e66f090c1551020b099bd',1,'biosParmBlock::fat32BackBootBlock()'],['../structfat32__boot.html#ac93acdae62dab5cd1f7a35187992dbf2',1,'fat32_boot::fat32BackBootBlock()']]], - ['fat32eoc',['FAT32EOC',['../_fat_structs_8h.html#a67a9dbf970f43fadd41a6a9fede60c47',1,'FatStructs.h']]], - ['fat32eoc_5fmin',['FAT32EOC_MIN',['../_fat_structs_8h.html#a8f97a312e990c3f4faf7e98c3256aae5',1,'FatStructs.h']]], - ['fat32flags',['fat32Flags',['../structbios_parm_block.html#a626ac3dc473d764688b8171916eecf44',1,'biosParmBlock::fat32Flags()'],['../structfat32__boot.html#aaa31a140202021bf33aed72765531b3f',1,'fat32_boot::fat32Flags()']]], - ['fat32fsinfo',['fat32FSInfo',['../structbios_parm_block.html#a25ea392d8284e6c1d007cb8fcad4b86c',1,'biosParmBlock::fat32FSInfo()'],['../structfat32__boot.html#a03ff6d1197c08688f20c7aad40206bc4',1,'fat32_boot::fat32FSInfo()']]], - ['fat32mask',['FAT32MASK',['../_fat_structs_8h.html#a7491c79fff0bda3b026ffa098a28d6df',1,'FatStructs.h']]], - ['fat32reserved',['fat32Reserved',['../structbios_parm_block.html#a351f87fe3446b1a71963a30bbdc23218',1,'biosParmBlock::fat32Reserved()'],['../structfat32__boot.html#a3343ad07c664fb7564d68c5194ea7da9',1,'fat32_boot::fat32Reserved()']]], - ['fat32rootcluster',['fat32RootCluster',['../structbios_parm_block.html#a77ca01bd99f746e05dd872cbd2979937',1,'biosParmBlock::fat32RootCluster()'],['../structfat32__boot.html#aa216677f22a95dd86ed2e61604883a13',1,'fat32_boot::fat32RootCluster()']]], - ['fat32version',['fat32Version',['../structbios_parm_block.html#abad4f6f0c14dad9f5b7d43de94e685e8',1,'biosParmBlock::fat32Version()'],['../structfat32__boot.html#a29c37e1163772493efb524c5ca0e1aa8',1,'fat32_boot::fat32Version()']]], - ['fat_5fdefault_5fdate',['FAT_DEFAULT_DATE',['../_fat_structs_8h.html#a42eeb0322bced1f7b527c707f8bd54a4',1,'FatStructs.h']]], - ['fat_5fdefault_5ftime',['FAT_DEFAULT_TIME',['../_fat_structs_8h.html#a23c2510407ec3be457e0e4807644deb2',1,'FatStructs.h']]], - ['fatcount',['fatCount',['../structbios_parm_block.html#a7c03f147c3fb18f0df03d346050af13b',1,'biosParmBlock::fatCount()'],['../structfat__boot.html#a04d3b6a45acf28a80ff909dc1b33da2f',1,'fat_boot::fatCount()'],['../structfat32__boot.html#a7882fa8744bd171bfa1512bd442574bc',1,'fat32_boot::fatCount()']]], - ['fbs',['fbs',['../unioncache__t.html#ad1a4f1c0e8b8ca4d530427dbc920c764',1,'cache_t']]], - ['fbs32',['fbs32',['../unioncache__t.html#ad0613173ed4e83920eedfeb33102848a',1,'cache_t']]], - ['filesize',['fileSize',['../structdirectory_entry.html#ac2445d99b50f925f662952e0ccd26a02',1,'directoryEntry']]], - ['filesystemtype',['fileSystemType',['../structfat__boot.html#aee529e32908406866f3ec3c17c4632fa',1,'fat_boot::fileSystemType()'],['../structfat32__boot.html#a13ee6c63e17d634b6826bfdfa94cbd78',1,'fat32_boot::fileSystemType()']]], - ['firstclusterhigh',['firstClusterHigh',['../structdirectory_entry.html#a3b492598b2b05e8425d2a500443613bd',1,'directoryEntry']]], - ['firstclusterlow',['firstClusterLow',['../structdirectory_entry.html#a74bd660417a9c3501eae353326c14bb9',1,'directoryEntry']]], - ['firstsector',['firstSector',['../structpartition_table.html#a02bbdff840c854dc96fa0b6da8589d86',1,'partitionTable']]], - ['flags',['flags',['../structfname__t.html#a39c69edff13165c6e03b308104e7286d',1,'fname_t']]], - ['fname_5fflag_5flc_5fbase',['FNAME_FLAG_LC_BASE',['../_fat_file_8h.html#a79e43960e1b4eecf274f5faea9c3168c',1,'FatFile.h']]], - ['fname_5fflag_5flc_5fext',['FNAME_FLAG_LC_EXT',['../_fat_file_8h.html#a135b7572768b09661aa38afaceec7296',1,'FatFile.h']]], - ['fname_5fflag_5flost_5fchars',['FNAME_FLAG_LOST_CHARS',['../_fat_file_8h.html#acd45286b7dfc5ba68be18c8c3a9d298d',1,'FatFile.h']]], - ['fname_5fflag_5fmixed_5fcase',['FNAME_FLAG_MIXED_CASE',['../_fat_file_8h.html#a63994c21f3b723a55247f063a1b01c9c',1,'FatFile.h']]], - ['fname_5fflag_5fneed_5flfn',['FNAME_FLAG_NEED_LFN',['../_fat_file_8h.html#a1a041207a19d2fd9a1e2739343ccb29b',1,'FatFile.h']]], - ['freecount',['freeCount',['../structfat32__fsinfo.html#a6c2d84388c0a38a74f7682fd602492c7',1,'fat32_fsinfo']]], - ['fsinfo',['fsinfo',['../unioncache__t.html#a46c7b14586a6248824a97101111cbae1',1,'cache_t']]], - ['fsinfo_5flead_5fsig',['FSINFO_LEAD_SIG',['../_fat_structs_8h.html#a7a7a74a7315ad523e3b0c9dbd44d9a32',1,'FatStructs.h']]], - ['fsinfo_5fstruct_5fsig',['FSINFO_STRUCT_SIG',['../_fat_structs_8h.html#a9bf6b77df7bec6c49d81562c54371e81',1,'FatStructs.h']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_7.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_7.html deleted file mode 100644 index 7b791460..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_7.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_7.js deleted file mode 100644 index 26e40521..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['goodbit',['goodbit',['../classios__base.html#a07a00996a6e525b88bdfe7935d5ead05',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_8.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_8.html deleted file mode 100644 index 8ebc5f6b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_8.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_8.js deleted file mode 100644 index ad9850fb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['headcount',['headCount',['../structbios_parm_block.html#a2324ca82e2a7da4d91f458fa32a6e239',1,'biosParmBlock::headCount()'],['../structfat__boot.html#ae31da876cd9f48de5268a129218df2c2',1,'fat_boot::headCount()'],['../structfat32__boot.html#a1a5298db692526bc64243766d6b54181',1,'fat32_boot::headCount()']]], - ['hex',['hex',['../classios__base.html#a3608e51eb0a80ea94ddadd5b713a3750',1,'ios_base']]], - ['hidddensectors',['hidddenSectors',['../structbios_parm_block.html#a9413199be8525190d40589f60c22bcab',1,'biosParmBlock::hidddenSectors()'],['../structfat__boot.html#a18f1b4c245fe7bd09f5a9430c005e23a',1,'fat_boot::hidddenSectors()'],['../structfat32__boot.html#ab10224aa4bba42b262fcd3479e279e1f',1,'fat32_boot::hidddenSectors()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_9.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_9.html deleted file mode 100644 index 12136613..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_9.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_9.js deleted file mode 100644 index 58cb2a24..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['in',['in',['../classios__base.html#ae5432e3c269064480652c4602f5f74ad',1,'ios_base']]], - ['internal',['internal',['../classios__base.html#afc720b7f6f461ec8e9cf5505059e5d7c',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_a.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_a.html deleted file mode 100644 index 24819a37..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_a.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_a.js deleted file mode 100644 index e043c526..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jump',['jump',['../structfat__boot.html#a83f9f2d1d0130f25f34c90dfc82e3751',1,'fat_boot::jump()'],['../structfat32__boot.html#a2d93fc193a64ecffbd71ead207fe4810',1,'fat32_boot::jump()']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_b.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_b.html deleted file mode 100644 index b306931e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_b.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_b.js deleted file mode 100644 index 76ff7e4b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_b.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['lastaccessdate',['lastAccessDate',['../structdirectory_entry.html#abca70dc5c5fcbe199fd78df010111331',1,'directoryEntry']]], - ['lastwritedate',['lastWriteDate',['../structdirectory_entry.html#a12b2e7cf87482a942a0b5d3df6c51468',1,'directoryEntry']]], - ['lastwritetime',['lastWriteTime',['../structdirectory_entry.html#a7bab435322d1928f66fbce53ee1f402d',1,'directoryEntry']]], - ['ldir_5fname1_5fdim',['LDIR_NAME1_DIM',['../_fat_structs_8h.html#af843af29c67dd30ca7c5684806bf02fc',1,'FatStructs.h']]], - ['ldir_5fname2_5fdim',['LDIR_NAME2_DIM',['../_fat_structs_8h.html#a99cae591c59e261f54617617e173e7e0',1,'FatStructs.h']]], - ['ldir_5fname3_5fdim',['LDIR_NAME3_DIM',['../_fat_structs_8h.html#a99fbd27fa9e5003a8d77ca7fc14d2090',1,'FatStructs.h']]], - ['ldir_5ford_5flast_5flong_5fentry',['LDIR_ORD_LAST_LONG_ENTRY',['../_fat_structs_8h.html#a8cfb60b9eaf04dcdc6e4f5a466af5540',1,'FatStructs.h']]], - ['leadsignature',['leadSignature',['../structfat32__fsinfo.html#aa8ee056cc1beb1355e15610c1beba5e3',1,'fat32_fsinfo']]], - ['left',['left',['../classios__base.html#ad364df9af2cfde1f40bd8e10c62bb215',1,'ios_base']]], - ['len',['len',['../structfname__t.html#a471184cc4c2671526d7d6fb80b2fe20c',1,'fname_t']]], - ['lfn',['lfn',['../structfname__t.html#a76ffd7abd5b7d3acf90b329c905770fd',1,'fname_t']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_c.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_c.html deleted file mode 100644 index 75709df8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_c.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_c.js deleted file mode 100644 index 9df4d76a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_c.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['mbr',['mbr',['../unioncache__t.html#a6ac10bfb1ebb1139c448456679663bb6',1,'cache_t']]], - ['mbrsig0',['mbrSig0',['../structmaster_boot_record.html#a42b0b413ecb21ac5314d4f6bca05308f',1,'masterBootRecord']]], - ['mbrsig1',['mbrSig1',['../structmaster_boot_record.html#aafbbcb4f6a2d1181c6458d4c9603df4f',1,'masterBootRecord']]], - ['mediatype',['mediaType',['../structbios_parm_block.html#a4237e7c3ba247516d546c149954e5042',1,'biosParmBlock::mediaType()'],['../structfat__boot.html#a63eaf7185663369af2527309634d3c90',1,'fat_boot::mediaType()'],['../structfat32__boot.html#a3b1ab5d2dc872c0d80cd4f34622de417',1,'fat32_boot::mediaType()']]], - ['mustbezero',['mustBeZero',['../structlong_directory_entry.html#af3055930e869875e49b32ef0b49c3649',1,'longDirectoryEntry']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_d.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_d.html deleted file mode 100644 index 34c80a48..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_d.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_d.js deleted file mode 100644 index 786e88ff..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_d.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['name',['name',['../structdirectory_entry.html#a05dc993ea55a1a742de5970541a31ecb',1,'directoryEntry']]], - ['name1',['name1',['../structlong_directory_entry.html#a629f1ca5ba2ccce6cac5295578b6e7b4',1,'longDirectoryEntry']]], - ['name2',['name2',['../structlong_directory_entry.html#ad763b5a3da4b8d326d9888493fbb819a',1,'longDirectoryEntry']]], - ['name3',['name3',['../structlong_directory_entry.html#a6f14c81b7d224dc4431217f92601257a',1,'longDirectoryEntry']]], - ['nextfree',['nextFree',['../structfat32__fsinfo.html#a539b3bb0a2ead9df417df9ac8b6b1606',1,'fat32_fsinfo']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_e.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_e.html deleted file mode 100644 index 4a1c8a61..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_e.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_e.js deleted file mode 100644 index e40f1bb1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['oct',['oct',['../classios__base.html#a4155540f8d3ffdb8d25a2f50ee4df08f',1,'ios_base']]], - ['oemid',['oemId',['../structfat__boot.html#adc034212201e879fea1eb44db43e55a5',1,'fat_boot::oemId()'],['../structfat32__boot.html#af623a473a960ea20904dce0edfb6bb9d',1,'fat32_boot::oemId()']]], - ['ord',['ord',['../structlong_directory_entry.html#a1b65e85dd63d0708cd1b875ce4e5e338',1,'longDirectoryEntry']]], - ['out',['out',['../classios__base.html#a4c1d517774c0d11af3424e90395f26ae',1,'ios_base']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_f.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_f.html deleted file mode 100644 index cc86fb59..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_f.js b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_f.js deleted file mode 100644 index 64a608f3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/search/variables_f.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['p',['p',['../structsetprecision.html#a7cb7bb355a303fa39a8035615bde9348',1,'setprecision']]], - ['part',['part',['../structmaster_boot_record.html#aa4e294e50f311635c10c92f4c99227c5',1,'masterBootRecord']]], - ['position',['position',['../struct_fat_pos__t.html#a8e14c6f2705777502b543452743eaa26',1,'FatPos_t']]] -]; diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/splitbar.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/splitbar.png deleted file mode 100644 index fe895f2c..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/splitbar.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/struct_fat_pos__t-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/struct_fat_pos__t-members.html deleted file mode 100644 index e41994bc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/struct_fat_pos__t-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
FatPos_t Member List
-
-
- -

This is the complete list of members for FatPos_t, including all inherited members.

- - - - -
clusterFatPos_t
FatPos_t() (defined in FatPos_t)FatPos_tinline
positionFatPos_t
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/struct_fat_pos__t.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/struct_fat_pos__t.html deleted file mode 100644 index 39ef0715..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/struct_fat_pos__t.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -SdFat: FatPos_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
FatPos_t Struct Reference
-
-
- -

Internal type for file position - do not use in user apps. - More...

- -

#include <FatFile.h>

- - - - - - -

-Public Attributes

uint32_t cluster
 
uint32_t position
 
-

Detailed Description

-

Internal type for file position - do not use in user apps.

-

Member Data Documentation

- -

◆ cluster

- -
-
- - - - -
uint32_t FatPos_t::cluster
-
-

cluster for position

- -
-
- -

◆ position

- -
-
- - - - -
uint32_t FatPos_t::position
-
-

stream position

- -
-
-
The documentation for this struct was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structbios_parm_block-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structbios_parm_block-members.html deleted file mode 100644 index e3cec4bb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structbios_parm_block-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
biosParmBlock Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structbios_parm_block.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structbios_parm_block.html deleted file mode 100644 index 935aa8ea..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structbios_parm_block.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - -SdFat: biosParmBlock Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
biosParmBlock Struct Reference
-
-
- -

BIOS parameter block. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint16_t bytesPerSector
 
uint16_t fat32BackBootBlock
 
uint16_t fat32Flags
 
uint16_t fat32FSInfo
 
uint8_t fat32Reserved [12]
 
uint32_t fat32RootCluster
 
uint16_t fat32Version
 
uint8_t fatCount
 
uint16_t headCount
 
uint32_t hidddenSectors
 
uint8_t mediaType
 
uint16_t reservedSectorCount
 
uint16_t rootDirEntryCount
 
uint8_t sectorsPerCluster
 
uint16_t sectorsPerFat16
 
uint32_t sectorsPerFat32
 
uint16_t sectorsPerTrtack
 
uint16_t totalSectors16
 
uint32_t totalSectors32
 
-

Detailed Description

-

BIOS parameter block.

-

The BIOS parameter block describes the physical layout of a FAT volume.

-

Member Data Documentation

- -

◆ bytesPerSector

- -
-
- - - - -
uint16_t biosParmBlock::bytesPerSector
-
-

Count of bytes per sector. This value may take on only the following values: 512, 1024, 2048 or 4096

- -
-
- -

◆ fat32BackBootBlock

- -
-
- - - - -
uint16_t biosParmBlock::fat32BackBootBlock
-
-

If nonzero, indicates the sector number in the reserved area of the volume of a copy of the boot record. Usually 6. No value other than 6 is recommended.

- -
-
- -

◆ fat32Flags

- -
-
- - - - -
uint16_t biosParmBlock::fat32Flags
-
-

This field is only defined for FAT32 media and does not exist on FAT12 and FAT16 media. Bits 0-3 – Zero-based number of active FAT. Only valid if mirroring is disabled. Bits 4-6 – Reserved. Bit 7 – 0 means the FAT is mirrored at runtime into all FATs. – 1 means only one FAT is active; it is the one referenced in bits 0-3. Bits 8-15 – Reserved.

- -
-
- -

◆ fat32FSInfo

- -
-
- - - - -
uint16_t biosParmBlock::fat32FSInfo
-
-

Sector number of FSINFO structure in the reserved area of the FAT32 volume. Usually 1.

- -
-
- -

◆ fat32Reserved

- -
-
- - - - -
uint8_t biosParmBlock::fat32Reserved[12]
-
-

Reserved for future expansion. Code that formats FAT32 volumes should always set all of the bytes of this field to 0.

- -
-
- -

◆ fat32RootCluster

- -
-
- - - - -
uint32_t biosParmBlock::fat32RootCluster
-
-

Cluster number of the first cluster of the root directory for FAT32. This usually 2 but not required to be 2.

- -
-
- -

◆ fat32Version

- -
-
- - - - -
uint16_t biosParmBlock::fat32Version
-
-

FAT32 version. High byte is major revision number. Low byte is minor revision number. Only 0.0 define.

- -
-
- -

◆ fatCount

- -
-
- - - - -
uint8_t biosParmBlock::fatCount
-
-

The count of FAT data structures on the volume. This field should always contain the value 2 for any FAT volume of any type.

- -
-
- -

◆ headCount

- -
-
- - - - -
uint16_t biosParmBlock::headCount
-
-

Number of heads for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ hidddenSectors

- -
-
- - - - -
uint32_t biosParmBlock::hidddenSectors
-
-

Count of hidden sectors preceding the partition that contains this FAT volume. This field is generally only relevant for media visible on interrupt 0x13.

- -
-
- -

◆ mediaType

- -
-
- - - - -
uint8_t biosParmBlock::mediaType
-
-

This dates back to the old MS-DOS 1.x media determination and is no longer usually used for anything. 0xF8 is the standard value for fixed (nonremovable) media. For removable media, 0xF0 is frequently used. Legal values are 0xF0 or 0xF8-0xFF.

- -
-
- -

◆ reservedSectorCount

- -
-
- - - - -
uint16_t biosParmBlock::reservedSectorCount
-
-

Number of sectors before the first FAT. This value must not be zero.

- -
-
- -

◆ rootDirEntryCount

- -
-
- - - - -
uint16_t biosParmBlock::rootDirEntryCount
-
-

For FAT12 and FAT16 volumes, this field contains the count of 32-byte directory entries in the root directory. For FAT32 volumes, this field must be set to 0. For FAT12 and FAT16 volumes, this value should always specify a count that when multiplied by 32 results in a multiple of bytesPerSector. FAT16 volumes should use the value 512.

- -
-
- -

◆ sectorsPerCluster

- -
-
- - - - -
uint8_t biosParmBlock::sectorsPerCluster
-
-

Number of sectors per allocation unit. This value must be a power of 2 that is greater than 0. The legal values are 1, 2, 4, 8, 16, 32, 64, and 128.

- -
-
- -

◆ sectorsPerFat16

- -
-
- - - - -
uint16_t biosParmBlock::sectorsPerFat16
-
-

Count of sectors occupied by one FAT on FAT12/FAT16 volumes. On FAT32 volumes this field must be 0, and sectorsPerFat32 contains the FAT size count.

- -
-
- -

◆ sectorsPerFat32

- -
-
- - - - -
uint32_t biosParmBlock::sectorsPerFat32
-
-

Count of sectors occupied by one FAT on FAT32 volumes.

- -
-
- -

◆ sectorsPerTrtack

- -
-
- - - - -
uint16_t biosParmBlock::sectorsPerTrtack
-
-

Sectors per track for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ totalSectors16

- -
-
- - - - -
uint16_t biosParmBlock::totalSectors16
-
-

This field is the old 16-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors32 must be nonzero. For FAT32 volumes, this field must be 0. For FAT12 and FAT16 volumes, this field contains the sector count, and totalSectors32 is 0 if the total sector count fits (is less than 0x10000).

- -
-
- -

◆ totalSectors32

- -
-
- - - - -
uint32_t biosParmBlock::totalSectors32
-
-

This field is the new 32-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors16 must be nonzero.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structdirectory_entry-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structdirectory_entry-members.html deleted file mode 100644 index 8dd5c063..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structdirectory_entry-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
directoryEntry Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structdirectory_entry.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structdirectory_entry.html deleted file mode 100644 index 02215818..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structdirectory_entry.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - -SdFat: directoryEntry Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
directoryEntry Struct Reference
-
-
- -

FAT short directory entry. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t attributes
 
uint16_t creationDate
 
uint16_t creationTime
 
uint8_t creationTimeTenths
 
uint32_t fileSize
 
uint16_t firstClusterHigh
 
uint16_t firstClusterLow
 
uint16_t lastAccessDate
 
uint16_t lastWriteDate
 
uint16_t lastWriteTime
 
uint8_t name [11]
 
uint8_t reservedNT
 
-

Detailed Description

-

FAT short directory entry.

-

Short means short 8.3 name, not the entry size.

-

Date Format. A FAT directory entry date stamp is a 16-bit field that is basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the 16-bit word):

-

Bits 9-15: Count of years from 1980, valid value range 0-127 inclusive (1980-2107).

-

Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive.

-

Bits 0-4: Day of month, valid value range 1-31 inclusive.

-

Time Format. A FAT directory entry time stamp is a 16-bit field that has a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the 16-bit word).

-

Bits 11-15: Hours, valid value range 0-23 inclusive.

-

Bits 5-10: Minutes, valid value range 0-59 inclusive.

-

Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds).

-

The valid time range is from Midnight 00:00:00 to 23:59:58.

-

Member Data Documentation

- -

◆ attributes

- -
-
- - - - -
uint8_t directoryEntry::attributes
-
-

Entry attributes.

-

The upper two bits of the attribute byte are reserved and should always be set to 0 when a file is created and never modified or looked at after that. See defines that begin with DIR_ATT_.

- -
-
- -

◆ creationDate

- -
-
- - - - -
uint16_t directoryEntry::creationDate
-
-

Date file was created.

- -
-
- -

◆ creationTime

- -
-
- - - - -
uint16_t directoryEntry::creationTime
-
-

Time file was created.

- -
-
- -

◆ creationTimeTenths

- -
-
- - - - -
uint8_t directoryEntry::creationTimeTenths
-
-

The granularity of the seconds part of creationTime is 2 seconds so this field is a count of tenths of a second and its valid value range is 0-199 inclusive. (WHG note - seems to be hundredths)

- -
-
- -

◆ fileSize

- -
-
- - - - -
uint32_t directoryEntry::fileSize
-
-

32-bit unsigned holding this file's size in bytes.

- -
-
- -

◆ firstClusterHigh

- -
-
- - - - -
uint16_t directoryEntry::firstClusterHigh
-
-

High word of this entry's first cluster number (always 0 for a FAT12 or FAT16 volume).

- -
-
- -

◆ firstClusterLow

- -
-
- - - - -
uint16_t directoryEntry::firstClusterLow
-
-

Low word of this entry's first cluster number.

- -
-
- -

◆ lastAccessDate

- -
-
- - - - -
uint16_t directoryEntry::lastAccessDate
-
-

Last access date. Note that there is no last access time, only a date. This is the date of last read or write. In the case of a write, this should be set to the same date as lastWriteDate.

- -
-
- -

◆ lastWriteDate

- -
-
- - - - -
uint16_t directoryEntry::lastWriteDate
-
-

Date of last write. File creation is considered a write.

- -
-
- -

◆ lastWriteTime

- -
-
- - - - -
uint16_t directoryEntry::lastWriteTime
-
-

Time of last write. File creation is considered a write.

- -
-
- -

◆ name

- -
-
- - - - -
uint8_t directoryEntry::name[11]
-
-

Short 8.3 name.

-

The first eight bytes contain the file name with blank fill. The last three bytes contain the file extension with blank fill.

- -
-
- -

◆ reservedNT

- -
-
- - - - -
uint8_t directoryEntry::reservedNT
-
-

Reserved for use by Windows NT. Set value to 0 when a file is created and never modify or look at it after that.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__boot-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__boot-members.html deleted file mode 100644 index 69a90f4c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__boot-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fat32_boot Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__boot.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__boot.html deleted file mode 100644 index 74489777..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__boot.html +++ /dev/null @@ -1,604 +0,0 @@ - - - - - - - -SdFat: fat32_boot Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fat32_boot Struct Reference
-
-
- -

Boot sector for a FAT32 volume. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t bootCode [420]
 
uint8_t bootSectorSig0
 
uint8_t bootSectorSig1
 
uint8_t bootSignature
 
uint16_t bytesPerSector
 
uint8_t driveNumber
 
uint16_t fat32BackBootBlock
 
uint16_t fat32Flags
 
uint16_t fat32FSInfo
 
uint8_t fat32Reserved [12]
 
uint32_t fat32RootCluster
 
uint16_t fat32Version
 
uint8_t fatCount
 
char fileSystemType [8]
 
uint16_t headCount
 
uint32_t hidddenSectors
 
uint8_t jump [3]
 
uint8_t mediaType
 
char oemId [8]
 
uint8_t reserved1
 
uint16_t reservedSectorCount
 
uint16_t rootDirEntryCount
 
uint8_t sectorsPerCluster
 
uint16_t sectorsPerFat16
 
uint32_t sectorsPerFat32
 
uint16_t sectorsPerTrack
 
uint16_t totalSectors16
 
uint32_t totalSectors32
 
char volumeLabel [11]
 
uint32_t volumeSerialNumber
 
-

Detailed Description

-

Boot sector for a FAT32 volume.

-

Member Data Documentation

- -

◆ bootCode

- -
-
- - - - -
uint8_t fat32_boot::bootCode[420]
-
-

X86 boot code

- -
-
- -

◆ bootSectorSig0

- -
-
- - - - -
uint8_t fat32_boot::bootSectorSig0
-
-

must be 0X55

- -
-
- -

◆ bootSectorSig1

- -
-
- - - - -
uint8_t fat32_boot::bootSectorSig1
-
-

must be 0XAA

- -
-
- -

◆ bootSignature

- -
-
- - - - -
uint8_t fat32_boot::bootSignature
-
-

0X29 if next three fields are valid

- -
-
- -

◆ bytesPerSector

- -
-
- - - - -
uint16_t fat32_boot::bytesPerSector
-
-

The size of a hardware sector. Valid decimal values for this field are 512, 1024, 2048, and 4096. For most disks used in the United States, the value of this field is 512.

- -
-
- -

◆ driveNumber

- -
-
- - - - -
uint8_t fat32_boot::driveNumber
-
-

Related to the BIOS physical drive number. Floppy drives are identified as 0x00 and physical hard disks are identified as 0x80, regardless of the number of physical disk drives. Typically, this value is set prior to issuing an INT 13h BIOS call to specify the device to access. The value is only relevant if the device is a boot device.

- -
-
- -

◆ fat32BackBootBlock

- -
-
- - - - -
uint16_t fat32_boot::fat32BackBootBlock
-
-

If non-zero, indicates the sector number in the reserved area of the volume of a copy of the boot record. Usually 6. No value other than 6 is recommended.

- -
-
- -

◆ fat32Flags

- -
-
- - - - -
uint16_t fat32_boot::fat32Flags
-
-

This field is only defined for FAT32 media and does not exist on FAT12 and FAT16 media. Bits 0-3 – Zero-based number of active FAT. Only valid if mirroring is disabled. Bits 4-6 – Reserved. Bit 7 – 0 means the FAT is mirrored at runtime into all FATs. – 1 means only one FAT is active; it is the one referenced in bits 0-3. Bits 8-15 – Reserved.

- -
-
- -

◆ fat32FSInfo

- -
-
- - - - -
uint16_t fat32_boot::fat32FSInfo
-
-

Sector number of FSINFO structure in the reserved area of the FAT32 volume. Usually 1.

- -
-
- -

◆ fat32Reserved

- -
-
- - - - -
uint8_t fat32_boot::fat32Reserved[12]
-
-

Reserved for future expansion. Code that formats FAT32 volumes should always set all of the bytes of this field to 0.

- -
-
- -

◆ fat32RootCluster

- -
-
- - - - -
uint32_t fat32_boot::fat32RootCluster
-
-

Cluster number of the first cluster of the root directory for FAT32. This usually 2 but not required to be 2.

- -
-
- -

◆ fat32Version

- -
-
- - - - -
uint16_t fat32_boot::fat32Version
-
-

FAT32 version. High byte is major revision number. Low byte is minor revision number. Only 0.0 define.

- -
-
- -

◆ fatCount

- -
-
- - - - -
uint8_t fat32_boot::fatCount
-
-

The number of copies of the FAT on the volume. The value of this field is always 2.

- -
-
- -

◆ fileSystemType

- -
-
- - - - -
char fat32_boot::fileSystemType[8]
-
-

A text field with a value of FAT32.

- -
-
- -

◆ headCount

- -
-
- - - - -
uint16_t fat32_boot::headCount
-
-

Number of heads for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ hidddenSectors

- -
-
- - - - -
uint32_t fat32_boot::hidddenSectors
-
-

Count of hidden sectors preceding the partition that contains this FAT volume. This field is generally only relevant for media visible on interrupt 0x13.

- -
-
- -

◆ jump

- -
-
- - - - -
uint8_t fat32_boot::jump[3]
-
-

The first three bytes of the boot sector must be valid, executable x 86-based CPU instructions. This includes a jump instruction that skips the next non-executable bytes.

- -
-
- -

◆ mediaType

- -
-
- - - - -
uint8_t fat32_boot::mediaType
-
-

This dates back to the old MS-DOS 1.x media determination and is no longer usually used for anything. 0xF8 is the standard value for fixed (non-removable) media. For removable media, 0xF0 is frequently used. Legal values are 0xF0 or 0xF8-0xFF.

- -
-
- -

◆ oemId

- -
-
- - - - -
char fat32_boot::oemId[8]
-
-

This is typically a string of characters that identifies the operating system that formatted the volume.

- -
-
- -

◆ reserved1

- -
-
- - - - -
uint8_t fat32_boot::reserved1
-
-

used by Windows NT - should be zero for FAT

- -
-
- -

◆ reservedSectorCount

- -
-
- - - - -
uint16_t fat32_boot::reservedSectorCount
-
-

The number of sectors preceding the start of the first FAT, including the boot sector. Must not be zero

- -
-
- -

◆ rootDirEntryCount

- -
-
- - - - -
uint16_t fat32_boot::rootDirEntryCount
-
-

FAT12/FAT16 only. For FAT32 volumes, this field must be set to 0.

- -
-
- -

◆ sectorsPerCluster

- -
-
- - - - -
uint8_t fat32_boot::sectorsPerCluster
-
-

Number of sectors per allocation unit. This value must be a power of 2 that is greater than 0. The legal values are 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided.

- -
-
- -

◆ sectorsPerFat16

- -
-
- - - - -
uint16_t fat32_boot::sectorsPerFat16
-
-

On FAT32 volumes this field must be 0, and sectorsPerFat32 contains the FAT size count.

- -
-
- -

◆ sectorsPerFat32

- -
-
- - - - -
uint32_t fat32_boot::sectorsPerFat32
-
-

Count of sectors occupied by one FAT on FAT32 volumes.

- -
-
- -

◆ sectorsPerTrack

- -
-
- - - - -
uint16_t fat32_boot::sectorsPerTrack
-
-

Sectors per track for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ totalSectors16

- -
-
- - - - -
uint16_t fat32_boot::totalSectors16
-
-

For FAT32 volumes, this field must be 0.

- -
-
- -

◆ totalSectors32

- -
-
- - - - -
uint32_t fat32_boot::totalSectors32
-
-

Contains the total number of sectors in the FAT32 volume.

- -
-
- -

◆ volumeLabel

- -
-
- - - - -
char fat32_boot::volumeLabel[11]
-
-

A field once used to store the volume label. The volume label is now stored as a special file in the root directory.

- -
-
- -

◆ volumeSerialNumber

- -
-
- - - - -
uint32_t fat32_boot::volumeSerialNumber
-
-

A random serial number created when formatting a disk, which helps to distinguish between disks. Usually generated by combining date and time.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__fsinfo-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__fsinfo-members.html deleted file mode 100644 index 8f52a553..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__fsinfo-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fat32_fsinfo Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__fsinfo.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__fsinfo.html deleted file mode 100644 index 6deb5851..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat32__fsinfo.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - -SdFat: fat32_fsinfo Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fat32_fsinfo Struct Reference
-
-
- -

FSINFO sector for a FAT32 volume. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - -

-Public Attributes

uint32_t freeCount
 
uint32_t leadSignature
 
uint32_t nextFree
 
uint8_t reserved1 [480]
 
uint8_t reserved2 [12]
 
uint32_t structSignature
 
uint8_t tailSignature [4]
 
-

Detailed Description

-

FSINFO sector for a FAT32 volume.

-

Member Data Documentation

- -

◆ freeCount

- -
-
- - - - -
uint32_t fat32_fsinfo::freeCount
-
-

Contains the last known free cluster count on the volume. If the value is 0xFFFFFFFF, then the free count is unknown and must be computed. Any other value can be used, but is not necessarily correct. It should be range checked at least to make sure it is <= volume cluster count.

- -
-
- -

◆ leadSignature

- -
-
- - - - -
uint32_t fat32_fsinfo::leadSignature
-
-

must be 0X52, 0X52, 0X61, 0X41

- -
-
- -

◆ nextFree

- -
-
- - - - -
uint32_t fat32_fsinfo::nextFree
-
-

This is a hint for the FAT driver. It indicates the cluster number at which the driver should start looking for free clusters. If the value is 0xFFFFFFFF, then there is no hint and the driver should start looking at cluster 2.

- -
-
- -

◆ reserved1

- -
-
- - - - -
uint8_t fat32_fsinfo::reserved1[480]
-
-

must be zero

- -
-
- -

◆ reserved2

- -
-
- - - - -
uint8_t fat32_fsinfo::reserved2[12]
-
-

must be zero

- -
-
- -

◆ structSignature

- -
-
- - - - -
uint32_t fat32_fsinfo::structSignature
-
-

must be 0X72, 0X72, 0X41, 0X61

- -
-
- -

◆ tailSignature

- -
-
- - - - -
uint8_t fat32_fsinfo::tailSignature[4]
-
-

must be 0X00, 0X00, 0X55, 0XAA

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat__boot-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat__boot-members.html deleted file mode 100644 index b38b67d3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat__boot-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fat_boot Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat__boot.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat__boot.html deleted file mode 100644 index 601874e1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfat__boot.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - - - - -SdFat: fat_boot Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fat_boot Struct Reference
-
-
- -

Boot sector for a FAT12/FAT16 volume. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t bootCode [448]
 
uint8_t bootSectorSig0
 
uint8_t bootSectorSig1
 
uint8_t bootSignature
 
uint16_t bytesPerSector
 
uint8_t driveNumber
 
uint8_t fatCount
 
char fileSystemType [8]
 
uint16_t headCount
 
uint32_t hidddenSectors
 
uint8_t jump [3]
 
uint8_t mediaType
 
char oemId [8]
 
uint8_t reserved1
 
uint16_t reservedSectorCount
 
uint16_t rootDirEntryCount
 
uint8_t sectorsPerCluster
 
uint16_t sectorsPerFat16
 
uint16_t sectorsPerTrack
 
uint16_t totalSectors16
 
uint32_t totalSectors32
 
char volumeLabel [11]
 
uint32_t volumeSerialNumber
 
-

Detailed Description

-

Boot sector for a FAT12/FAT16 volume.

-

Member Data Documentation

- -

◆ bootCode

- -
-
- - - - -
uint8_t fat_boot::bootCode[448]
-
-

X86 boot code

- -
-
- -

◆ bootSectorSig0

- -
-
- - - - -
uint8_t fat_boot::bootSectorSig0
-
-

must be 0X55

- -
-
- -

◆ bootSectorSig1

- -
-
- - - - -
uint8_t fat_boot::bootSectorSig1
-
-

must be 0XAA

- -
-
- -

◆ bootSignature

- -
-
- - - - -
uint8_t fat_boot::bootSignature
-
-

0X29 if next three fields are valid

- -
-
- -

◆ bytesPerSector

- -
-
- - - - -
uint16_t fat_boot::bytesPerSector
-
-

The size of a hardware sector. Valid decimal values for this field are 512, 1024, 2048, and 4096. For most disks used in the United States, the value of this field is 512.

- -
-
- -

◆ driveNumber

- -
-
- - - - -
uint8_t fat_boot::driveNumber
-
-

Related to the BIOS physical drive number. Floppy drives are identified as 0x00 and physical hard disks are identified as 0x80, regardless of the number of physical disk drives. Typically, this value is set prior to issuing an INT 13h BIOS call to specify the device to access. The value is only relevant if the device is a boot device.

- -
-
- -

◆ fatCount

- -
-
- - - - -
uint8_t fat_boot::fatCount
-
-

The number of copies of the FAT on the volume. The value of this field is always 2.

- -
-
- -

◆ fileSystemType

- -
-
- - - - -
char fat_boot::fileSystemType[8]
-
-

A field with a value of either FAT, FAT12 or FAT16, depending on the disk format.

- -
-
- -

◆ headCount

- -
-
- - - - -
uint16_t fat_boot::headCount
-
-

Number of heads for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ hidddenSectors

- -
-
- - - - -
uint32_t fat_boot::hidddenSectors
-
-

Count of hidden sectors preceding the partition that contains this FAT volume. This field is generally only relevant for media visible on interrupt 0x13.

- -
-
- -

◆ jump

- -
-
- - - - -
uint8_t fat_boot::jump[3]
-
-

The first three bytes of the boot sector must be valid, executable x 86-based CPU instructions. This includes a jump instruction that skips the next non-executable bytes.

- -
-
- -

◆ mediaType

- -
-
- - - - -
uint8_t fat_boot::mediaType
-
-

This dates back to the old MS-DOS 1.x media determination and is no longer usually used for anything. 0xF8 is the standard value for fixed (non-removable) media. For removable media, 0xF0 is frequently used. Legal values are 0xF0 or 0xF8-0xFF.

- -
-
- -

◆ oemId

- -
-
- - - - -
char fat_boot::oemId[8]
-
-

This is typically a string of characters that identifies the operating system that formatted the volume.

- -
-
- -

◆ reserved1

- -
-
- - - - -
uint8_t fat_boot::reserved1
-
-

used by Windows NT - should be zero for FAT

- -
-
- -

◆ reservedSectorCount

- -
-
- - - - -
uint16_t fat_boot::reservedSectorCount
-
-

The number of sectors preceding the start of the first FAT, including the boot sector. The value of this field is always 1.

- -
-
- -

◆ rootDirEntryCount

- -
-
- - - - -
uint16_t fat_boot::rootDirEntryCount
-
-

For FAT12 and FAT16 volumes, this field contains the count of 32-byte directory entries in the root directory. For FAT32 volumes, this field must be set to 0. For FAT12 and FAT16 volumes, this value should always specify a count that when multiplied by 32 results in a multiple of bytesPerSector. FAT16 volumes should use the value 512.

- -
-
- -

◆ sectorsPerCluster

- -
-
- - - - -
uint8_t fat_boot::sectorsPerCluster
-
-

Number of sectors per allocation unit. This value must be a power of 2 that is greater than 0. The legal values are 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided.

- -
-
- -

◆ sectorsPerFat16

- -
-
- - - - -
uint16_t fat_boot::sectorsPerFat16
-
-

Count of sectors occupied by one FAT on FAT12/FAT16 volumes. On FAT32 volumes this field must be 0, and sectorsPerFat32 contains the FAT size count.

- -
-
- -

◆ sectorsPerTrack

- -
-
- - - - -
uint16_t fat_boot::sectorsPerTrack
-
-

Sectors per track for interrupt 0x13. Not used otherwise.

- -
-
- -

◆ totalSectors16

- -
-
- - - - -
uint16_t fat_boot::totalSectors16
-
-

This field is the old 16-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors32 must be non-zero. For FAT32 volumes, this field must be 0. For FAT12 and FAT16 volumes, this field contains the sector count, and totalSectors32 is 0 if the total sector count fits (is less than 0x10000).

- -
-
- -

◆ totalSectors32

- -
-
- - - - -
uint32_t fat_boot::totalSectors32
-
-

This field is the new 32-bit total count of sectors on the volume. This count includes the count of all sectors in all four regions of the volume. This field can be 0; if it is 0, then totalSectors16 must be non-zero.

- -
-
- -

◆ volumeLabel

- -
-
- - - - -
char fat_boot::volumeLabel[11]
-
-

A field once used to store the volume label. The volume label is now stored as a special file in the root directory.

- -
-
- -

◆ volumeSerialNumber

- -
-
- - - - -
uint32_t fat_boot::volumeSerialNumber
-
-

A random serial number created when formatting a disk, which helps to distinguish between disks. Usually generated by combining date and time.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfname__t-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfname__t-members.html deleted file mode 100644 index dd9dda0f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfname__t-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
fname_t Member List
-
-
- -

This is the complete list of members for fname_t, including all inherited members.

- - - - - - -
flagsfname_t
lenfname_t
lfnfname_t
seqPosfname_t
sfnfname_t
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfname__t.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfname__t.html deleted file mode 100644 index a96ea8bc..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structfname__t.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - -SdFat: fname_t Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
fname_t Struct Reference
-
-
- -

Internal type for Short File Name - do not use in user apps. - More...

- -

#include <FatFile.h>

- - - - - - - - - - - - -

-Public Attributes

uint8_t flags
 
size_t len
 
const char * lfn
 
uint8_t seqPos
 
uint8_t sfn [11]
 
-

Detailed Description

-

Internal type for Short File Name - do not use in user apps.

-

Member Data Documentation

- -

◆ flags

- -
-
- - - - -
uint8_t fname_t::flags
-
-

Flags for base and extension character case and LFN.

- -
-
- -

◆ len

- -
-
- - - - -
size_t fname_t::len
-
-

length of Long File Name

- -
-
- -

◆ lfn

- -
-
- - - - -
const char* fname_t::lfn
-
-

Long File Name start.

- -
-
- -

◆ seqPos

- -
-
- - - - -
uint8_t fname_t::seqPos
-
-

position for sequence number

- -
-
- -

◆ sfn

- -
-
- - - - -
uint8_t fname_t::sfn[11]
-
-

Short File Name

- -
-
-
The documentation for this struct was generated from the following file:
    -
  • Arduino/libraries/SdFat/src/FatLib/FatFile.h
  • -
-
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structlong_directory_entry-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structlong_directory_entry-members.html deleted file mode 100644 index 653045e7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structlong_directory_entry-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
longDirectoryEntry Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structlong_directory_entry.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structlong_directory_entry.html deleted file mode 100644 index e3d2b88e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structlong_directory_entry.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - -SdFat: longDirectoryEntry Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
longDirectoryEntry Struct Reference
-
-
- -

FAT long directory entry. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t attr
 
uint8_t chksum
 
uint16_t mustBeZero
 
uint16_t name1 [LDIR_NAME1_DIM]
 
uint16_t name2 [LDIR_NAME2_DIM]
 
uint16_t name3 [LDIR_NAME3_DIM]
 
uint8_t ord
 
uint8_t type
 
-

Detailed Description

-

FAT long directory entry.

-

Member Data Documentation

- -

◆ attr

- -
-
- - - - -
uint8_t longDirectoryEntry::attr
-
-

Attributes - must be ATTR_LONG_NAME

- -
-
- -

◆ chksum

- -
-
- - - - -
uint8_t longDirectoryEntry::chksum
-
-

Checksum of name in the short dir entry at the end of the long dir set.

- -
-
- -

◆ mustBeZero

- -
-
- - - - -
uint16_t longDirectoryEntry::mustBeZero
-
-

Must be ZERO. This is an artifact of the FAT "first cluster"

- -
-
- -

◆ name1

- -
-
- - - - -
uint16_t longDirectoryEntry::name1[LDIR_NAME1_DIM]
-
-

Characters 1-5 of the long-name sub-component in this entry.

- -
-
- -

◆ name2

- -
-
- - - - -
uint16_t longDirectoryEntry::name2[LDIR_NAME2_DIM]
-
-

Characters 6-11 of the long-name sub-component in this entry.

- -
-
- -

◆ name3

- -
-
- - - - -
uint16_t longDirectoryEntry::name3[LDIR_NAME3_DIM]
-
-

Characters 12 and 13 of the long-name sub-component in this entry.

- -
-
- -

◆ ord

- -
-
- - - - -
uint8_t longDirectoryEntry::ord
-
-

The order of this entry in the sequence of long dir entries associated with the short dir entry at the end of the long dir set.

-

If masked with 0X40 (LAST_LONG_ENTRY), this indicates the entry is the last long dir entry in a set of long dir entries. All valid sets of long dir entries must begin with an entry having this mask.

- -
-
- -

◆ type

- -
-
- - - - -
uint8_t longDirectoryEntry::type
-
-

If zero, indicates a directory entry that is a sub-component of a long name. NOTE: Other values reserved for future extensions.

-

Non-zero implies other directory entry types.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record-members.html deleted file mode 100644 index eabee510..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record-members.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
masterBootRecord Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record.html deleted file mode 100644 index 4d1ce7a8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -SdFat: masterBootRecord Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
masterBootRecord Struct Reference
-
-
- -

Master Boot Record. - More...

- -

#include <FatStructs.h>

-
-Collaboration diagram for masterBootRecord:
-
-
Collaboration graph
- - - -
[legend]
- - - - - - - - - - - - - - -

-Public Attributes

uint8_t codeArea [440]
 
uint32_t diskSignature
 
uint8_t mbrSig0
 
uint8_t mbrSig1
 
part_t part [4]
 
uint16_t usuallyZero
 
-

Detailed Description

-

Master Boot Record.

-

The first block of a storage device that is formatted with a MBR.

-

Member Data Documentation

- -

◆ codeArea

- -
-
- - - - -
uint8_t masterBootRecord::codeArea[440]
-
-

Code Area for master boot program.

- -
-
- -

◆ diskSignature

- -
-
- - - - -
uint32_t masterBootRecord::diskSignature
-
-

Optional Windows NT disk signature. May contain boot code.

- -
-
- -

◆ mbrSig0

- -
-
- - - - -
uint8_t masterBootRecord::mbrSig0
-
-

First MBR signature byte. Must be 0X55

- -
-
- -

◆ mbrSig1

- -
-
- - - - -
uint8_t masterBootRecord::mbrSig1
-
-

Second MBR signature byte. Must be 0XAA

- -
-
- -

◆ part

- -
-
- - - - -
part_t masterBootRecord::part[4]
-
-

Partition tables.

- -
-
- -

◆ usuallyZero

- -
-
- - - - -
uint16_t masterBootRecord::usuallyZero
-
-

Usually zero but may be more boot code.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record__coll__graph.png deleted file mode 100644 index 790e25c4..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structmaster_boot_record__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structpartition_table-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structpartition_table-members.html deleted file mode 100644 index 38d98b82..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structpartition_table-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
partitionTable Member List
-
- - - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structpartition_table.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structpartition_table.html deleted file mode 100644 index e20a886b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structpartition_table.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - -SdFat: partitionTable Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
partitionTable Struct Reference
-
-
- -

MBR partition table entry. - More...

- -

#include <FatStructs.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Attributes

unsigned beginCylinderHigh: 2
 
uint8_t beginCylinderLow
 
uint8_t beginHead
 
unsigned beginSector: 6
 
uint8_t boot
 
unsigned endCylinderHigh: 2
 
uint8_t endCylinderLow
 
uint8_t endHead
 
unsigned endSector: 6
 
uint32_t firstSector
 
uint32_t totalSectors
 
uint8_t type
 
-

Detailed Description

-

MBR partition table entry.

-

A partition table entry for a MBR formatted storage device. The MBR partition table has four entries.

-

Member Data Documentation

- -

◆ beginCylinderHigh

- -
-
- - - - -
unsigned partitionTable::beginCylinderHigh
-
-

High bits cylinder for first block in partition.

- -
-
- -

◆ beginCylinderLow

- -
-
- - - - -
uint8_t partitionTable::beginCylinderLow
-
-

Combine beginCylinderLow with beginCylinderHigh. Legal values are 0-1023. Only used in old PC BIOS.

- -
-
- -

◆ beginHead

- -
-
- - - - -
uint8_t partitionTable::beginHead
-
-

Head part of Cylinder-head-sector address of the first block in the partition. Legal values are 0-255. Only used in old PC BIOS.

- -
-
- -

◆ beginSector

- -
-
- - - - -
unsigned partitionTable::beginSector
-
-

Sector part of Cylinder-head-sector address of the first block in the partition. Legal values are 1-63. Only used in old PC BIOS.

- -
-
- -

◆ boot

- -
-
- - - - -
uint8_t partitionTable::boot
-
-

Boot Indicator . Indicates whether the volume is the active partition. Legal values include: 0X00. Do not use for booting. 0X80 Active partition.

- -
-
- -

◆ endCylinderHigh

- -
-
- - - - -
unsigned partitionTable::endCylinderHigh
-
-

High bits of end cylinder

- -
-
- -

◆ endCylinderLow

- -
-
- - - - -
uint8_t partitionTable::endCylinderLow
-
-

Combine endCylinderLow with endCylinderHigh. Legal values are 0-1023. Only used in old PC BIOS.

- -
-
- -

◆ endHead

- -
-
- - - - -
uint8_t partitionTable::endHead
-
-

head part of cylinder-head-sector address of the last sector in the partition. Legal values are 0-255. Only used in old PC BIOS.

- -
-
- -

◆ endSector

- -
-
- - - - -
unsigned partitionTable::endSector
-
-

Sector part of cylinder-head-sector address of the last sector in the partition. Legal values are 1-63. Only used in old PC BIOS.

- -
-
- -

◆ firstSector

- -
-
- - - - -
uint32_t partitionTable::firstSector
-
-

Logical block address of the first block in the partition.

- -
-
- -

◆ totalSectors

- -
-
- - - - -
uint32_t partitionTable::totalSectors
-
-

Length of the partition, in blocks.

- -
-
- -

◆ type

- -
-
- - - - -
uint8_t partitionTable::type
-
-

Partition type. See defines that begin with PART_TYPE_ for some Microsoft partition types.

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetfill-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetfill-members.html deleted file mode 100644 index bd3f174c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetfill-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
setfill Member List
-
-
- -

This is the complete list of members for setfill, including all inherited members.

- - - -
csetfill
setfill(char arg)setfillinlineexplicit
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetfill.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetfill.html deleted file mode 100644 index a3b2db7b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetfill.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -SdFat: setfill Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
setfill Struct Reference
-
-
- -

type for setfill manipulator - More...

- -

#include <iostream.h>

- - - - -

-Public Member Functions

 setfill (char arg)
 
- - - -

-Public Attributes

char c
 
-

Detailed Description

-

type for setfill manipulator

-

Constructor & Destructor Documentation

- -

◆ setfill()

- -
-
- - - - - -
- - - - - - - - -
setfill::setfill (char arg)
-
-inlineexplicit
-
-

constructor

-
Parameters
- - -
[in]argnew fill character
-
-
- -
-
-

Member Data Documentation

- -

◆ c

- -
-
- - - - -
char setfill::c
-
-

fill character

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetprecision-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetprecision-members.html deleted file mode 100644 index c02648c2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetprecision-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
setprecision Member List
-
-
- -

This is the complete list of members for setprecision, including all inherited members.

- - - -
psetprecision
setprecision(unsigned int arg)setprecisioninlineexplicit
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetprecision.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetprecision.html deleted file mode 100644 index c4b9d276..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetprecision.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: setprecision Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
setprecision Struct Reference
-
-
- -

type for setprecision manipulator - More...

- -

#include <iostream.h>

- - - - -

-Public Member Functions

 setprecision (unsigned int arg)
 
- - - -

-Public Attributes

unsigned int p
 
-

Detailed Description

-

type for setprecision manipulator

-

Constructor & Destructor Documentation

- -

◆ setprecision()

- -
-
- - - - - -
- - - - - - - - -
setprecision::setprecision (unsigned int arg)
-
-inlineexplicit
-
-

constructor

Parameters
- - -
[in]argnew precision
-
-
- -
-
-

Member Data Documentation

- -

◆ p

- -
-
- - - - -
unsigned int setprecision::p
-
-

precision

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetw-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetw-members.html deleted file mode 100644 index 71c8a730..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetw-members.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
setw Member List
-
-
- -

This is the complete list of members for setw, including all inherited members.

- - - -
setw(unsigned arg)setwinlineexplicit
wsetw
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetw.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetw.html deleted file mode 100644 index 5bed2d2c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/structsetw.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -SdFat: setw Struct Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

type for setw manipulator - More...

- -

#include <iostream.h>

- - - - -

-Public Member Functions

 setw (unsigned arg)
 
- - - -

-Public Attributes

unsigned w
 
-

Detailed Description

-

type for setw manipulator

-

Constructor & Destructor Documentation

- -

◆ setw()

- -
-
- - - - - -
- - - - - - - - -
setw::setw (unsigned arg)
-
-inlineexplicit
-
-

constructor

Parameters
- - -
[in]argnew width
-
-
- -
-
-

Member Data Documentation

- -

◆ w

- -
-
- - - - -
unsigned setw::w
-
-

width

- -
-
-
The documentation for this struct was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sync_off.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sync_off.png deleted file mode 100644 index 3b443fc6..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sync_off.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sync_on.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sync_on.png deleted file mode 100644 index e08320fb..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/sync_on.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_a.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_a.png deleted file mode 100644 index 3b725c41..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_a.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_b.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_b.png deleted file mode 100644 index e2b4a863..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_b.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_h.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_h.png deleted file mode 100644 index fd5cb705..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_h.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_s.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_s.png deleted file mode 100644 index ab478c95..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tab_s.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tabs.css b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tabs.css deleted file mode 100644 index a28614b8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t-members.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t-members.html deleted file mode 100644 index 4778aa5b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -SdFat: Member List - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
cache_t Member List
-
-
- -

This is the complete list of members for cache_t, including all inherited members.

- - - - - - - - - -
datacache_t
dircache_t
fat16cache_t
fat32cache_t
fbscache_t
fbs32cache_t
fsinfocache_t
mbrcache_t
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t.html b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t.html deleted file mode 100644 index 72dbb7b7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - -SdFat: cache_t Union Reference - - - - - - - - - -
-
- - - - - - -
-
SdFat -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
cache_t Union Reference
-
-
- -

Cache for an raw data block. - More...

- -

#include <FatVolume.h>

-
-Collaboration diagram for cache_t:
-
-
Collaboration graph
- - - - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - -

-Public Attributes

uint8_t data [512]
 
dir_t dir [16]
 
uint16_t fat16 [256]
 
uint32_t fat32 [128]
 
fat_boot_t fbs
 
fat32_boot_t fbs32
 
fat32_fsinfo_t fsinfo
 
mbr_t mbr
 
-

Detailed Description

-

Cache for an raw data block.

-

Member Data Documentation

- -

◆ data

- -
-
- - - - -
uint8_t cache_t::data[512]
-
-

Used to access cached file data blocks.

- -
-
- -

◆ dir

- -
-
- - - - -
dir_t cache_t::dir[16]
-
-

Used to access cached directory entries.

- -
-
- -

◆ fat16

- -
-
- - - - -
uint16_t cache_t::fat16[256]
-
-

Used to access cached FAT16 entries.

- -
-
- -

◆ fat32

- -
-
- - - - -
uint32_t cache_t::fat32[128]
-
-

Used to access cached FAT32 entries.

- -
-
- -

◆ fbs

- -
-
- - - - -
fat_boot_t cache_t::fbs
-
-

Used to access to a cached FAT boot sector.

- -
-
- -

◆ fbs32

- -
-
- - - - -
fat32_boot_t cache_t::fbs32
-
-

Used to access to a cached FAT32 boot sector.

- -
-
- -

◆ fsinfo

- -
-
- - - - -
fat32_fsinfo_t cache_t::fsinfo
-
-

Used to access to a cached FAT32 FSINFO sector.

- -
-
- -

◆ mbr

- -
-
- - - - -
mbr_t cache_t::mbr
-
-

Used to access a cached Master Boot Record.

- -
-
-
The documentation for this union was generated from the following file: -
- - - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t__coll__graph.png b/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t__coll__graph.png deleted file mode 100644 index 16bea1b9..00000000 Binary files a/extra-libraries/SDFat/SdFat-1.1.0/extras/html/unioncache__t__coll__graph.png and /dev/null differ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/library.properties b/extra-libraries/SDFat/SdFat-1.1.0/library.properties deleted file mode 100644 index 32cca29c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/library.properties +++ /dev/null @@ -1,11 +0,0 @@ -name=SdFat -version=1.1.0 -license=MIT -author=Bill Greiman -maintainer=Bill Greiman -sentence=FAT16/FAT32 file system for SD cards. -paragraph=FAT16/FAT32 file system for SD cards. -category=Data Storage -url=https://github.com/greiman/SdFat -repository=https://github.com/greiman/SdFat.git -architectures=esp32 diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/BlockDriver.h b/extra-libraries/SDFat/SdFat-1.1.0/src/BlockDriver.h deleted file mode 100644 index 1bb65fc5..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/BlockDriver.h +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - /** - * \file - * \brief Define block driver. - */ -#ifndef BlockDriver_h -#define BlockDriver_h -#include "FatLib/BaseBlockDriver.h" -#include "SdCard/SdSpiCard.h" -//----------------------------------------------------------------------------- -/** typedef for BlockDriver */ -#if ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -typedef BaseBlockDriver BlockDriver; -#else // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -typedef SdSpiCard BlockDriver; -#endif // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -#endif // BlockDriver_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ArduinoFiles.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ArduinoFiles.h deleted file mode 100644 index a16b65b2..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ArduinoFiles.h +++ /dev/null @@ -1,249 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief PrintFile class - */ -#ifndef ArduinoFiles_h -#define ArduinoFiles_h -#include "FatLibConfig.h" -#if ENABLE_ARDUINO_FEATURES -#include "FatFile.h" -#include -//------------------------------------------------------------------------------ -/** Arduino SD.h style flag for open for read. */ -#define FILE_READ O_RDONLY -/** Arduino SD.h style flag for open at EOF for read/write with create. */ -#define FILE_WRITE (O_RDWR | O_CREAT | O_AT_END) -//============================================================================== -/** - * \class PrintFile - * \brief FatFile with Print. - */ -class PrintFile : public FatFile, public Print { - public: - PrintFile() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - PrintFile(const char* path, oflag_t oflag) : FatFile(path, oflag) {} -#if DESTRUCTOR_CLOSES_FILE - ~PrintFile() {} -#endif // DESTRUCTOR_CLOSES_FILE - using FatFile::clearWriteError; - using FatFile::getWriteError; - using FatFile::read; - using FatFile::write; - /** \return number of bytes available from the current position to EOF - * or INT_MAX if more than INT_MAX bytes are available. - */ - int available() { - uint32_t n = FatFile::available(); - return n > INT_MAX ? INT_MAX : n; - } - /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() { - FatFile::sync(); - } - /** Return the next available byte without consuming it. - * - * \return The byte if no error and not at eof else -1; - */ - int peek() { - return FatFile::peek(); - } - /** Read the next byte from a file. - * - * \return For success return the next byte in the file as an int. - * If an error occurs or end of file is reached return -1. - */ -// int read() { -// return FatFile::read(); -// } - /** Write a byte to a file. Required by the Arduino Print class. - * \param[in] b the byte to be written. - * Use getWriteError to check for errors. - * \return 1 for success and 0 for failure. - */ - size_t write(uint8_t b) { - return FatFile::write(b); - } - /** Write data to an open file. Form required by Print. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] size Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an - * I/O error. - */ - size_t write(const uint8_t *buf, size_t size) { - return FatFile::write(buf, size); - } -}; -//============================================================================== -/** - * \class File - * \brief Arduino SD.h style File API - */ -class File : public FatFile, public Stream { - public: - File() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - File(const char* path, oflag_t oflag) { - open(path, oflag); - } - using FatFile::clearWriteError; - using FatFile::getWriteError; - using FatFile::read; - using FatFile::write; - /** The parenthesis operator. - * - * \return true if a file is open. - */ - operator bool() { - return isOpen(); - } - /** \return number of bytes available from the current position to EOF - * or INT_MAX if more than INT_MAX bytes are available. - */ - int available() { - uint32_t n = FatFile::available(); - return n > INT_MAX ? INT_MAX : n; - } - /** Ensure that any bytes written to the file are saved to the SD card. */ - void flush() { - FatFile::sync(); - } - /** This function reports if the current file is a directory or not. - * \return true if the file is a directory. - */ - bool isDirectory() { - return isDir(); - } - /** No longer implemented due to Long File Names. - * - * Use getName(char* name, size_t size). - * \return a pointer to replacement suggestion. - */ - const char* name() const { - return "use getName()"; - } - /** Return the next available byte without consuming it. - * - * \return The byte if no error and not at eof else -1; - */ - int peek() { - return FatFile::peek(); - } - /** \return the current file position. */ - uint32_t position() { - return curPosition(); - } - /** Opens the next file or folder in a directory. - * - * \param[in] oflag open oflag flags. - * \return a File object. - */ - File openNextFile(oflag_t oflag = O_RDONLY) { - File tmpFile; - tmpFile.openNext(this, oflag); - return tmpFile; - } - /** Read the next byte from a file. - * - * \return For success return the next byte in the file as an int. - * If an error occurs or end of file is reached return -1. - */ - int read() { - return FatFile::read(); - } - /** Rewind a file if it is a directory */ - void rewindDirectory() { - if (isDir()) { - rewind(); - } - } - /** - * Seek to a new position in the file, which must be between - * 0 and the size of the file (inclusive). - * - * \param[in] pos the new file position. - * \return true for success else false. - */ - bool seek(uint32_t pos) { - return seekSet(pos); - } - /** \return the file's size. */ - uint32_t size() { - return fileSize(); - } - /** Write a byte to a file. Required by the Arduino Print class. - * \param[in] b the byte to be written. - * Use getWriteError to check for errors. - * \return 1 for success and 0 for failure. - */ - size_t write(uint8_t b) { - return FatFile::write(b); - } - /** Write data to an open file. Form required by Print. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] size Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an - * I/O error. - */ - size_t write(const uint8_t *buf, size_t size) { - return FatFile::write(buf, size); - } -}; -#endif // ENABLE_ARDUINO_FEATURES -#endif // ArduinoFiles_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ArduinoStream.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ArduinoStream.h deleted file mode 100644 index e08d1f30..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ArduinoStream.h +++ /dev/null @@ -1,153 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef ArduinoStream_h -#define ArduinoStream_h -/** - * \file - * \brief ArduinoInStream and ArduinoOutStream classes - */ -#include "FatLibConfig.h" -#if ENABLE_ARDUINO_FEATURES -#include "bufstream.h" -//============================================================================== -/** - * \class ArduinoInStream - * \brief Input stream for Arduino Stream objects - */ -class ArduinoInStream : public ibufstream { - public: - /** - * Constructor - * \param[in] hws hardware stream - * \param[in] buf buffer for input line - * \param[in] size size of input buffer - */ - ArduinoInStream(Stream &hws, char* buf, size_t size) { - m_hw = &hws; - m_line = buf; - m_size = size; - } - /** read a line. */ - void readline() { - size_t i = 0; - uint32_t t; - m_line[0] = '\0'; - while (!m_hw->available()) { - yield(); - } - - while (1) { - t = millis(); - while (!m_hw->available()) { - if ((millis() - t) > 10) { - goto done; - } - } - if (i >= (m_size - 1)) { - setstate(failbit); - return; - } - m_line[i++] = m_hw->read(); - m_line[i] = '\0'; - } -done: - init(m_line); - } - - protected: - /** Internal - do not use. - * \param[in] off - * \param[in] way - * \return true/false. - */ - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - /** Internal - do not use. - * \param[in] pos - * \return true/false. - */ - bool seekpos(pos_type pos) { - (void)pos; - return false; - } - - private: - char *m_line; - size_t m_size; - Stream* m_hw; -}; -//============================================================================== -/** - * \class ArduinoOutStream - * \brief Output stream for Arduino Print objects - */ -class ArduinoOutStream : public ostream { - public: - /** constructor - * - * \param[in] pr Print object for this ArduinoOutStream. - */ - explicit ArduinoOutStream(Print& pr) : m_pr(&pr) {} - - protected: - /// @cond SHOW_PROTECTED - /** - * Internal do not use - * \param[in] c - */ - void putch(char c) { - if (c == '\n') { - m_pr->write('\r'); - } - m_pr->write(c); - } - void putstr(const char* str) { - m_pr->write(str); - } - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - bool seekpos(pos_type pos) { - (void)pos; - return false; - } - bool sync() { - return true; - } - pos_type tellpos() { - return 0; - } - /// @endcond - private: - ArduinoOutStream() {} - Print* m_pr; -}; -#endif // ENABLE_ARDUINO_FEATURES -#endif // ArduinoStream_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/BaseBlockDriver.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/BaseBlockDriver.h deleted file mode 100644 index bb4c8208..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/BaseBlockDriver.h +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef BaseBlockDriver_h -#define BaseBlockDriver_h -#include "FatLibConfig.h" -/** - * \class BaseBlockDriver - * \brief Base block driver. - */ -class BaseBlockDriver { - public: - /** - * Read a 512 byte block from an SD card. - * - * \param[in] block Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool readBlock(uint32_t block, uint8_t* dst) = 0; - /** End multi-block transfer and go to idle state. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool syncBlocks() = 0; - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool writeBlock(uint32_t block, const uint8_t* src) = 0; -#if USE_MULTI_BLOCK_IO - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] block Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool readBlocks(uint32_t block, uint8_t* dst, size_t nb) = 0; - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - virtual bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb) = 0; -#endif // USE_MULTI_BLOCK_IO -}; -#endif // BaseBlockDriver_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatApiConstants.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatApiConstants.h deleted file mode 100644 index ce0d414d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatApiConstants.h +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatApiConstants_h -#define FatApiConstants_h -#include "SdFatConfig.h" - -#if USE_FCNTL_H -#include -/* values for GNU Arm Embedded Toolchain. - * O_RDONLY: 0x0 - * O_WRONLY: 0x1 - * O_RDWR: 0x2 - * O_ACCMODE: 0x3 - * O_APPEND: 0x8 - * O_CREAT: 0x200 - * O_TRUNC: 0x400 - * O_EXCL: 0x800 - * O_SYNC: 0x2000 - * O_NONBLOCK: 0x4000 - */ -/** Use O_NONBLOCK for open at EOF */ -#define O_AT_END O_NONBLOCK ///< Open at EOF. -typedef int oflag_t; -#else // USE_FCNTL_H -#define O_RDONLY 0X00 ///< Open for reading only. -#define O_WRONLY 0X01 ///< Open for writing only. -#define O_RDWR 0X02 ///< Open for reading and writing. -#define O_AT_END 0X04 ///< Open at EOF. -#define O_APPEND 0X08 ///< Set append mode. -#define O_CREAT 0x10 ///< Create file if it does not exist. -#define O_TRUNC 0x20 ///< Truncate file to zero length. -#define O_EXCL 0x40 ///< Fail if the file exists. -#define O_SYNC 0x80 ///< Synchronized write I/O operations. - -#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) ///< Mask for access mode. -typedef uint8_t oflag_t; -#endif // USE_FCNTL_H - -#define O_READ O_RDONLY -#define O_WRITE O_WRONLY - -inline bool isWriteMode(oflag_t oflag) { - oflag &= O_ACCMODE; - return oflag == O_WRONLY || oflag == O_RDWR; -} - -// FatFile class static and const definitions -// flags for ls() -/** ls() flag for list all files including hidden. */ -#define LS_A 1 -/** ls() flag to print modify. date */ -#define LS_DATE 2 -/** ls() flag to print file size. */ -#define LS_SIZE 4 -/** ls() flag for recursive list of subdirectories */ -#define LS_R 8 - -// flags for timestamp -/** set the file's last access date */ -#define T_ACCESS 1 -/** set the file's creation date and time */ -#define T_CREATE 2 -/** Set the file's write date and time */ -#define T_WRITE 4 -#endif // FatApiConstants_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFile.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFile.cpp deleted file mode 100644 index c02c0855..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFile.cpp +++ /dev/null @@ -1,1530 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FatFile.h" -#include "FatFileSystem.h" -//------------------------------------------------------------------------------ -// Pointer to cwd directory. -FatFile* FatFile::m_cwd = 0; -// Callback function for date/time. -void (*FatFile::m_dateTime)(uint16_t* date, uint16_t* time) = 0; -//------------------------------------------------------------------------------ -// Add a cluster to a file. -bool FatFile::addCluster() { - m_flags |= F_FILE_DIR_DIRTY; - return m_vol->allocateCluster(m_curCluster, &m_curCluster); -} -//------------------------------------------------------------------------------ -// Add a cluster to a directory file and zero the cluster. -// Return with first block of cluster in the cache. -bool FatFile::addDirCluster() { - uint32_t block; - cache_t* pc; - - if (isRootFixed()) { - DBG_FAIL_MACRO; - goto fail; - } - // max folder size - if (m_curPosition >= 512UL*4095) { - DBG_FAIL_MACRO; - goto fail; - } - if (!addCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - block = m_vol->clusterFirstBlock(m_curCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_RESERVE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - memset(pc, 0, 512); - // zero rest of clusters - for (uint8_t i = 1; i < m_vol->blocksPerCluster(); i++) { - if (!m_vol->writeBlock(block + i, pc->data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Set position to EOF to avoid inconsistent curCluster/curPosition. - m_curPosition += 512UL*m_vol->blocksPerCluster(); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// cache a file's directory entry -// return pointer to cached entry or null for failure -dir_t* FatFile::cacheDirEntry(uint8_t action) { - cache_t* pc; - pc = m_vol->cacheFetchData(m_dirBlock, action); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - return pc->dir + (m_dirIndex & 0XF); - -fail: - return 0; -} -//------------------------------------------------------------------------------ -bool FatFile::close() { - bool rtn = sync(); - m_attr = FILE_ATTR_CLOSED; - return rtn; -} -//------------------------------------------------------------------------------ -bool FatFile::contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock) { - // error if no blocks - if (m_firstCluster == 0) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint32_t c = m_firstCluster; ; c++) { - uint32_t next; - int8_t fg = m_vol->fatGet(c, &next); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - // check for contiguous - if (fg == 0 || next != (c + 1)) { - // error if not end of chain - if (fg) { - DBG_FAIL_MACRO; - goto fail; - } - *bgnBlock = m_vol->clusterFirstBlock(m_firstCluster); - *endBlock = m_vol->clusterFirstBlock(c) - + m_vol->blocksPerCluster() - 1; - return true; - } - } - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::createContiguous(FatFile* dirFile, const char* path, - uint32_t size, uint32_t startCluster) { - uint32_t count; - - // don't allow zero length file - if (size == 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (!open(dirFile, path, O_RDWR | O_CREAT | O_EXCL)) { - DBG_FAIL_MACRO; - goto fail; - } - // calculate number of clusters needed - count = ((size - 1) >> (m_vol->clusterSizeShift() + 9)) + 1; - - // allocate clusters - if (!m_vol->allocContiguous(count, &m_firstCluster, startCluster)) { - remove(); - DBG_FAIL_MACRO; - goto fail; - } - m_fileSize = size; - - // insure sync() will update dir entry - m_flags |= F_FILE_DIR_DIRTY; - return sync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::dirEntry(dir_t* dst) { - dir_t* dir; - // Make sure fields on device are correct. - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - // read entry - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // copy to caller's struct - memcpy(dst, dir, sizeof(dir_t)); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -uint8_t FatFile::dirName(const dir_t* dir, char* name) { - uint8_t j = 0; - uint8_t lcBit = DIR_NT_LC_BASE; - for (uint8_t i = 0; i < 11; i++) { - if (dir->name[i] == ' ') { - continue; - } - if (i == 8) { - // Position bit for extension. - lcBit = DIR_NT_LC_EXT; - name[j++] = '.'; - } - char c = dir->name[i]; - if ('A' <= c && c <= 'Z' && (lcBit & dir->reservedNT)) { - c += 'a' - 'A'; - } - name[j++] = c; - } - name[j] = 0; - return j; -} - -//------------------------------------------------------------------------------ -uint32_t FatFile::dirSize() { - int8_t fg; - if (!isDir()) { - return 0; - } - if (isRootFixed()) { - return 32*m_vol->rootDirEntryCount(); - } - uint16_t n = 0; - uint32_t c = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; - do { - fg = m_vol->fatGet(c, &c); - if (fg < 0 || n > 4095) { - return 0; - } - n += m_vol->blocksPerCluster(); - } while (fg); - return 512UL*n; -} -//------------------------------------------------------------------------------ -int16_t FatFile::fgets(char* str, int16_t num, char* delim) { - char ch; - int16_t n = 0; - int16_t r = -1; - while ((n + 1) < num && (r = read(&ch, 1)) == 1) { - // delete CR - if (ch == '\r') { - continue; - } - str[n++] = ch; - if (!delim) { - if (ch == '\n') { - break; - } - } else { - if (strchr(delim, ch)) { - break; - } - } - } - if (r < 0) { - // read error - return -1; - } - str[n] = '\0'; - return n; -} -//------------------------------------------------------------------------------ -void FatFile::getpos(FatPos_t* pos) { - pos->position = m_curPosition; - pos->cluster = m_curCluster; -} -//------------------------------------------------------------------------------ -bool FatFile::mkdir(FatFile* parent, const char* path, bool pFlag) { - fname_t fname; - FatFile tmpDir; - - if (isOpen() || !parent->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - if (isDirSeparator(*path)) { - while (isDirSeparator(*path)) { - path++; - } - if (!tmpDir.openRoot(parent->m_vol)) { - DBG_FAIL_MACRO; - goto fail; - } - parent = &tmpDir; - } - while (1) { - if (!parsePathName(path, &fname, &path)) { - DBG_FAIL_MACRO; - goto fail; - } - if (!*path) { - break; - } - if (!open(parent, &fname, O_RDONLY)) { - if (!pFlag || !mkdir(parent, &fname)) { - DBG_FAIL_MACRO; - goto fail; - } - } - tmpDir = *this; - parent = &tmpDir; - close(); - } - return mkdir(parent, &fname); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::mkdir(FatFile* parent, fname_t* fname) { - uint32_t block; - dir_t dot; - dir_t* dir; - cache_t* pc; - - if (!parent->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - // create a normal file - if (!open(parent, fname, O_RDWR | O_CREAT | O_EXCL)) { - DBG_FAIL_MACRO; - goto fail; - } - // convert file to directory - m_flags = F_READ; - m_attr = FILE_ATTR_SUBDIR; - - // allocate and zero first cluster - if (!addDirCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - m_firstCluster = m_curCluster; - // Set to start of dir - rewind(); - // force entry to device - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - // cache entry - should already be in cache due to sync() call - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // change directory entry attribute - dir->attributes = DIR_ATT_DIRECTORY; - - // make entry for '.' - memcpy(&dot, dir, sizeof(dot)); - dot.name[0] = '.'; - for (uint8_t i = 1; i < 11; i++) { - dot.name[i] = ' '; - } - - // cache block for '.' and '..' - block = m_vol->clusterFirstBlock(m_firstCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - // copy '.' to block - memcpy(&pc->dir[0], &dot, sizeof(dot)); - // make entry for '..' - dot.name[1] = '.'; - dot.firstClusterLow = parent->m_firstCluster & 0XFFFF; - dot.firstClusterHigh = parent->m_firstCluster >> 16; - // copy '..' to block - memcpy(&pc->dir[1], &dot, sizeof(dot)); - // write first block - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFileSystem* fs, const char* path, oflag_t oflag) { - return open(fs->vwd(), path, oflag); -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFile* dirFile, const char* path, oflag_t oflag) { - FatFile tmpDir; - fname_t fname; - - // error if already open - if (isOpen() || !dirFile->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - if (isDirSeparator(*path)) { - while (isDirSeparator(*path)) { - path++; - } - if (*path == 0) { - return openRoot(dirFile->m_vol); - } - if (!tmpDir.openRoot(dirFile->m_vol)) { - DBG_FAIL_MACRO; - goto fail; - } - dirFile = &tmpDir; - } - while (1) { - if (!parsePathName(path, &fname, &path)) { - DBG_FAIL_MACRO; - goto fail; - } - if (*path == 0) { - break; - } - if (!open(dirFile, &fname, O_RDONLY)) { - DBG_FAIL_MACRO; - goto fail; - } - tmpDir = *this; - dirFile = &tmpDir; - close(); - } - return open(dirFile, &fname, oflag); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFile* dirFile, uint16_t index, oflag_t oflag) { - uint8_t chksum = 0; - uint8_t lfnOrd = 0; - dir_t* dir; - ldir_t*ldir; - - // Error if already open. - if (isOpen() || !dirFile->isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - // Don't open existing file if O_EXCL - user call error. - if (oflag & O_EXCL) { - DBG_FAIL_MACRO; - goto fail; - } - if (index) { - // Check for LFN. - if (!dirFile->seekSet(32UL*(index -1))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile->readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr == DIR_ATT_LONG_NAME) { - if (1 == (ldir->ord & 0X1F)) { - chksum = ldir->chksum; - // Use largest possible number. - lfnOrd = index > 20 ? 20 : index; - } - } - } else { - dirFile->rewind(); - } - // read entry into cache - dir = dirFile->readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // error if empty slot or '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || - dir->name[0] == DIR_NAME_FREE || - dir->name[0] == '.') { - DBG_FAIL_MACRO; - goto fail; - } - if (lfnOrd && chksum != lfnChecksum(dir->name)) { - DBG_FAIL_MACRO; - goto fail; - } - // open cached entry - if (!openCachedEntry(dirFile, index, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// open a cached directory entry. - -bool FatFile::openCachedEntry(FatFile* dirFile, uint16_t dirIndex, - oflag_t oflag, uint8_t lfnOrd) { - uint32_t firstCluster; - memset(this, 0, sizeof(FatFile)); - // location of entry in cache - m_vol = dirFile->m_vol; - m_dirIndex = dirIndex; - m_dirCluster = dirFile->m_firstCluster; - dir_t* dir = &m_vol->cacheAddress()->dir[0XF & dirIndex]; - - // Must be file or subdirectory. - if (!DIR_IS_FILE_OR_SUBDIR(dir)) { - DBG_FAIL_MACRO; - goto fail; - } - m_attr = dir->attributes & FILE_ATTR_COPY; - if (DIR_IS_FILE(dir)) { - m_attr |= FILE_ATTR_FILE; - } - m_lfnOrd = lfnOrd; - - switch (oflag & O_ACCMODE) { - case O_RDONLY: - if (oflag & O_TRUNC) { - DBG_FAIL_MACRO; - goto fail; - } - m_flags = F_READ; - break; - - case O_RDWR: - m_flags = F_READ | F_WRITE; - break; - - case O_WRONLY: - m_flags = F_WRITE; - break; - - default: - DBG_FAIL_MACRO; - goto fail; - } - - if (m_flags & F_WRITE) { - if (isSubDir() || isReadOnly()) { - DBG_FAIL_MACRO; - goto fail; - } - } - - m_flags |= (oflag & O_APPEND ? F_APPEND : 0) | (oflag & O_SYNC ? F_SYNC : 0); - - m_dirBlock = m_vol->cacheBlockNumber(); - - // copy first cluster number for directory fields - firstCluster = ((uint32_t)dir->firstClusterHigh << 16) - | dir->firstClusterLow; - - if (oflag & O_TRUNC) { - if (firstCluster && !m_vol->freeChain(firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // need to update directory entry - m_flags |= F_FILE_DIR_DIRTY; - } else { - m_firstCluster = firstCluster; - m_fileSize = dir->fileSize; - } - if ((oflag & O_AT_END) && !seekSet(m_fileSize)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - -fail: - m_attr = FILE_ATTR_CLOSED; - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::openCwd() { - if (!cwd()) { - DBG_FAIL_MACRO; - return false; - } - *this = *cwd(); - rewind(); - return true; -} -//------------------------------------------------------------------------------ -bool FatFile::openNext(FatFile* dirFile, oflag_t oflag) { - uint8_t chksum = 0; - ldir_t* ldir; - uint8_t lfnOrd = 0; - uint16_t index; - - // Check for not open and valid directory.. - if (isOpen() || !dirFile->isDir() || (dirFile->curPosition() & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - while (1) { - // read entry into cache - index = dirFile->curPosition()/32; - dir_t* dir = dirFile->readDirCache(); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - } - goto fail; - } - // done if last entry - if (dir->name[0] == DIR_NAME_FREE) { - goto fail; - } - // skip empty slot or '.' or '..' - if (dir->name[0] == '.' || dir->name[0] == DIR_NAME_DELETED) { - lfnOrd = 0; - } else if (DIR_IS_FILE_OR_SUBDIR(dir)) { - if (lfnOrd && chksum != lfnChecksum(dir->name)) { - DBG_FAIL_MACRO; - goto fail; - } - if (!openCachedEntry(dirFile, index, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - } else if (DIR_IS_LONG_NAME(dir)) { - ldir = reinterpret_cast(dir); - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - lfnOrd = ldir->ord & 0X1F; - chksum = ldir->chksum; - } - } else { - lfnOrd = 0; - } - } - -fail: - return false; -} -#ifndef DOXYGEN_SHOULD_SKIP_THIS -//------------------------------------------------------------------------------ -/** Open a file's parent directory. - * - * \param[in] file Parent of this directory will be opened. Must not be root. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ -bool FatFile::openParent(FatFile* dirFile) { - FatFile dotdot; - uint32_t lbn; - dir_t* dir; - uint32_t ddc; - cache_t* cb; - - if (isOpen() || !dirFile->isOpen()) { - goto fail; - } - if (dirFile->m_dirCluster == 0) { - return openRoot(dirFile->m_vol); - } - lbn = dirFile->m_vol->clusterFirstBlock(dirFile->m_dirCluster); - cb = dirFile->m_vol->cacheFetchData(lbn, FatCache::CACHE_FOR_READ); - if (!cb) { - DBG_FAIL_MACRO; - goto fail; - } - // Point to dir entery for .. - dir = cb->dir + 1; - ddc = dir->firstClusterLow | ((uint32_t)dir->firstClusterHigh << 16); - if (ddc == 0) { - if (!dotdot.openRoot(dirFile->m_vol)) { - DBG_FAIL_MACRO; - goto fail; - } - } else { - memset(&dotdot, 0, sizeof(FatFile)); - dotdot.m_attr = FILE_ATTR_SUBDIR; - dotdot.m_flags = F_READ; - dotdot.m_vol = dirFile->m_vol; - dotdot.m_firstCluster = ddc; - } - uint32_t di; - do { - di = dotdot.curPosition()/32; - dir = dotdot.readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - ddc = dir->firstClusterLow | ((uint32_t)dir->firstClusterHigh << 16); - } while (ddc != dirFile->m_dirCluster); - return open(&dotdot, di, O_RDONLY); - -fail: - return false; -} -#endif // DOXYGEN_SHOULD_SKIP_THIS -//------------------------------------------------------------------------------ -bool FatFile::openRoot(FatVolume* vol) { - // error if file is already open - if (isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - memset(this, 0, sizeof(FatFile)); - - m_vol = vol; - switch (vol->fatType()) { -#if FAT12_SUPPORT - case 12: -#endif // FAT12_SUPPORT - case 16: - m_attr = FILE_ATTR_ROOT_FIXED; - break; - - case 32: - m_attr = FILE_ATTR_ROOT32; - break; - - default: - DBG_FAIL_MACRO; - goto fail; - } - // read only - m_flags = F_READ; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -int FatFile::peek() { - FatPos_t pos; - getpos(&pos); - int c = read(); - if (c >= 0) { - setpos(&pos); - } - return c; -} -//------------------------------------------------------------------------------ -int FatFile::read(void* buf, size_t nbyte) { - int8_t fg; - uint8_t blockOfCluster = 0; - uint8_t* dst = reinterpret_cast(buf); - uint16_t offset; - size_t toRead; - uint32_t block; // raw device block number - cache_t* pc; - - // error if not open for read - if (!isOpen() || !(m_flags & F_READ)) { - DBG_FAIL_MACRO; - goto fail; - } - - if (isFile()) { - uint32_t tmp32 = m_fileSize - m_curPosition; - if (nbyte >= tmp32) { - nbyte = tmp32; - } - } else if (isRootFixed()) { - uint16_t tmp16 = 32*m_vol->m_rootDirEntryCount - (uint16_t)m_curPosition; - if (nbyte > tmp16) { - nbyte = tmp16; - } - } - toRead = nbyte; - while (toRead) { - size_t n; - offset = m_curPosition & 0X1FF; // offset in block - if (isRootFixed()) { - block = m_vol->rootDirStart() + (m_curPosition >> 9); - } else { - blockOfCluster = m_vol->blockOfCluster(m_curPosition); - if (offset == 0 && blockOfCluster == 0) { - // start of new cluster - if (m_curPosition == 0) { - // use first cluster in file - m_curCluster = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; - } else { - // get next cluster from FAT - fg = m_vol->fatGet(m_curCluster, &m_curCluster); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg == 0) { - if (isDir()) { - break; - } - DBG_FAIL_MACRO; - goto fail; - } - } - } - block = m_vol->clusterFirstBlock(m_curCluster) + blockOfCluster; - } - if (offset != 0 || toRead < 512 || block == m_vol->cacheBlockNumber()) { - // amount to be read from current block - n = 512 - offset; - if (n > toRead) { - n = toRead; - } - // read block to cache and copy data to caller - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - uint8_t* src = pc->data + offset; - memcpy(dst, src, n); -#if USE_MULTI_BLOCK_IO - } else if (toRead >= 1024) { - size_t nb = toRead >> 9; - if (!isRootFixed()) { - uint8_t mb = m_vol->blocksPerCluster() - blockOfCluster; - if (mb < nb) { - nb = mb; - } - } - n = 512*nb; - if (m_vol->cacheBlockNumber() <= block - && block < (m_vol->cacheBlockNumber() + nb)) { - // flush cache if a block is in the cache - if (!m_vol->cacheSyncData()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (!m_vol->readBlocks(block, dst, nb)) { - DBG_FAIL_MACRO; - goto fail; - } -#endif // USE_MULTI_BLOCK_IO - } else { - // read single block - n = 512; - if (!m_vol->readBlock(block, dst)) { - DBG_FAIL_MACRO; - goto fail; - } - } - dst += n; - m_curPosition += n; - toRead -= n; - } - return nbyte - toRead; - -fail: - m_error |= READ_ERROR; - return -1; -} -//------------------------------------------------------------------------------ -int8_t FatFile::readDir(dir_t* dir) { - int16_t n; - // if not a directory file or miss-positioned return an error - if (!isDir() || (0X1F & m_curPosition)) { - return -1; - } - - while (1) { - n = read(dir, sizeof(dir_t)); - if (n != sizeof(dir_t)) { - return n == 0 ? 0 : -1; - } - // last entry if DIR_NAME_FREE - if (dir->name[0] == DIR_NAME_FREE) { - return 0; - } - // skip empty entries and entry for . and .. - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - continue; - } - // return if normal file or subdirectory - if (DIR_IS_FILE_OR_SUBDIR(dir)) { - return n; - } - } -} -//------------------------------------------------------------------------------ -// Read next directory entry into the cache -// Assumes file is correctly positioned -dir_t* FatFile::readDirCache(bool skipReadOk) { -// uint8_t b; - uint8_t i = (m_curPosition >> 5) & 0XF; - - if (i == 0 || !skipReadOk) { - int8_t n = read(&n, 1); - if (n != 1) { - if (n != 0) { - DBG_FAIL_MACRO; - } - goto fail; - } - m_curPosition += 31; - } else { - m_curPosition += 32; - } - // return pointer to entry - return m_vol->cacheAddress()->dir + i; - -fail: - return 0; -} -//------------------------------------------------------------------------------ -bool FatFile::remove(FatFile* dirFile, const char* path) { - FatFile file; - if (!file.open(dirFile, path, O_WRONLY)) { - DBG_FAIL_MACRO; - goto fail; - } - return file.remove(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::rename(FatFile* dirFile, const char* newPath) { - dir_t entry; - uint32_t dirCluster = 0; - FatFile file; - FatFile oldFile; - cache_t* pc; - dir_t* dir; - - // Must be an open file or subdirectory. - if (!(isFile() || isSubDir())) { - DBG_FAIL_MACRO; - goto fail; - } - // Can't rename LFN in 8.3 mode. - if (!USE_LONG_FILE_NAMES && isLFN()) { - DBG_FAIL_MACRO; - goto fail; - } - // Can't move file to new volume. - if (m_vol != dirFile->m_vol) { - DBG_FAIL_MACRO; - goto fail; - } - // sync() and cache directory entry - sync(); - oldFile = *this; - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // save directory entry - memcpy(&entry, dir, sizeof(entry)); - // make directory entry for new path - if (isFile()) { - if (!file.open(dirFile, newPath, O_WRONLY | O_CREAT | O_EXCL)) { - DBG_FAIL_MACRO; - goto fail; - } - } else { - // don't create missing path prefix components - if (!file.mkdir(dirFile, newPath, false)) { - DBG_FAIL_MACRO; - goto fail; - } - // save cluster containing new dot dot - dirCluster = file.m_firstCluster; - } - // change to new directory entry - - m_dirBlock = file.m_dirBlock; - m_dirIndex = file.m_dirIndex; - m_lfnOrd = file.m_lfnOrd; - m_dirCluster = file.m_dirCluster; - // mark closed to avoid possible destructor close call - file.m_attr = FILE_ATTR_CLOSED; - - // cache new directory entry - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // copy all but name and name flags to new directory entry - memcpy(&dir->creationTimeTenths, &entry.creationTimeTenths, - sizeof(entry) - sizeof(dir->name) - 2); - dir->attributes = entry.attributes; - - // update dot dot if directory - if (dirCluster) { - // get new dot dot - uint32_t block = m_vol->clusterFirstBlock(dirCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - memcpy(&entry, &pc->dir[1], sizeof(entry)); - - // free unused cluster - if (!m_vol->freeChain(dirCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // store new dot dot - block = m_vol->clusterFirstBlock(m_firstCluster); - pc = m_vol->cacheFetchData(block, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - memcpy(&pc->dir[1], &entry, sizeof(entry)); - } - // Remove old directory entry; - oldFile.m_firstCluster = 0; - oldFile.m_flags = F_WRITE; - oldFile.m_attr = FILE_ATTR_FILE; - if (!oldFile.remove()) { - DBG_FAIL_MACRO; - goto fail; - } - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::rmdir() { - // must be open subdirectory - if (!isSubDir() || (!USE_LONG_FILE_NAMES && isLFN())) { - DBG_FAIL_MACRO; - goto fail; - } - rewind(); - - // make sure directory is empty - while (1) { - dir_t* dir = readDirCache(true); - if (!dir) { - // EOF if no error. - if (!getError()) { - break; - } - DBG_FAIL_MACRO; - goto fail; - } - // done if past last used entry - if (dir->name[0] == DIR_NAME_FREE) { - break; - } - // skip empty slot, '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - continue; - } - // error not empty - if (DIR_IS_FILE_OR_SUBDIR(dir)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // convert empty directory to normal file for remove - m_attr = FILE_ATTR_FILE; - m_flags |= F_WRITE; - return remove(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::rmRfStar() { - uint16_t index; - FatFile f; - if (!isDir()) { - DBG_FAIL_MACRO; - goto fail; - } - rewind(); - while (1) { - // remember position - index = m_curPosition/32; - - dir_t* dir = readDirCache(); - if (!dir) { - // At EOF if no error. - if (!getError()) { - break; - } - DBG_FAIL_MACRO; - goto fail; - } - // done if past last entry - if (dir->name[0] == DIR_NAME_FREE) { - break; - } - - // skip empty slot or '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - continue; - } - - // skip if part of long file name or volume label in root - if (!DIR_IS_FILE_OR_SUBDIR(dir)) { - continue; - } - - if (!f.open(this, index, O_RDONLY)) { - DBG_FAIL_MACRO; - goto fail; - } - if (f.isSubDir()) { - // recursively delete - if (!f.rmRfStar()) { - DBG_FAIL_MACRO; - goto fail; - } - } else { - // ignore read-only - f.m_flags |= F_WRITE; - if (!f.remove()) { - DBG_FAIL_MACRO; - goto fail; - } - } - // position to next entry if required - if (m_curPosition != (32UL*(index + 1))) { - if (!seekSet(32UL*(index + 1))) { - DBG_FAIL_MACRO; - goto fail; - } - } - } - // don't try to delete root - if (!isRoot()) { - if (!rmdir()) { - DBG_FAIL_MACRO; - goto fail; - } - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::seekSet(uint32_t pos) { - uint32_t nCur; - uint32_t nNew; - uint32_t tmp = m_curCluster; - // error if file not open - if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - // Optimize O_APPEND writes. - if (pos == m_curPosition) { - return true; - } - if (pos == 0) { - // set position to start of file - m_curCluster = 0; - goto done; - } - if (isFile()) { - if (pos > m_fileSize) { - DBG_FAIL_MACRO; - goto fail; - } - } else if (isRootFixed()) { - if (pos <= 32*m_vol->rootDirEntryCount()) { - goto done; - } - DBG_FAIL_MACRO; - goto fail; - } - // calculate cluster index for cur and new position - nCur = (m_curPosition - 1) >> (m_vol->clusterSizeShift() + 9); - nNew = (pos - 1) >> (m_vol->clusterSizeShift() + 9); - - if (nNew < nCur || m_curPosition == 0) { - // must follow chain from first cluster - m_curCluster = isRoot32() ? m_vol->rootDirStart() : m_firstCluster; - } else { - // advance from curPosition - nNew -= nCur; - } - while (nNew--) { - if (m_vol->fatGet(m_curCluster, &m_curCluster) <= 0) { - DBG_FAIL_MACRO; - goto fail; - } - } - -done: - m_curPosition = pos; - return true; - -fail: - m_curCluster = tmp; - return false; -} -//------------------------------------------------------------------------------ -void FatFile::setpos(FatPos_t* pos) { - m_curPosition = pos->position; - m_curCluster = pos->cluster; -} -//------------------------------------------------------------------------------ -bool FatFile::sync() { - if (!isOpen()) { - return true; - } - if (m_flags & F_FILE_DIR_DIRTY) { - dir_t* dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - // check for deleted by another open file object - if (!dir || dir->name[0] == DIR_NAME_DELETED) { - DBG_FAIL_MACRO; - goto fail; - } - // do not set filesize for dir files - if (isFile()) { - dir->fileSize = m_fileSize; - } - - // update first cluster fields - dir->firstClusterLow = m_firstCluster & 0XFFFF; - dir->firstClusterHigh = m_firstCluster >> 16; - - // set modify time if user supplied a callback date/time function - if (m_dateTime) { - m_dateTime(&dir->lastWriteDate, &dir->lastWriteTime); - dir->lastAccessDate = dir->lastWriteDate; - } - // clear directory dirty - m_flags &= ~F_FILE_DIR_DIRTY; - } - if (m_vol->cacheSync()) { - return true; - } - DBG_FAIL_MACRO; - -fail: - m_error |= WRITE_ERROR; - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::timestamp(FatFile* file) { - dir_t* dir; - dir_t srcDir; - - // most be files get timestamps - if (!isFile() || !file->isFile() || !file->dirEntry(&srcDir)) { - DBG_FAIL_MACRO; - goto fail; - } - // update directory fields - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // copy timestamps - dir->lastAccessDate = srcDir.lastAccessDate; - dir->creationDate = srcDir.creationDate; - dir->creationTime = srcDir.creationTime; - dir->creationTimeTenths = srcDir.creationTimeTenths; - dir->lastWriteDate = srcDir.lastWriteDate; - dir->lastWriteTime = srcDir.lastWriteTime; - - // write back entry - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { - uint16_t dirDate; - uint16_t dirTime; - dir_t* dir; - - if (!isFile() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { - DBG_FAIL_MACRO; - goto fail; - } - // update directory entry - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - dirDate = FAT_DATE(year, month, day); - dirTime = FAT_TIME(hour, minute, second); - if (flags & T_ACCESS) { - dir->lastAccessDate = dirDate; - } - if (flags & T_CREATE) { - dir->creationDate = dirDate; - dir->creationTime = dirTime; - // seems to be units of 1/100 second not 1/10 as Microsoft states - dir->creationTimeTenths = second & 1 ? 100 : 0; - } - if (flags & T_WRITE) { - dir->lastWriteDate = dirDate; - dir->lastWriteTime = dirTime; - } - return m_vol->cacheSync(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::truncate(uint32_t length) { - uint32_t newPos; - // error if not a normal file or read-only - if (!isFile() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // error if length is greater than current size - if (length > m_fileSize) { - DBG_FAIL_MACRO; - goto fail; - } - // fileSize and length are zero - nothing to do - if (m_fileSize == 0) { - return true; - } - - // remember position for seek after truncation - newPos = m_curPosition > length ? length : m_curPosition; - - // position to last cluster in truncated file - if (!seekSet(length)) { - DBG_FAIL_MACRO; - goto fail; - } - if (length == 0) { - // free all clusters - if (!m_vol->freeChain(m_firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - m_firstCluster = 0; - } else { - uint32_t toFree; - int8_t fg = m_vol->fatGet(m_curCluster, &toFree); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg) { - // free extra clusters - if (!m_vol->freeChain(toFree)) { - DBG_FAIL_MACRO; - goto fail; - } - // current cluster is end of chain - if (!m_vol->fatPutEOC(m_curCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - } - } - m_fileSize = length; - - // need to update directory entry - m_flags |= F_FILE_DIR_DIRTY; - - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - // set file to correct position - return seekSet(newPos); - -fail: - return false; -} -//------------------------------------------------------------------------------ -int FatFile::write(const void* buf, size_t nbyte) { - // convert void* to uint8_t* - must be before goto statements - const uint8_t* src = reinterpret_cast(buf); - cache_t* pc; - uint8_t cacheOption; - // number of bytes left to write - must be before goto statements - size_t nToWrite = nbyte; - size_t n; - // error if not a normal file or is read-only - if (!isFile() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // seek to end of file if append flag - if ((m_flags & F_APPEND)) { - if (!seekSet(m_fileSize)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Don't exceed max fileSize. - if (nbyte > (0XFFFFFFFF - m_curPosition)) { - DBG_FAIL_MACRO; - goto fail; - } - while (nToWrite) { - uint8_t blockOfCluster = m_vol->blockOfCluster(m_curPosition); - uint16_t blockOffset = m_curPosition & 0X1FF; - if (blockOfCluster == 0 && blockOffset == 0) { - // start of new cluster - if (m_curCluster != 0) { - int8_t fg = m_vol->fatGet(m_curCluster, &m_curCluster); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg == 0) { - // add cluster if at end of chain - if (!addCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - } - } else { - if (m_firstCluster == 0) { - // allocate first cluster of file - if (!addCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - m_firstCluster = m_curCluster; - } else { - m_curCluster = m_firstCluster; - } - } - } - // block for data write - uint32_t block = m_vol->clusterFirstBlock(m_curCluster) + blockOfCluster; - - if (blockOffset != 0 || nToWrite < 512) { - // partial block - must use cache - // max space in block - n = 512 - blockOffset; - // lesser of space and amount to write - if (n > nToWrite) { - n = nToWrite; - } - - if (blockOffset == 0 && m_curPosition >= m_fileSize) { - // start of new block don't need to read into cache - cacheOption = FatCache::CACHE_RESERVE_FOR_WRITE; - } else { - // rewrite part of block - cacheOption = FatCache::CACHE_FOR_WRITE; - } - pc = m_vol->cacheFetchData(block, cacheOption); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - uint8_t* dst = pc->data + blockOffset; - memcpy(dst, src, n); - if (512 == (n + blockOffset)) { - // Force write if block is full - improves large writes. - if (!m_vol->cacheSyncData()) { - DBG_FAIL_MACRO; - goto fail; - } - } -#if USE_MULTI_BLOCK_IO - } else if (nToWrite >= 1024) { - // use multiple block write command - uint8_t maxBlocks = m_vol->blocksPerCluster() - blockOfCluster; - size_t nb = nToWrite >> 9; - if (nb > maxBlocks) { - nb = maxBlocks; - } - n = 512*nb; - if (m_vol->cacheBlockNumber() <= block - && block < (m_vol->cacheBlockNumber() + nb)) { - // invalidate cache if block is in cache - m_vol->cacheInvalidate(); - } - if (!m_vol->writeBlocks(block, src, nb)) { - DBG_FAIL_MACRO; - goto fail; - } -#endif // USE_MULTI_BLOCK_IO - } else { - // use single block write command - n = 512; - if (m_vol->cacheBlockNumber() == block) { - m_vol->cacheInvalidate(); - } - if (!m_vol->writeBlock(block, src)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_curPosition += n; - src += n; - nToWrite -= n; - } - if (m_curPosition > m_fileSize) { - // update fileSize and insure sync will update dir entry - m_fileSize = m_curPosition; - m_flags |= F_FILE_DIR_DIRTY; - } else if (m_dateTime) { - // insure sync will update modified date and time - m_flags |= F_FILE_DIR_DIRTY; - } - - if (m_flags & F_SYNC) { - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - } - return nbyte; - -fail: - // return for write error - m_error |= WRITE_ERROR; - return -1; -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFile.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFile.h deleted file mode 100644 index 00654277..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFile.h +++ /dev/null @@ -1,1032 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatFile_h -#define FatFile_h -/** - * \file - * \brief FatFile class - */ -// #include -#include -#include -#include -#include "FatLibConfig.h" -#include "FatApiConstants.h" -#include "FatStructs.h" -#include "FatVolume.h" -class FatFileSystem; -//------------------------------------------------------------------------------ -// Stuff to store strings in AVR flash. -#ifdef __AVR__ -#include -#else // __AVR__ -#ifndef PSTR -/** store literal string in flash for ARM */ -#define PSTR(x) (x) -#endif // PSTR -#ifndef pgm_read_byte -/** read 8-bits from flash for ARM */ -#define pgm_read_byte(addr) (*(const unsigned char*)(addr)) -#endif // pgm_read_byte -#ifndef pgm_read_word -/** read 16-bits from flash for ARM */ -#define pgm_read_word(addr) (*(const uint16_t*)(addr)) -#endif // pgm_read_word -#ifndef PROGMEM -/** store in flash for ARM */ -#define PROGMEM -#endif // PROGMEM -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** - * \struct FatPos_t - * \brief Internal type for file position - do not use in user apps. - */ -struct FatPos_t { - /** stream position */ - uint32_t position; - /** cluster for position */ - uint32_t cluster; - FatPos_t() : position(0), cluster(0) {} -}; -//------------------------------------------------------------------------------ -/** Expression for path name separator. */ -#define isDirSeparator(c) ((c) == '/') -//------------------------------------------------------------------------------ -/** - * \struct fname_t - * \brief Internal type for Short File Name - do not use in user apps. - */ -struct fname_t { - /** Flags for base and extension character case and LFN. */ - uint8_t flags; - /** length of Long File Name */ - size_t len; - /** Long File Name start. */ - const char* lfn; - /** position for sequence number */ - uint8_t seqPos; - /** Short File Name */ - uint8_t sfn[11]; -}; -/** Derived from a LFN with loss or conversion of characters. */ -const uint8_t FNAME_FLAG_LOST_CHARS = 0X01; -/** Base-name or extension has mixed case. */ -const uint8_t FNAME_FLAG_MIXED_CASE = 0X02; -/** LFN entries are required for file name. */ -const uint8_t FNAME_FLAG_NEED_LFN = - FNAME_FLAG_LOST_CHARS | FNAME_FLAG_MIXED_CASE; -/** Filename base-name is all lower case */ -const uint8_t FNAME_FLAG_LC_BASE = DIR_NT_LC_BASE; -/** Filename extension is all lower case. */ -const uint8_t FNAME_FLAG_LC_EXT = DIR_NT_LC_EXT; -//============================================================================== -/** - * \class FatFile - * \brief Basic file class. - */ -class FatFile { - public: - /** Create an instance. */ - FatFile() : m_attr(FILE_ATTR_CLOSED), m_error(0) {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of open flags. see FatFile::open(FatFile*, const char*, oflag_t). - */ - FatFile(const char* path, oflag_t oflag) { - m_attr = FILE_ATTR_CLOSED; - m_error = 0; - open(path, oflag); - } -#if DESTRUCTOR_CLOSES_FILE - ~FatFile() { - if (isOpen()) { - close(); - } - } -#endif // DESTRUCTOR_CLOSES_FILE - -#if ENABLE_ARDUINO_FEATURES - /** List directory contents. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } - /** %Print a directory date field. - * - * Format is yyyy-mm-dd. - * - * \param[in] fatDate The date field from a directory entry. - */ - static void printFatDate(uint16_t fatDate) { - printFatDate(&Serial, fatDate); - } - /** %Print a directory time field. - * - * Format is hh:mm:ss. - * - * \param[in] fatTime The time field from a directory entry. - */ - static void printFatTime(uint16_t fatTime) { - printFatTime(&Serial, fatTime); - } - /** Print a file's name. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - size_t printName() { - return FatFile::printName(&Serial); - } -#endif // ENABLE_ARDUINO_FEATURES - - /** \return value of writeError */ - bool getWriteError() { - return m_error & WRITE_ERROR; - } - /** Set writeError to zero */ - void clearWriteError() { - m_error &= ~WRITE_ERROR; - } - /** Clear all error bits. */ - void clearError() { - m_error = 0; - } - /** \return All error bits. */ - uint8_t getError() { - return m_error; - } - /** get position for streams - * \param[out] pos struct to receive position - */ - void getpos(FatPos_t* pos); - /** set position for streams - * \param[out] pos struct with value for new position - */ - void setpos(FatPos_t* pos); - /** \return The number of bytes available from the current position - * to EOF for normal files. Zero is returned for directory files. - */ - uint32_t available() { - return isFile() ? fileSize() - curPosition() : 0; - } - /** Close a file and force cached data and directory information - * to be written to the storage device. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool close(); - /** Check for contiguous file and return its raw block range. - * - * \param[out] bgnBlock the first block address for the file. - * \param[out] endBlock the last block address for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); - /** Create and open a new contiguous file of a specified size. - * - * \param[in] dirFile The directory where the file will be created. - * \param[in] path A path with a valid file name. - * \param[in] size The desired file size. - * \param[in] startCluster The desired startCluster. - * - * \return The value true is returned for success and - * the value false, is returned for failure. - */ - bool createContiguous(FatFile* dirFile, const char* path, - uint32_t size, uint32_t startCluster = 0); - /** Create and open a new contiguous file of a specified size. - * - * \param[in] path A path with a valid file name. - * \param[in] size The desired file size. - * \param[in] startCluster The desired startCluster. - * - * \return The value true is returned for success and - * the value false, is returned for failure. - */ - bool createContiguous(const char* path, - uint32_t size, uint32_t startCluster = 0) { - return createContiguous(m_cwd, path, size, startCluster); - } - /** \return The current cluster number for a file or directory. */ - uint32_t curCluster() const { - return m_curCluster; - } - /** \return The current position for a file or directory. */ - uint32_t curPosition() const { - return m_curPosition; - } - /** \return Current working directory */ - static FatFile* cwd() { - return m_cwd; - } - /** Set the date/time callback function - * - * \param[in] dateTime The user's call back function. The callback - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here - * - * // return date using FAT_DATE macro to format fields - * *date = FAT_DATE(year, month, day); - * - * // return time using FAT_TIME macro to format fields - * *time = FAT_TIME(hour, minute, second); - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - * See the timestamp() function. - */ - static void dateTimeCallback( - void (*dateTime)(uint16_t* date, uint16_t* time)) { - m_dateTime = dateTime; - } - /** Cancel the date/time callback function. */ - static void dateTimeCallbackCancel() { - m_dateTime = 0; - } - /** Return a file's directory entry. - * - * \param[out] dir Location for return of the file's directory entry. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool dirEntry(dir_t* dir); - /** - * \return The index of this file in it's directory. - */ - uint16_t dirIndex() { - return m_dirIndex; - } - /** Format the name field of \a dir into the 13 byte array - * \a name in standard 8.3 short name format. - * - * \param[in] dir The directory structure containing the name. - * \param[out] name A 13 byte char array for the formatted name. - * \return length of the name. - */ - static uint8_t dirName(const dir_t* dir, char* name); - /** \return The number of bytes allocated to a directory or zero - * if an error occurs. - */ - uint32_t dirSize(); - /** Dump file in Hex - * \param[in] pr Print stream for list. - * \param[in] pos Start position in file. - * \param[in] n number of locations to dump. - */ - void dmpFile(print_t* pr, uint32_t pos, size_t n); - /** Test for the existence of a file in a directory - * - * \param[in] path Path of the file to be tested for. - * - * The calling instance must be an open directory file. - * - * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory - * dirFile. - * - * \return true if the file exists else false. - */ - bool exists(const char* path) { - FatFile file; - return file.open(this, path, O_RDONLY); - } - /** - * Get a string from a file. - * - * fgets() reads bytes from a file into the array pointed to by \a str, until - * \a num - 1 bytes are read, or a delimiter is read and transferred to \a str, - * or end-of-file is encountered. The string is then terminated - * with a null byte. - * - * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' - * terminates the string for Windows text files which use CRLF for newline. - * - * \param[out] str Pointer to the array where the string is stored. - * \param[in] num Maximum number of characters to be read - * (including the final null byte). Usually the length - * of the array \a str is used. - * \param[in] delim Optional set of delimiters. The default is "\n". - * - * \return For success fgets() returns the length of the string in \a str. - * If no data is read, fgets() returns zero for EOF or -1 if an error occurred. - */ - int16_t fgets(char* str, int16_t num, char* delim = 0); - /** \return The total number of bytes in a file. */ - uint32_t fileSize() const { - return m_fileSize; - } - /** \return The first cluster number for a file or directory. */ - uint32_t firstCluster() const { - return m_firstCluster; - } - /** - * Get a file's name followed by a zero byte. - * - * \param[out] name An array of characters for the file's name. - * \param[in] size The size of the array in bytes. The array - * must be at least 13 bytes long. The file's name will be - * truncated if the file's name is too long. - * \return The value true, is returned for success and - * the value false, is returned for failure. - */ - bool getName(char* name, size_t size); - /** - * Get a file's Short File Name followed by a zero byte. - * - * \param[out] name An array of characters for the file's name. - * The array must be at least 13 bytes long. - * \return The value true, is returned for success and - * the value false, is returned for failure. - */ - bool getSFN(char* name); - /** \return True if this is a directory else false. */ - bool isDir() const { - return m_attr & FILE_ATTR_DIR; - } - /** \return True if this is a normal file else false. */ - bool isFile() const { - return m_attr & FILE_ATTR_FILE; - } - /** \return True if this is a hidden file else false. */ - bool isHidden() const { - return m_attr & FILE_ATTR_HIDDEN; - } - /** \return true if this file has a Long File Name. */ - bool isLFN() const { - return m_lfnOrd; - } - /** \return True if this is an open file/directory else false. */ - bool isOpen() const { - return m_attr; - } - /** \return True if this is the root directory. */ - bool isRoot() const { - return m_attr & FILE_ATTR_ROOT; - } - /** \return True if this is the FAT32 root directory. */ - bool isRoot32() const { - return m_attr & FILE_ATTR_ROOT32; - } - /** \return True if this is the FAT12 of FAT16 root directory. */ - bool isRootFixed() const { - return m_attr & FILE_ATTR_ROOT_FIXED; - } - /** \return True if file is read-only */ - bool isReadOnly() const { - return m_attr & FILE_ATTR_READ_ONLY; - } - /** \return True if this is a subdirectory else false. */ - bool isSubDir() const { - return m_attr & FILE_ATTR_SUBDIR; - } - /** \return True if this is a system file else false. */ - bool isSystem() const { - return m_attr & FILE_ATTR_SYSTEM; - } - /** Check for a legal 8.3 character. - * \param[in] c Character to be checked. - * \return true for a legal 8.3 character else false. - */ - static bool legal83Char(uint8_t c) { - if (c == '"' || c == '|') { - return false; - } - // *+,./ - if (0X2A <= c && c <= 0X2F && c != 0X2D) { - return false; - } - // :;<=>? - if (0X3A <= c && c <= 0X3F) { - return false; - } - // [\] - if (0X5B <= c && c <= 0X5D) { - return false; - } - return 0X20 < c && c < 0X7F; - } - /** List directory contents. - * - * \param[in] pr Print stream for list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \param[in] indent Amount of space before file name. Used for recursive - * list to indicate subdirectory level. - * - * \return true for success or false if an error occurred. - */ - bool ls(print_t* pr, uint8_t flags = 0, uint8_t indent = 0); - /** Make a new directory. - * - * \param[in] dir An open FatFile instance for the directory that will - * contain the new directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the new directory. - * - * \param[in] pFlag Create missing parent directories if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool mkdir(FatFile* dir, const char* path, bool pFlag = true); - /** Open a file in the volume working directory of a FatFileSystem. - * - * \param[in] fs File System where the file is located. - * - * \param[in] path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool open(FatFileSystem* fs, const char* path, oflag_t oflag); - /** Open a file by index. - * - * \param[in] dirFile An open FatFile instance for the directory. - * - * \param[in] index The \a index of the directory entry for the file to be - * opened. The value for \a index is (directory file position)/32. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * See open() by path for definition of flags. - * \return true for success or false for failure. - */ - bool open(FatFile* dirFile, uint16_t index, oflag_t oflag); - /** Open a file or directory by name. - * - * \param[in] dirFile An open FatFile instance for the directory containing - * the file to be opened. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of flags from the following list - * - * O_RDONLY - Open for reading. - * - * O_READ - Same as O_RDONLY (GNU). - * - * O_WRONLY - Open for writing. - * - * O_WRITE - Same as O_WRONLY (GNU). - * - * O_RDWR - Open for reading and writing. - * - * O_APPEND - If set, the file offset shall be set to the end of the - * file prior to each write. - * - * O_AT_END - Set the initial position at the end of the file. - * - * O_CREAT - If the file exists, this flag has no effect except as noted - * under O_EXCL below. Otherwise, the file shall be created - * - * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists. - * - * O_SYNC - Call sync() after each write. This flag should not be used with - * write(uint8_t) or any functions do character at a time writes since sync() - * will be called after each byte. - * - * O_TRUNC - If the file exists and is a regular file, and the file is - * successfully opened and is not read only, its length shall be truncated to 0. - * - * WARNING: A given file must not be opened by more than one FatFile object - * or file corruption may occur. - * - * \note Directory files must be opened read only. Write and truncation is - * not allowed for directory files. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool open(FatFile* dirFile, const char* path, oflag_t oflag); - /** Open a file in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool open(const char* path, oflag_t oflag = O_RDONLY) { - return open(m_cwd, path, oflag); - } - /** Open current working directory. - * - * \return true for success or false for failure. - */ - bool openCwd(); - /** Open the next file or subdirectory in a directory. - * - * \param[in] dirFile An open FatFile instance for the directory - * containing the file to be opened. - * - * \param[in] oflag bitwise-inclusive OR of open mode flags. - * See see FatFile::open(FatFile*, const char*, oflag_t). - * - * \return true for success or false for failure. - */ - bool openNext(FatFile* dirFile, oflag_t oflag = O_RDONLY); - /** Open a volume's root directory. - * - * \param[in] vol The FAT volume containing the root directory to be opened. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool openRoot(FatVolume* vol); - /** Return the next available byte without consuming it. - * - * \return The byte if no error and not at eof else -1; - */ - int peek(); - /** Print a file's creation date and time - * - * \param[in] pr Print stream for output. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool printCreateDateTime(print_t* pr); - /** %Print a directory date field. - * - * Format is yyyy-mm-dd. - * - * \param[in] pr Print stream for output. - * \param[in] fatDate The date field from a directory entry. - */ - static void printFatDate(print_t* pr, uint16_t fatDate); - /** %Print a directory time field. - * - * Format is hh:mm:ss. - * - * \param[in] pr Print stream for output. - * \param[in] fatTime The time field from a directory entry. - */ - static void printFatTime(print_t* pr, uint16_t fatTime); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(float value, char term, uint8_t prec = 2); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(int16_t value, char term); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(uint16_t value, char term); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(int32_t value, char term); - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. Use '\\n' for CR LF. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(uint32_t value, char term); - /** Print a file's modify date and time - * - * \param[in] pr Print stream for output. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool printModifyDateTime(print_t* pr); - /** Print a file's name - * - * \param[in] pr Print stream for output. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - size_t printName(print_t* pr); - /** Print a file's size. - * - * \param[in] pr Print stream for output. - * - * \return The number of characters printed is returned - * for success and zero is returned for failure. - */ - size_t printFileSize(print_t* pr); - /** Print a file's Short File Name. - * - * \param[in] pr Print stream for output. - * - * \return The number of characters printed is returned - * for success and zero is returned for failure. - */ - size_t printSFN(print_t* pr); - /** Read the next byte from a file. - * - * \return For success read returns the next byte in the file as an int. - * If an error occurs or end of file is reached -1 is returned. - */ - int read() { - uint8_t b; - return read(&b, 1) == 1 ? b : -1; - } - /** Read data from a file starting at the current position. - * - * \param[out] buf Pointer to the location that will receive the data. - * - * \param[in] nbyte Maximum number of bytes to read. - * - * \return For success read() returns the number of bytes read. - * A value less than \a nbyte, including zero, will be returned - * if end of file is reached. - * If an error occurs, read() returns -1. Possible errors include - * read() called before a file has been opened, corrupt file system - * or an I/O error occurred. - */ - int read(void* buf, size_t nbyte); - /** Read the next directory entry from a directory file. - * - * \param[out] dir The dir_t struct that will receive the data. - * - * \return For success readDir() returns the number of bytes read. - * A value of zero will be returned if end of file is reached. - * If an error occurs, readDir() returns -1. Possible errors include - * readDir() called before a directory has been opened, this is not - * a directory file or an I/O error occurred. - */ - int8_t readDir(dir_t* dir); - /** Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool remove(); - /** Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \param[in] dirFile The directory that contains the file. - * \param[in] path Path for the file to be removed. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - static bool remove(FatFile* dirFile, const char* path); - /** Set the file's current position to zero. */ - void rewind() { - seekSet(0); - } - /** Rename a file or subdirectory. - * - * \note the file will be moved to the current working directory. - * - * \param[in] newPath New path name for the file/directory. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rename(const char* newPath) { - return rename(cwd(), newPath); - } - /** Rename a file or subdirectory. - * - * \param[in] dirFile Directory for the new path. - * \param[in] newPath New path name for the file/directory. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rename(FatFile* dirFile, const char* newPath); - /** Remove a directory file. - * - * The directory file will be removed only if it is empty and is not the - * root directory. rmdir() follows DOS and Windows and ignores the - * read-only attribute for the directory. - * - * \note This function should not be used to delete the 8.3 version of a - * directory that has a long name. For example if a directory has the - * long name "New folder" you should not delete the 8.3 name "NEWFOL~1". - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rmdir(); - /** Recursively delete a directory and all contained files. - * - * This is like the Unix/Linux 'rm -rf *' if called with the root directory - * hence the name. - * - * Warning - This will remove all contents of the directory including - * subdirectories. The directory will then be removed if it is not root. - * The read-only attribute for files will be ignored. - * - * \note This function should not be used to delete the 8.3 version of - * a directory that has a long name. See remove() and rmdir(). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rmRfStar(); - /** Set the files position to current position + \a pos. See seekSet(). - * \param[in] offset The new position in bytes from the current position. - * \return true for success or false for failure. - */ - bool seekCur(int32_t offset) { - return seekSet(m_curPosition + offset); - } - /** Set the files position to end-of-file + \a offset. See seekSet(). - * Can't be used for directory files since file size is not defined. - * \param[in] offset The new position in bytes from end-of-file. - * \return true for success or false for failure. - */ - bool seekEnd(int32_t offset = 0) { - return isFile() ? seekSet(m_fileSize + offset) : false; - } - /** Sets a file's position. - * - * \param[in] pos The new position in bytes from the beginning of the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool seekSet(uint32_t pos); - /** Set the current working directory. - * - * \param[in] dir New current working directory. - * - * \return true for success else false. - */ - static bool setCwd(FatFile* dir) { - if (!dir->isDir()) { - return false; - } - m_cwd = dir; - return true; - } - /** \return first block of file or zero for empty file. */ - uint32_t firstBlock() { - if (m_firstCluster) { - return m_vol->clusterFirstBlock(m_firstCluster); - } - return 0; - } - /** The sync() call causes all modified data and directory fields - * to be written to the storage device. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool sync(); - /** Copy a file's timestamps - * - * \param[in] file File to copy timestamps from. - * - * \note - * Modify and access timestamps may be overwritten if a date time callback - * function has been set by dateTimeCallback(). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool timestamp(FatFile* file); - /** Set a file's timestamps in its directory entry. - * - * \param[in] flags Values for \a flags are constructed by a bitwise-inclusive - * OR of flags from the following list - * - * T_ACCESS - Set the file's last access date. - * - * T_CREATE - Set the file's creation date and time. - * - * T_WRITE - Set the file's last write/modification date and time. - * - * \param[in] year Valid range 1980 - 2107 inclusive. - * - * \param[in] month Valid range 1 - 12 inclusive. - * - * \param[in] day Valid range 1 - 31 inclusive. - * - * \param[in] hour Valid range 0 - 23 inclusive. - * - * \param[in] minute Valid range 0 - 59 inclusive. - * - * \param[in] second Valid range 0 - 59 inclusive - * - * \note It is possible to set an invalid date since there is no check for - * the number of days in a month. - * - * \note - * Modify and access timestamps may be overwritten if a date time callback - * function has been set by dateTimeCallback(). - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, - uint8_t hour, uint8_t minute, uint8_t second); - /** Type of file. You should use isFile() or isDir() instead of fileType() - * if possible. - * - * \return The file or directory type. - */ - uint8_t fileAttr() const { - return m_attr; - } - /** Truncate a file to a specified length. The current file position - * will be maintained if it is less than or equal to \a length otherwise - * it will be set to end of file. - * - * \param[in] length The desired length for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool truncate(uint32_t length); - /** \return FatVolume that contains this file. */ - FatVolume* volume() const { - return m_vol; - } - /** Write a string to a file. Used by the Arduino Print class. - * \param[in] str Pointer to the string. - * Use getWriteError to check for errors. - * \return count of characters written for success or -1 for failure. - */ - int write(const char* str) { - return write(str, strlen(str)); - } - /** Write a single byte. - * \param[in] b The byte to be written. - * \return +1 for success or -1 for failure. - */ - int write(uint8_t b) { - return write(&b, 1); - } - /** Write data to an open file. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] nbyte Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an I/O error. - * - */ - int write(const void* buf, size_t nbyte); -//------------------------------------------------------------------------------ - private: - /** This file has not been opened. */ - static const uint8_t FILE_ATTR_CLOSED = 0; - /** File is read-only. */ - static const uint8_t FILE_ATTR_READ_ONLY = DIR_ATT_READ_ONLY; - /** File should be hidden in directory listings. */ - static const uint8_t FILE_ATTR_HIDDEN = DIR_ATT_HIDDEN; - /** Entry is for a system file. */ - static const uint8_t FILE_ATTR_SYSTEM = DIR_ATT_SYSTEM; - /** Entry for normal data file */ - static const uint8_t FILE_ATTR_FILE = 0X08; - /** Entry is for a subdirectory */ - static const uint8_t FILE_ATTR_SUBDIR = DIR_ATT_DIRECTORY; - /** A FAT12 or FAT16 root directory */ - static const uint8_t FILE_ATTR_ROOT_FIXED = 0X20; - /** A FAT32 root directory */ - static const uint8_t FILE_ATTR_ROOT32 = 0X40; - /** Entry is for root. */ - static const uint8_t FILE_ATTR_ROOT = FILE_ATTR_ROOT_FIXED | FILE_ATTR_ROOT32; - /** Directory type bits */ - static const uint8_t FILE_ATTR_DIR = FILE_ATTR_SUBDIR | FILE_ATTR_ROOT; - /** Attributes to copy from directory entry */ - static const uint8_t FILE_ATTR_COPY = DIR_ATT_READ_ONLY | DIR_ATT_HIDDEN | - DIR_ATT_SYSTEM | DIR_ATT_DIRECTORY; - - /** experimental don't use */ - - bool openParent(FatFile* dir); - - // private functions - bool addCluster(); - bool addDirCluster(); - dir_t* cacheDirEntry(uint8_t action); - static uint8_t lfnChecksum(uint8_t* name); - bool lfnUniqueSfn(fname_t* fname); - bool openCluster(FatFile* file); - static bool parsePathName(const char* str, fname_t* fname, const char** ptr); - bool mkdir(FatFile* parent, fname_t* fname); - bool open(FatFile* dirFile, fname_t* fname, oflag_t oflag); - bool openCachedEntry(FatFile* dirFile, uint16_t cacheIndex, oflag_t oflag, - uint8_t lfnOrd); - bool readLBN(uint32_t* lbn); - dir_t* readDirCache(bool skipReadOk = false); - bool setDirSize(); - - // bits defined in m_flags - static const uint8_t F_READ = 0X01; - static const uint8_t F_WRITE = 0X02; - static const uint8_t F_FILE_DIR_DIRTY = 0X04; - static const uint8_t F_APPEND = 0X08; - static const uint8_t F_SYNC = 0X80; - - - // global pointer to cwd dir - static FatFile* m_cwd; - // data time callback function - static void (*m_dateTime)(uint16_t* date, uint16_t* time); - // private data - static const uint8_t WRITE_ERROR = 0X1; - static const uint8_t READ_ERROR = 0X2; - uint8_t m_attr; // File attributes - uint8_t m_error; // Error bits. - uint8_t m_flags; // See above for definition of m_flags bits - uint8_t m_lfnOrd; - uint16_t m_dirIndex; // index of directory entry in dir file - FatVolume* m_vol; // volume where file is located - uint32_t m_dirCluster; - uint32_t m_curCluster; // cluster for current file position - uint32_t m_curPosition; // current file position - uint32_t m_dirBlock; // block for this files directory entry - uint32_t m_fileSize; // file size in bytes - uint32_t m_firstCluster; // first cluster of file -}; -#endif // FatFile_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileLFN.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileLFN.cpp deleted file mode 100644 index 571623d3..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileLFN.cpp +++ /dev/null @@ -1,688 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FatFile.h" -//------------------------------------------------------------------------------ -// -uint8_t FatFile::lfnChecksum(uint8_t* name) { - uint8_t sum = 0; - for (uint8_t i = 0; i < 11; i++) { - sum = (((sum & 1) << 7) | ((sum & 0xfe) >> 1)) + name[i]; - } - return sum; -} -#if USE_LONG_FILE_NAMES -//------------------------------------------------------------------------------ -// Saves about 90 bytes of flash on 328 over tolower(). -inline char lfnToLower(char c) { - return 'A' <= c && c <= 'Z' ? c + 'a' - 'A' : c; -} -//------------------------------------------------------------------------------ -// Daniel Bernstein University of Illinois at Chicago. -// Original had + instead of ^ -static uint16_t Bernstein(uint16_t hash, const char *str, size_t len) { - for (size_t i = 0; i < len; i++) { - // hash = hash * 33 ^ str[i]; - hash = ((hash << 5) + hash) ^ str[i]; - } - return hash; -} -//------------------------------------------------------------------------------ -/** - * Fetch a 16-bit long file name character. - * - * \param[in] ldir Pointer to long file name directory entry. - * \param[in] i Index of character. - * \return The 16-bit character. - */ -static uint16_t lfnGetChar(ldir_t *ldir, uint8_t i) { - if (i < LDIR_NAME1_DIM) { - return ldir->name1[i]; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM)) { - return ldir->name2[i - LDIR_NAME1_DIM]; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM + LDIR_NAME2_DIM)) { - return ldir->name3[i - LDIR_NAME1_DIM - LDIR_NAME2_DIM]; - } - return 0; -} -//------------------------------------------------------------------------------ -static bool lfnGetName(ldir_t *ldir, char* name, size_t n) { - uint8_t i; - size_t k = 13*((ldir->ord & 0X1F) - 1); - for (i = 0; i < 13; i++) { - uint16_t c = lfnGetChar(ldir, i); - if (c == 0 || k >= n) { - break; - } - name[k++] = c >= 0X7F ? '?' : c; - } - // Terminate with zero byte if name fits. - if (k < n && (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY)) { - name[k] = 0; - } - // Truncate if name is too long. - name[n - 1] = 0; - return true; -} -//------------------------------------------------------------------------------ -inline bool lfnLegalChar(char c) { - if (c == '/' || c == '\\' || c == '"' || c == '*' || - c == ':' || c == '<' || c == '>' || c == '?' || c == '|') { - return false; - } - return 0X1F < c && c < 0X7F; -} -//------------------------------------------------------------------------------ -/** - * Store a 16-bit long file name character. - * - * \param[in] ldir Pointer to long file name directory entry. - * \param[in] i Index of character. - * \param[in] c The 16-bit character. - */ -static void lfnPutChar(ldir_t *ldir, uint8_t i, uint16_t c) { - if (i < LDIR_NAME1_DIM) { - ldir->name1[i] = c; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM)) { - ldir->name2[i - LDIR_NAME1_DIM] = c; - } else if (i < (LDIR_NAME1_DIM + LDIR_NAME2_DIM + LDIR_NAME2_DIM)) { - ldir->name3[i - LDIR_NAME1_DIM - LDIR_NAME2_DIM] = c; - } -} -//------------------------------------------------------------------------------ -static void lfnPutName(ldir_t *ldir, const char* name, size_t n) { - size_t k = 13*((ldir->ord & 0X1F) - 1); - for (uint8_t i = 0; i < 13; i++, k++) { - uint16_t c = k < n ? name[k] : k == n ? 0 : 0XFFFF; - lfnPutChar(ldir, i, c); - } -} -//============================================================================== -bool FatFile::getName(char* name, size_t size) { - FatFile dirFile; - ldir_t* ldir; - if (!isOpen() || size < 13) { - DBG_FAIL_MACRO; - goto fail; - } - if (!isLFN()) { - return getSFN(name); - } - if (!dirFile.openCluster(this)) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t ord = 1; ord <= m_lfnOrd; ord++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - ord))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr != DIR_ATT_LONG_NAME) { - DBG_FAIL_MACRO; - goto fail; - } - if (ord != (ldir->ord & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - if (!lfnGetName(ldir, name, size)) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - return true; - } - } - // Fall into fail. - DBG_FAIL_MACRO; - -fail: - name[0] = 0; - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::openCluster(FatFile* file) { - if (file->m_dirCluster == 0) { - return openRoot(file->m_vol); - } - memset(this, 0, sizeof(FatFile)); - m_attr = FILE_ATTR_SUBDIR; - m_flags = F_READ; - m_vol = file->m_vol; - m_firstCluster = file->m_dirCluster; - return true; -} -//------------------------------------------------------------------------------ -bool FatFile::parsePathName(const char* path, - fname_t* fname, const char** ptr) { - char c; - bool is83; - uint8_t bit = DIR_NT_LC_BASE; - uint8_t lc = 0; - uint8_t uc = 0; - uint8_t i = 0; - uint8_t in = 7; - int end; - int len = 0; - int si; - int dot; - - // Skip leading spaces. - while (*path == ' ') { - path++; - } - fname->lfn = path; - - for (len = 0; ; len++) { - c = path[len]; - if (c == 0 || isDirSeparator(c)) { - break; - } - if (!lfnLegalChar(c)) { - return false; - } - } - // Advance to next path component. - for (end = len; path[end] == ' ' || isDirSeparator(path[end]); end++) {} - *ptr = &path[end]; - - // Back over spaces and dots. - while (len) { - c = path[len - 1]; - if (c != '.' && c != ' ') { - break; - } - len--; - } - // Max length of LFN is 255. - if (len > 255) { - return false; - } - fname->len = len; - // Blank file short name. - for (uint8_t k = 0; k < 11; k++) { - fname->sfn[k] = ' '; - } - // skip leading spaces and dots. - for (si = 0; path[si] == '.' || path[si] == ' '; si++) {} - // Not 8.3 if leading dot or space. - is83 = !si; - - // find last dot. - for (dot = len - 1; dot >= 0 && path[dot] != '.'; dot--) {} - for (; si < len; si++) { - c = path[si]; - if (c == ' ' || (c == '.' && dot != si)) { - is83 = false; - continue; - } - if (!legal83Char(c) && si != dot) { - is83 = false; - c = '_'; - } - if (si == dot || i > in) { - if (in == 10) { - // Done - extension longer than three characters. - is83 = false; - break; - } - if (si != dot) { - is83 = false; - } - // Break if no dot and base-name is longer than eight characters. - if (si > dot) { - break; - } - si = dot; - in = 10; // Max index for full 8.3 name. - i = 8; // Place for extension. - bit = DIR_NT_LC_EXT; // bit for extension. - } else { - if ('a' <= c && c <= 'z') { - c += 'A' - 'a'; - lc |= bit; - } else if ('A' <= c && c <= 'Z') { - uc |= bit; - } - fname->sfn[i++] = c; - if (i < 7) { - fname->seqPos = i; - } - } - } - if (fname->sfn[0] == ' ') { - return false; - } - - if (is83) { - fname->flags = lc & uc ? FNAME_FLAG_MIXED_CASE : lc; - } else { - fname->flags = FNAME_FLAG_LOST_CHARS; - fname->sfn[fname->seqPos] = '~'; - fname->sfn[fname->seqPos + 1] = '1'; - } - return true; -} -//------------------------------------------------------------------------------ -bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { - bool fnameFound = false; - uint8_t lfnOrd = 0; - uint8_t freeNeed; - uint8_t freeFound = 0; - uint8_t ord = 0; - uint8_t chksum = 0; - uint16_t freeIndex = 0; - uint16_t curIndex; - dir_t* dir; - ldir_t* ldir; - size_t len = fname->len; - - if (!dirFile->isDir() || isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - // Number of directory entries needed. - freeNeed = fname->flags & FNAME_FLAG_NEED_LFN ? 1 + (len + 12)/13 : 1; - - dirFile->rewind(); - while (1) { - curIndex = dirFile->m_curPosition/32; - dir = dirFile->readDirCache(true); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - goto fail; - } - // At EOF - goto create; - } - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == DIR_NAME_FREE) { - if (freeFound == 0) { - freeIndex = curIndex; - } - if (freeFound < freeNeed) { - freeFound++; - } - if (dir->name[0] == DIR_NAME_FREE) { - goto create; - } - } else { - if (freeFound < freeNeed) { - freeFound = 0; - } - } - // skip empty slot or '.' or '..' - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') { - lfnOrd = 0; - } else if (DIR_IS_LONG_NAME(dir)) { - ldir_t *ldir = reinterpret_cast(dir); - if (!lfnOrd) { - if ((ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) == 0) { - continue; - } - lfnOrd = ord = ldir->ord & 0X1F; - chksum = ldir->chksum; - } else if (ldir->ord != --ord || chksum != ldir->chksum) { - lfnOrd = 0; - continue; - } - size_t k = 13*(ord - 1); - if (k >= len) { - // Not found. - lfnOrd = 0; - continue; - } - for (uint8_t i = 0; i < 13; i++) { - uint16_t u = lfnGetChar(ldir, i); - if (k == len) { - if (u != 0) { - // Not found. - lfnOrd = 0; - } - break; - } - if (u > 255 || lfnToLower(u) != lfnToLower(fname->lfn[k++])) { - // Not found. - lfnOrd = 0; - break; - } - } - } else if (DIR_IS_FILE_OR_SUBDIR(dir)) { - if (lfnOrd) { - if (1 == ord && lfnChecksum(dir->name) == chksum) { - goto found; - } - DBG_FAIL_MACRO; - goto fail; - } - if (!memcmp(dir->name, fname->sfn, sizeof(fname->sfn))) { - if (!(fname->flags & FNAME_FLAG_LOST_CHARS)) { - goto found; - } - fnameFound = true; - } - } else { - lfnOrd = 0; - } - } - -found: - // Don't open if create only. - if (oflag & O_EXCL) { - DBG_FAIL_MACRO; - goto fail; - } - goto open; - -create: - // don't create unless O_CREAT and write mode. - if (!(oflag & O_CREAT) || !isWriteMode(oflag)) { - DBG_FAIL_MACRO; - goto fail; - } - // If at EOF start in next cluster. - if (freeFound == 0) { - freeIndex = curIndex; - } - - while (freeFound < freeNeed) { - dir = dirFile->readDirCache(); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - goto fail; - } - // EOF if no error. - break; - } - freeFound++; - } - while (freeFound < freeNeed) { - // Will fail if FAT16 root. - if (!dirFile->addDirCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - // Done if more than one block per cluster. Max freeNeed is 21. - if (dirFile->m_vol->blocksPerCluster() > 1) { - break; - } - freeFound += 16; - } - if (fnameFound) { - if (!dirFile->lfnUniqueSfn(fname)) { - goto fail; - } - } - if (!dirFile->seekSet(32UL*freeIndex)) { - DBG_FAIL_MACRO; - goto fail; - } - lfnOrd = freeNeed - 1; - for (uint8_t ord = lfnOrd ; ord ; ord--) { - ldir = reinterpret_cast(dirFile->readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - dirFile->m_vol->cacheDirty(); - ldir->ord = ord == lfnOrd ? LDIR_ORD_LAST_LONG_ENTRY | ord : ord; - ldir->attr = DIR_ATT_LONG_NAME; - ldir->type = 0; - ldir->chksum = lfnChecksum(fname->sfn); - ldir->mustBeZero = 0; - lfnPutName(ldir, fname->lfn, len); - } - curIndex = dirFile->m_curPosition/32; - dir = dirFile->readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // initialize as empty file - memset(dir, 0, sizeof(dir_t)); - memcpy(dir->name, fname->sfn, 11); - - // Set base-name and extension lower case bits. - dir->reservedNT = (DIR_NT_LC_BASE | DIR_NT_LC_EXT) & fname->flags; - - // set timestamps - if (m_dateTime) { - // call user date/time function - m_dateTime(&dir->creationDate, &dir->creationTime); - } else { - // use default date/time - dir->creationDate = FAT_DEFAULT_DATE; - dir->creationTime = FAT_DEFAULT_TIME; - } - dir->lastAccessDate = dir->creationDate; - dir->lastWriteDate = dir->creationDate; - dir->lastWriteTime = dir->creationTime; - - // Force write of entry to device. - dirFile->m_vol->cacheDirty(); - -open: - // open entry in cache. - if (!openCachedEntry(dirFile, curIndex, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printName(print_t* pr) { - FatFile dirFile; - uint16_t u; - size_t n = 0; - ldir_t* ldir; - - if (!isLFN()) { - return printSFN(pr); - } - if (!dirFile.openCluster(this)) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t ord = 1; ord <= m_lfnOrd; ord++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - ord))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr != DIR_ATT_LONG_NAME || - ord != (ldir->ord & 0X1F)) { - DBG_FAIL_MACRO; - goto fail; - } - for (uint8_t i = 0; i < 13; i++) { - u = lfnGetChar(ldir, i); - if (u == 0) { - // End of name. - break; - } - if (u > 0X7E) { - u = '?'; - } - pr->write(static_cast(u)); - n++; - } - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - return n; - } - } - // Fall into fail; - DBG_FAIL_MACRO; - -fail: - return 0; -} -//------------------------------------------------------------------------------ -bool FatFile::remove() { - bool last; - uint8_t chksum; - uint8_t ord; - FatFile dirFile; - dir_t* dir; - ldir_t* ldir; - - // Cant' remove not open for write. - if (!isFile() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // Free any clusters. - if (m_firstCluster && !m_vol->freeChain(m_firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // Cache directory entry. - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - chksum = lfnChecksum(dir->name); - - // Mark entry deleted. - dir->name[0] = DIR_NAME_DELETED; - - // Set this file closed. - m_attr = FILE_ATTR_CLOSED; - - // Write entry to device. - if (!m_vol->cacheSync()) { - DBG_FAIL_MACRO; - goto fail; - } - if (!isLFN()) { - // Done, no LFN entries. - return true; - } - if (!dirFile.openCluster(this)) { - DBG_FAIL_MACRO; - goto fail; - } - for (ord = 1; ord <= m_lfnOrd; ord++) { - if (!dirFile.seekSet(32UL*(m_dirIndex - ord))) { - DBG_FAIL_MACRO; - goto fail; - } - ldir = reinterpret_cast(dirFile.readDirCache()); - if (!ldir) { - DBG_FAIL_MACRO; - goto fail; - } - if (ldir->attr != DIR_ATT_LONG_NAME || - ord != (ldir->ord & 0X1F) || - chksum != ldir->chksum) { - DBG_FAIL_MACRO; - goto fail; - } - last = ldir->ord & LDIR_ORD_LAST_LONG_ENTRY; - ldir->ord = DIR_NAME_DELETED; - m_vol->cacheDirty(); - if (last) { - if (!m_vol->cacheSync()) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - } - } - // Fall into fail. - DBG_FAIL_MACRO; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::lfnUniqueSfn(fname_t* fname) { - const uint8_t FIRST_HASH_SEQ = 2; // min value is 2 - uint8_t pos = fname->seqPos;; - dir_t *dir; - uint16_t hex; - - DBG_HALT_IF(!(fname->flags & FNAME_FLAG_LOST_CHARS)); - DBG_HALT_IF(fname->sfn[pos] != '~' && fname->sfn[pos + 1] != '1'); - - for (uint8_t seq = 2; seq < 100; seq++) { - if (seq < FIRST_HASH_SEQ) { - fname->sfn[pos + 1] = '0' + seq; - } else { - DBG_PRINT_IF(seq > FIRST_HASH_SEQ); - hex = Bernstein(seq + fname->len, fname->lfn, fname->len); - if (pos > 3) { - // Make space in name for ~HHHH. - pos = 3; - } - for (uint8_t i = pos + 4 ; i > pos; i--) { - uint8_t h = hex & 0XF; - fname->sfn[i] = h < 10 ? h + '0' : h + 'A' - 10; - hex >>= 4; - } - } - fname->sfn[pos] = '~'; - rewind(); - while (1) { - dir = readDirCache(true); - if (!dir) { - if (!getError()) { - // At EOF and name not found if no error. - goto done; - } - DBG_FAIL_MACRO; - goto fail; - } - if (dir->name[0] == DIR_NAME_FREE) { - goto done; - } - if (DIR_IS_FILE_OR_SUBDIR(dir) && !memcmp(fname->sfn, dir->name, 11)) { - // Name found - try another. - break; - } - } - } - // fall inti fail - too many tries. - DBG_FAIL_MACRO; - -fail: - return false; - -done: - return true; -} -#endif // #if USE_LONG_FILE_NAMES diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFilePrint.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFilePrint.cpp deleted file mode 100644 index 5cc79e8a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFilePrint.cpp +++ /dev/null @@ -1,267 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -#include "FatFile.h" -#include "FmtNumber.h" -//------------------------------------------------------------------------------ -// print uint8_t with width 2 -static void print2u(print_t* pr, uint8_t v) { - char c0 = '?'; - char c1 = '?'; - if (v < 100) { - c1 = v/10; - c0 = v - 10*c1 + '0'; - c1 += '0'; - } - pr->write(c1); - pr->write(c0); -} -//------------------------------------------------------------------------------ -static void printU32(print_t* pr, uint32_t v) { - char buf[11]; - char* ptr = buf + sizeof(buf); - *--ptr = 0; - pr->write(fmtDec(v, ptr)); -} -//------------------------------------------------------------------------------ -static void printHex(print_t* pr, uint8_t w, uint16_t h) { - char buf[5]; - char* ptr = buf + sizeof(buf); - *--ptr = 0; - for (uint8_t i = 0; i < w; i++) { - char c = h & 0XF; - *--ptr = c < 10 ? c + '0' : c + 'A' - 10; - h >>= 4; - } - pr->write(ptr); -} -//------------------------------------------------------------------------------ -void FatFile::dmpFile(print_t* pr, uint32_t pos, size_t n) { - char text[17]; - text[16] = 0; - if (n >= 0XFFF0) { - n = 0XFFF0; - } - if (!seekSet(pos)) { - return; - } - for (size_t i = 0; i <= n; i++) { - if ((i & 15) == 0) { - if (i) { - pr->write(' '); - pr->write(text); - if (i == n) { - break; - } - } - pr->write('\r'); - pr->write('\n'); - if (i >= n) { - break; - } - printHex(pr, 4, i); - pr->write(' '); - } - int16_t h = read(); - if (h < 0) { - break; - } - pr->write(' '); - printHex(pr, 2, h); - text[i&15] = ' ' <= h && h < 0X7F ? h : '.'; - } - pr->write('\r'); - pr->write('\n'); -} -//------------------------------------------------------------------------------ -bool FatFile::ls(print_t* pr, uint8_t flags, uint8_t indent) { - FatFile file; - if (!isDir() || getError()) { - DBG_FAIL_MACRO; - goto fail; - } - rewind(); - while (file.openNext(this, O_RDONLY)) { - if (!file.isHidden() || (flags & LS_A)) { - // indent for dir level - for (uint8_t i = 0; i < indent; i++) { - pr->write(' '); - } - if (flags & LS_DATE) { - file.printModifyDateTime(pr); - pr->write(' '); - } - if (flags & LS_SIZE) { - file.printFileSize(pr); - pr->write(' '); - } - file.printName(pr); - if (file.isDir()) { - pr->write('/'); - } - pr->write('\r'); - pr->write('\n'); - if ((flags & LS_R) && file.isDir()) { - if (!file.ls(pr, flags, indent + 2)) { - DBG_FAIL_MACRO; - goto fail; - } - } - } - file.close(); - } - if (getError()) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - - fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatFile::printCreateDateTime(print_t* pr) { - dir_t dir; - if (!dirEntry(&dir)) { - DBG_FAIL_MACRO; - goto fail; - } - printFatDate(pr, dir.creationDate); - pr->write(' '); - printFatTime(pr, dir.creationTime); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -void FatFile::printFatDate(print_t* pr, uint16_t fatDate) { - printU32(pr, FAT_YEAR(fatDate)); - pr->write('-'); - print2u(pr, FAT_MONTH(fatDate)); - pr->write('-'); - print2u(pr, FAT_DAY(fatDate)); -} -//------------------------------------------------------------------------------ -void FatFile::printFatTime(print_t* pr, uint16_t fatTime) { - print2u(pr, FAT_HOUR(fatTime)); - pr->write(':'); - print2u(pr, FAT_MINUTE(fatTime)); - pr->write(':'); - print2u(pr, FAT_SECOND(fatTime)); -} -//------------------------------------------------------------------------------ -/** Template for FatFile::printField() */ -template -static int printFieldT(FatFile* file, char sign, Type value, char term) { - char buf[3*sizeof(Type) + 3]; - char* str = &buf[sizeof(buf)]; - - if (term) { - *--str = term; - if (term == '\n') { - *--str = '\r'; - } - } -#ifdef OLD_FMT - do { - Type m = value; - value /= 10; - *--str = '0' + m - 10*value; - } while (value); -#else // OLD_FMT - str = fmtDec(value, str); -#endif // OLD_FMT - if (sign) { - *--str = sign; - } - return file->write(str, &buf[sizeof(buf)] - str); -} -//------------------------------------------------------------------------------ - -int FatFile::printField(float value, char term, uint8_t prec) { - char buf[24]; - char* str = &buf[sizeof(buf)]; - if (term) { - *--str = term; - if (term == '\n') { - *--str = '\r'; - } - } - str = fmtFloat(value, str, prec); - return write(str, buf + sizeof(buf) - str); -} -//------------------------------------------------------------------------------ -int FatFile::printField(uint16_t value, char term) { - return printFieldT(this, 0, value, term); -} -//------------------------------------------------------------------------------ -int FatFile::printField(int16_t value, char term) { - char sign = 0; - if (value < 0) { - sign = '-'; - value = -value; - } - return printFieldT(this, sign, (uint16_t)value, term); -} -//------------------------------------------------------------------------------ -int FatFile::printField(uint32_t value, char term) { - return printFieldT(this, 0, value, term); -} -//------------------------------------------------------------------------------ -int FatFile::printField(int32_t value, char term) { - char sign = 0; - if (value < 0) { - sign = '-'; - value = -value; - } - return printFieldT(this, sign, (uint32_t)value, term); -} -//------------------------------------------------------------------------------ -bool FatFile::printModifyDateTime(print_t* pr) { - dir_t dir; - if (!dirEntry(&dir)) { - DBG_FAIL_MACRO; - goto fail; - } - printFatDate(pr, dir.lastWriteDate); - pr->write(' '); - printFatTime(pr, dir.lastWriteTime); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printFileSize(print_t* pr) { - char buf[11]; - char *ptr = buf + sizeof(buf); - *--ptr = 0; - ptr = fmtDec(fileSize(), ptr); - while (ptr > buf) { - *--ptr = ' '; - } - return pr->write(buf); -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileSFN.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileSFN.cpp deleted file mode 100644 index afb045f0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileSFN.cpp +++ /dev/null @@ -1,278 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FatFile.h" -#include "FatFileSystem.h" -//------------------------------------------------------------------------------ -bool FatFile::getSFN(char* name) { - dir_t* dir; - if (!isOpen()) { - DBG_FAIL_MACRO; - goto fail; - } - if (isRoot()) { - name[0] = '/'; - name[1] = '\0'; - return true; - } - // cache entry - dir = cacheDirEntry(FatCache::CACHE_FOR_READ); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // format name - dirName(dir, name); - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printSFN(print_t* pr) { - char name[13]; - if (!getSFN(name)) { - DBG_FAIL_MACRO; - goto fail; - } - return pr->write(name); - -fail: - return 0; -} -#if !USE_LONG_FILE_NAMES -//------------------------------------------------------------------------------ -bool FatFile::getName(char* name, size_t size) { - return size < 13 ? 0 : getSFN(name); -} -//------------------------------------------------------------------------------ -// format directory name field from a 8.3 name string -bool FatFile::parsePathName(const char* path, fname_t* fname, - const char** ptr) { - uint8_t uc = 0; - uint8_t lc = 0; - uint8_t bit = FNAME_FLAG_LC_BASE; - // blank fill name and extension - for (uint8_t i = 0; i < 11; i++) { - fname->sfn[i] = ' '; - } - - for (uint8_t i = 0, n = 7;; path++) { - uint8_t c = *path; - if (c == 0 || isDirSeparator(c)) { - // Done. - break; - } - if (c == '.' && n == 7) { - n = 10; // max index for full 8.3 name - i = 8; // place for extension - - // bit for extension. - bit = FNAME_FLAG_LC_EXT; - } else { - if (!legal83Char(c) || i > n) { - DBG_FAIL_MACRO; - goto fail; - } - if ('a' <= c && c <= 'z') { - c += 'A' - 'a'; - lc |= bit; - } else if ('A' <= c && c <= 'Z') { - uc |= bit; - } - fname->sfn[i++] = c; - } - } - // must have a file name, extension is optional - if (fname->sfn[0] == ' ') { - DBG_FAIL_MACRO; - goto fail; - } - // Set base-name and extension bits. - fname->flags = lc & uc ? 0 : lc; - while (isDirSeparator(*path)) { - path++; - } - *ptr = path; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// open with filename in fname -#define SFN_OPEN_USES_CHKSUM 0 -bool FatFile::open(FatFile* dirFile, fname_t* fname, oflag_t oflag) { - bool emptyFound = false; -#if SFN_OPEN_USES_CHKSUM - uint8_t chksum; -#endif - uint8_t lfnOrd = 0; - uint16_t emptyIndex; - uint16_t index = 0; - dir_t* dir; - ldir_t* ldir; - - dirFile->rewind(); - while (1) { - if (!emptyFound) { - emptyIndex = index; - } - dir = dirFile->readDirCache(true); - if (!dir) { - if (dirFile->getError()) { - DBG_FAIL_MACRO; - goto fail; - } - // At EOF if no error. - break; - } - if (dir->name[0] == DIR_NAME_FREE) { - emptyFound = true; - break; - } - if (dir->name[0] == DIR_NAME_DELETED) { - lfnOrd = 0; - emptyFound = true; - } else if (DIR_IS_FILE_OR_SUBDIR(dir)) { - if (!memcmp(fname->sfn, dir->name, 11)) { - // don't open existing file if O_EXCL - if (oflag & O_EXCL) { - DBG_FAIL_MACRO; - goto fail; - } -#if SFN_OPEN_USES_CHKSUM - if (lfnOrd && chksum != lfnChecksum(dir->name)) { - DBG_FAIL_MACRO; - goto fail; - } -#endif // SFN_OPEN_USES_CHKSUM - if (!openCachedEntry(dirFile, index, oflag, lfnOrd)) { - DBG_FAIL_MACRO; - goto fail; - } - return true; - } else { - lfnOrd = 0; - } - } else if (DIR_IS_LONG_NAME(dir)) { - ldir = reinterpret_cast(dir); - if (ldir->ord & LDIR_ORD_LAST_LONG_ENTRY) { - lfnOrd = ldir->ord & 0X1F; -#if SFN_OPEN_USES_CHKSUM - chksum = ldir->chksum; -#endif // SFN_OPEN_USES_CHKSUM - } - } else { - lfnOrd = 0; - } - index++; - } - // don't create unless O_CREAT and write mode - if (!(oflag & O_CREAT) || !isWriteMode(oflag)) { - DBG_FAIL_MACRO; - goto fail; - } - if (emptyFound) { - index = emptyIndex; - } else { - if (!dirFile->addDirCluster()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (!dirFile->seekSet(32UL*index)) { - DBG_FAIL_MACRO; - goto fail; - } - dir = dirFile->readDirCache(); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // initialize as empty file - memset(dir, 0, sizeof(dir_t)); - memcpy(dir->name, fname->sfn, 11); - - // Set base-name and extension lower case bits. - dir->reservedNT = (DIR_NT_LC_BASE | DIR_NT_LC_EXT) & fname->flags; - - // set timestamps - if (m_dateTime) { - // call user date/time function - m_dateTime(&dir->creationDate, &dir->creationTime); - } else { - // use default date/time - dir->creationDate = FAT_DEFAULT_DATE; - dir->creationTime = FAT_DEFAULT_TIME; - } - dir->lastAccessDate = dir->creationDate; - dir->lastWriteDate = dir->creationDate; - dir->lastWriteTime = dir->creationTime; - - // Force write of entry to device. - dirFile->m_vol->cacheDirty(); - - // open entry in cache. - return openCachedEntry(dirFile, index, oflag, 0); - -fail: - return false; -} -//------------------------------------------------------------------------------ -size_t FatFile::printName(print_t* pr) { - return printSFN(pr); -} -//------------------------------------------------------------------------------ -bool FatFile::remove() { - dir_t* dir; - // Can't remove if LFN or not open for write. - if (!isFile() || isLFN() || !(m_flags & F_WRITE)) { - DBG_FAIL_MACRO; - goto fail; - } - // Free any clusters. - if (m_firstCluster && !m_vol->freeChain(m_firstCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // Cache directory entry. - dir = cacheDirEntry(FatCache::CACHE_FOR_WRITE); - if (!dir) { - DBG_FAIL_MACRO; - goto fail; - } - // Mark entry deleted. - dir->name[0] = DIR_NAME_DELETED; - - // Set this file closed. - m_attr = FILE_ATTR_CLOSED; - - // Write entry to device. - return m_vol->cacheSync(); - -fail: - return false; -} -#endif // !USE_LONG_FILE_NAMES diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileSystem.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileSystem.h deleted file mode 100644 index 044b9cf9..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatFileSystem.h +++ /dev/null @@ -1,332 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatFileSystem_h -#define FatFileSystem_h -#include "FatVolume.h" -#include "FatFile.h" -#include "ArduinoFiles.h" -/** - * \file - * \brief FatFileSystem class - */ -//------------------------------------------------------------------------------ -/** - * \class FatFileSystem - * \brief Integration class for the FatLib library. - */ -class FatFileSystem : public FatVolume { - public: - /** - * Initialize an FatFileSystem object. - * \param[in] blockDev Device block driver. - * \param[in] part partition to initialize. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool begin(BlockDriver* blockDev, uint8_t part = 0) { - m_blockDev = blockDev; - vwd()->close(); - return (part ? init(part) : init(1) || init(0)) - && vwd()->openRoot(this) && FatFile::setCwd(vwd()); - } -#if ENABLE_ARDUINO_FEATURES - /** List the directory contents of the volume working directory to Serial. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(uint8_t flags = 0) { - return ls(&Serial, flags); - } - /** List the directory contents of a directory to Serial. - * - * \param[in] path directory to list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(const char* path, uint8_t flags = 0) { - return ls(&Serial, path, flags); - } - /** open a file - * - * \param[in] path location of file to be opened. - * \param[in] oflag open flags. - * \return a File object. - */ - File open(const char *path, oflag_t oflag = FILE_READ) { - File tmpFile; - tmpFile.open(vwd(), path, oflag); - return tmpFile; - } - /** open a file - * - * \param[in] path location of file to be opened. - * \param[in] oflag open flags. - * \return a File object. - */ - File open(const String &path, oflag_t oflag = FILE_READ) { - return open(path.c_str(), oflag ); - } -#endif // ENABLE_ARDUINO_FEATURES - /** Change a volume's working directory to root - * - * Changes the volume's working directory to the SD's root directory. - * Optionally set the current working directory to the volume's - * working directory. - * - * \param[in] set_cwd Set the current working directory to this volume's - * working directory if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool chdir(bool set_cwd = false) { - vwd()->close(); - return vwd()->openRoot(this) && (set_cwd ? FatFile::setCwd(vwd()) : true); - } - /** Change a volume's working directory - * - * Changes the volume working directory to the \a path subdirectory. - * Optionally set the current working directory to the volume's - * working directory. - * - * Example: If the volume's working directory is "/DIR", chdir("SUB") - * will change the volume's working directory from "/DIR" to "/DIR/SUB". - * - * If path is "/", the volume's working directory will be changed to the - * root directory - * - * \param[in] path The name of the subdirectory. - * - * \param[in] set_cwd Set the current working directory to this volume's - * working directory if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - //---------------------------------------------------------------------------- - bool chdir(const char *path, bool set_cwd = false) { - FatFile dir; - if (path[0] == '/' && path[1] == '\0') { - return chdir(set_cwd); - } - if (!dir.open(vwd(), path, O_RDONLY)) { - goto fail; - } - if (!dir.isDir()) { - goto fail; - } - m_vwd = dir; - if (set_cwd) { - FatFile::setCwd(vwd()); - } - return true; - -fail: - return false; - } - //---------------------------------------------------------------------------- - /** Set the current working directory to a volume's working directory. - * - * This is useful with multiple SD cards. - * - * The current working directory is changed to this - * volume's working directory. - * - * This is like the Windows/DOS \: command. - */ - void chvol() { - FatFile::setCwd(vwd()); - } - //---------------------------------------------------------------------------- - /** - * Test for the existence of a file. - * - * \param[in] path Path of the file to be tested for. - * - * \return true if the file exists else false. - */ - bool exists(const char* path) { - return vwd()->exists(path); - } - //---------------------------------------------------------------------------- - /** List the directory contents of the volume working directory. - * - * \param[in] pr Print stream for list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(print_t* pr, uint8_t flags = 0) { - return vwd()->ls(pr, flags); - } - //---------------------------------------------------------------------------- - /** List the directory contents of a directory. - * - * \param[in] pr Print stream for list. - * - * \param[in] path directory to list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \return true for success or false if an error occurred. - */ - bool ls(print_t* pr, const char* path, uint8_t flags) { - FatFile dir; - return dir.open(vwd(), path, O_RDONLY) && dir.ls(pr, flags); - } - //---------------------------------------------------------------------------- - /** Make a subdirectory in the volume working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. - * - * \param[in] pFlag Create missing parent directories if true. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool mkdir(const char* path, bool pFlag = true) { - FatFile sub; - return sub.mkdir(vwd(), path, pFlag); - } - //---------------------------------------------------------------------------- - /** Remove a file from the volume working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool remove(const char* path) { - return FatFile::remove(vwd(), path); - } - //---------------------------------------------------------------------------- - /** Rename a file or subdirectory. - * - * \param[in] oldPath Path name to the file or subdirectory to be renamed. - * - * \param[in] newPath New path name of the file or subdirectory. - * - * The \a newPath object must not exist before the rename call. - * - * The file to be renamed must not be open. The directory entry may be - * moved and file system corruption could occur if the file is accessed by - * a file object that was opened before the rename() call. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rename(const char *oldPath, const char *newPath) { - FatFile file; - if (!file.open(vwd(), oldPath, O_RDONLY)) { - return false; - } - return file.rename(vwd(), newPath); - } - //---------------------------------------------------------------------------- - /** Remove a subdirectory from the volume's working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the subdirectory. - * - * The subdirectory file will be removed only if it is empty. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool rmdir(const char* path) { - FatFile sub; - if (!sub.open(vwd(), path, O_RDONLY)) { - return false; - } - return sub.rmdir(); - } - //---------------------------------------------------------------------------- - /** Truncate a file to a specified length. The current file position - * will be maintained if it is less than or equal to \a length otherwise - * it will be set to end of file. - * - * \param[in] path A path with a valid 8.3 DOS name for the file. - * \param[in] length The desired length for the file. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool truncate(const char* path, uint32_t length) { - FatFile file; - if (!file.open(vwd(), path, O_WRONLY)) { - return false; - } - return file.truncate(length); - } - /** \return a pointer to the FatVolume object. */ - FatVolume* vol() { - return this; - } - /** \return a pointer to the volume working directory. */ - FatFile* vwd() { - return &m_vwd; - } - /** Wipe all data from the volume. You must reinitialize the volume before - * accessing it again. - * \param[in] pr print stream for status dots. - * \return true for success else false. - */ - bool wipe(print_t* pr = 0) { - vwd()->close(); - return FatVolume::wipe(pr); - } - - private: - FatFile m_vwd; -}; -#endif // FatFileSystem_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatLib.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatLib.h deleted file mode 100644 index f054ea28..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatLib.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatLib_h -#define FatLib_h -#include "ArduinoFiles.h" -#include "FatFileSystem.h" -#include "FatLibConfig.h" -#include "FatVolume.h" -#include "FatFile.h" -#include "StdioStream.h" -//------------------------------------------------------------------------------ -/** FatFileSystem version YYYYMMDD */ -#define FAT_LIB_VERSION 20150131 -#endif // FatLib_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatLibConfig.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatLibConfig.h deleted file mode 100644 index 8cd52654..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatLibConfig.h +++ /dev/null @@ -1,146 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief configuration definitions - */ -#ifndef FatLibConfig_h -#define FatLibConfig_h -#include -// Allow this file to override defaults. -#include "SdFatConfig.h" - -#ifdef __AVR__ -#include -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** - * Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). - * Long File Name are limited to a maximum length of 255 characters. - * - * This implementation allows 7-bit characters in the range - * 0X20 to 0X7E. The following characters are not allowed: - * - * < (less than) - * > (greater than) - * : (colon) - * " (double quote) - * / (forward slash) - * \ (backslash) - * | (vertical bar or pipe) - * ? (question mark) - * * (asterisk) - * - */ -#ifndef USE_LONG_FILE_NAMES -#define USE_LONG_FILE_NAMES 1 -#endif // USE_LONG_FILE_NAMES -//------------------------------------------------------------------------------ -/** - * Set USE_SEPARATE_FAT_CACHE non-zero to use a second 512 byte cache - * for FAT table entries. Improves performance for large writes that - * are not a multiple of 512 bytes. - */ -#ifndef USE_SEPARATE_FAT_CACHE -#ifdef __arm__ -#define USE_SEPARATE_FAT_CACHE 1 -#else // __arm__ -#define USE_SEPARATE_FAT_CACHE 0 -#endif // __arm__ -#endif // USE_SEPARATE_FAT_CACHE -//------------------------------------------------------------------------------ -/** - * Set USE_MULTI_BLOCK_IO non-zero to use multi-block SD read/write. - * - * Don't use mult-block read/write on small AVR boards. - */ -#ifndef USE_MULTI_BLOCK_IO -#if defined(RAMEND) && RAMEND < 3000 -#define USE_MULTI_BLOCK_IO 0 -#else // RAMEND -#define USE_MULTI_BLOCK_IO 1 -#endif // RAMEND -#endif // USE_MULTI_BLOCK_IO -//------------------------------------------------------------------------------ -/** - * Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters - * updated. This will increase the speed of the freeClusterCount() call - * after the first call. Extra flash will be required. - */ -#ifndef MAINTAIN_FREE_CLUSTER_COUNT -#define MAINTAIN_FREE_CLUSTER_COUNT 0 -#endif // MAINTAIN_FREE_CLUSTER_COUNT -//------------------------------------------------------------------------------ -/** - * Set DESTRUCTOR_CLOSES_FILE non-zero to close a file in its destructor. - * - * Causes use of lots of heap in ARM. - */ -#ifndef DESTRUCTOR_CLOSES_FILE -#define DESTRUCTOR_CLOSES_FILE 0 -#endif // DESTRUCTOR_CLOSES_FILE -//------------------------------------------------------------------------------ -/** - * Call flush for endl if ENDL_CALLS_FLUSH is non-zero - * - * The standard for iostreams is to call flush. This is very costly for - * SdFat. Each call to flush causes 2048 bytes of I/O to the SD. - * - * SdFat has a single 512 byte buffer for I/O so it must write the current - * data block to the SD, read the directory block from the SD, update the - * directory entry, write the directory block to the SD and read the data - * block back into the buffer. - * - * The SD flash memory controller is not designed for this many rewrites - * so performance may be reduced by more than a factor of 100. - * - * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force - * all data to be written to the SD. - */ -#ifndef ENDL_CALLS_FLUSH -#define ENDL_CALLS_FLUSH 0 -#endif // ENDL_CALLS_FLUSH -//------------------------------------------------------------------------------ -/** - * Allow FAT12 volumes if FAT12_SUPPORT is non-zero. - * FAT12 has not been well tested. - */ -#ifndef FAT12_SUPPORT -#define FAT12_SUPPORT 0 -#endif // FAT12_SUPPORT -//------------------------------------------------------------------------------ -/** - * Enable Extra features for Arduino. - */ -// #define ENABLE_ARDUINO_FEATURES 0 ////////////////////////FIX THIS ///////////////// -#ifndef ENABLE_ARDUINO_FEATURES -#include -#if defined(ARDUINO) || defined(PLATFORM_ID) || defined(DOXYGEN) -#define ENABLE_ARDUINO_FEATURES 1 -#else // #if defined(ARDUINO) || defined(DOXYGEN) -#define ENABLE_ARDUINO_FEATURES 0 -#endif // defined(ARDUINO) || defined(DOXYGEN) -#endif // ENABLE_ARDUINO_FEATURES -#endif // FatLibConfig_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatStructs.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatStructs.h deleted file mode 100644 index 0727d108..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatStructs.h +++ /dev/null @@ -1,882 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatStructs_h -#define FatStructs_h -/** - * \file - * \brief FAT file structures - */ -/* - * mostly from Microsoft document fatgen103.doc - * http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx - */ -//------------------------------------------------------------------------------ -/** Value for byte 510 of boot block or MBR */ -const uint8_t BOOTSIG0 = 0X55; -/** Value for byte 511 of boot block or MBR */ -const uint8_t BOOTSIG1 = 0XAA; -/** Value for bootSignature field int FAT/FAT32 boot sector */ -const uint8_t EXTENDED_BOOT_SIG = 0X29; -//------------------------------------------------------------------------------ -/** - * \struct partitionTable - * \brief MBR partition table entry - * - * A partition table entry for a MBR formatted storage device. - * The MBR partition table has four entries. - */ -struct partitionTable { - /** - * Boot Indicator . Indicates whether the volume is the active - * partition. Legal values include: 0X00. Do not use for booting. - * 0X80 Active partition. - */ - uint8_t boot; - /** - * Head part of Cylinder-head-sector address of the first block in - * the partition. Legal values are 0-255. Only used in old PC BIOS. - */ - uint8_t beginHead; - /** - * Sector part of Cylinder-head-sector address of the first block in - * the partition. Legal values are 1-63. Only used in old PC BIOS. - */ - unsigned beginSector : 6; - /** High bits cylinder for first block in partition. */ - unsigned beginCylinderHigh : 2; - /** - * Combine beginCylinderLow with beginCylinderHigh. Legal values - * are 0-1023. Only used in old PC BIOS. - */ - uint8_t beginCylinderLow; - /** - * Partition type. See defines that begin with PART_TYPE_ for - * some Microsoft partition types. - */ - uint8_t type; - /** - * head part of cylinder-head-sector address of the last sector in the - * partition. Legal values are 0-255. Only used in old PC BIOS. - */ - uint8_t endHead; - /** - * Sector part of cylinder-head-sector address of the last sector in - * the partition. Legal values are 1-63. Only used in old PC BIOS. - */ - unsigned endSector : 6; - /** High bits of end cylinder */ - unsigned endCylinderHigh : 2; - /** - * Combine endCylinderLow with endCylinderHigh. Legal values - * are 0-1023. Only used in old PC BIOS. - */ - uint8_t endCylinderLow; - /** Logical block address of the first block in the partition. */ - uint32_t firstSector; - /** Length of the partition, in blocks. */ - uint32_t totalSectors; -} __attribute__((packed)); -/** Type name for partitionTable */ -typedef struct partitionTable part_t; -//------------------------------------------------------------------------------ -/** - * \struct masterBootRecord - * - * \brief Master Boot Record - * - * The first block of a storage device that is formatted with a MBR. - */ -struct masterBootRecord { - /** Code Area for master boot program. */ - uint8_t codeArea[440]; - /** Optional Windows NT disk signature. May contain boot code. */ - uint32_t diskSignature; - /** Usually zero but may be more boot code. */ - uint16_t usuallyZero; - /** Partition tables. */ - part_t part[4]; - /** First MBR signature byte. Must be 0X55 */ - uint8_t mbrSig0; - /** Second MBR signature byte. Must be 0XAA */ - uint8_t mbrSig1; -} __attribute__((packed)); -/** Type name for masterBootRecord */ -typedef struct masterBootRecord mbr_t; -//------------------------------------------------------------------------------ -/** - * \struct biosParmBlock - * - * \brief BIOS parameter block - * - * The BIOS parameter block describes the physical layout of a FAT volume. - */ -struct biosParmBlock { - /** - * Count of bytes per sector. This value may take on only the - * following values: 512, 1024, 2048 or 4096 - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. - */ - uint8_t sectorsPerCluster; - /** - * Number of sectors before the first FAT. - * This value must not be zero. - */ - uint16_t reservedSectorCount; - /** The count of FAT data structures on the volume. This field should - * always contain the value 2 for any FAT volume of any type. - */ - uint8_t fatCount; - /** - * For FAT12 and FAT16 volumes, this field contains the count of - * 32-byte directory entries in the root directory. For FAT32 volumes, - * this field must be set to 0. For FAT12 and FAT16 volumes, this - * value should always specify a count that when multiplied by 32 - * results in a multiple of bytesPerSector. FAT16 volumes should - * use the value 512. - */ - uint16_t rootDirEntryCount; - /** - * This field is the old 16-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then totalSectors32 - * must be nonzero. For FAT32 volumes, this field must be 0. For - * FAT12 and FAT16 volumes, this field contains the sector count, and - * totalSectors32 is 0 if the total sector count fits - * (is less than 0x10000). - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (nonremovable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * Count of sectors occupied by one FAT on FAT12/FAT16 volumes. - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrtack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * This field is the new 32-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then - * totalSectors16 must be nonzero. - */ - uint32_t totalSectors32; - /** - * Count of sectors occupied by one FAT on FAT32 volumes. - */ - uint32_t sectorsPerFat32; - /** - * This field is only defined for FAT32 media and does not exist on - * FAT12 and FAT16 media. - * Bits 0-3 -- Zero-based number of active FAT. - * Only valid if mirroring is disabled. - * Bits 4-6 -- Reserved. - * Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs. - * -- 1 means only one FAT is active; it is the one referenced in bits 0-3. - * Bits 8-15 -- Reserved. - */ - uint16_t fat32Flags; - /** - * FAT32 version. High byte is major revision number. - * Low byte is minor revision number. Only 0.0 define. - */ - uint16_t fat32Version; - /** - * Cluster number of the first cluster of the root directory for FAT32. - * This usually 2 but not required to be 2. - */ - uint32_t fat32RootCluster; - /** - * Sector number of FSINFO structure in the reserved area of the - * FAT32 volume. Usually 1. - */ - uint16_t fat32FSInfo; - /** - * If nonzero, indicates the sector number in the reserved area - * of the volume of a copy of the boot record. Usually 6. - * No value other than 6 is recommended. - */ - uint16_t fat32BackBootBlock; - /** - * Reserved for future expansion. Code that formats FAT32 volumes - * should always set all of the bytes of this field to 0. - */ - uint8_t fat32Reserved[12]; -} __attribute__((packed)); -/** Type name for biosParmBlock */ -typedef struct biosParmBlock bpb_t; -//------------------------------------------------------------------------------ -/** - * \struct fat_boot - * - * \brief Boot sector for a FAT12/FAT16 volume. - * - */ -struct fat_boot { - /** - * The first three bytes of the boot sector must be valid, - * executable x 86-based CPU instructions. This includes a - * jump instruction that skips the next non-executable bytes. - */ - uint8_t jump[3]; - /** - * This is typically a string of characters that identifies - * the operating system that formatted the volume. - */ - char oemId[8]; - /** - * The size of a hardware sector. Valid decimal values for this - * field are 512, 1024, 2048, and 4096. For most disks used in - * the United States, the value of this field is 512. - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. - */ - uint8_t sectorsPerCluster; - /** - * The number of sectors preceding the start of the first FAT, - * including the boot sector. The value of this field is always 1. - */ - uint16_t reservedSectorCount; - /** - * The number of copies of the FAT on the volume. - * The value of this field is always 2. - */ - uint8_t fatCount; - /** - * For FAT12 and FAT16 volumes, this field contains the count of - * 32-byte directory entries in the root directory. For FAT32 volumes, - * this field must be set to 0. For FAT12 and FAT16 volumes, this - * value should always specify a count that when multiplied by 32 - * results in a multiple of bytesPerSector. FAT16 volumes should - * use the value 512. - */ - uint16_t rootDirEntryCount; - /** - * This field is the old 16-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then totalSectors32 - * must be non-zero. For FAT32 volumes, this field must be 0. For - * FAT12 and FAT16 volumes, this field contains the sector count, and - * totalSectors32 is 0 if the total sector count fits - * (is less than 0x10000). - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (non-removable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * Count of sectors occupied by one FAT on FAT12/FAT16 volumes. - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * This field is the new 32-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then - * totalSectors16 must be non-zero. - */ - uint32_t totalSectors32; - /** - * Related to the BIOS physical drive number. Floppy drives are - * identified as 0x00 and physical hard disks are identified as - * 0x80, regardless of the number of physical disk drives. - * Typically, this value is set prior to issuing an INT 13h BIOS - * call to specify the device to access. The value is only - * relevant if the device is a boot device. - */ - uint8_t driveNumber; - /** used by Windows NT - should be zero for FAT */ - uint8_t reserved1; - /** 0X29 if next three fields are valid */ - uint8_t bootSignature; - /** - * A random serial number created when formatting a disk, - * which helps to distinguish between disks. - * Usually generated by combining date and time. - */ - uint32_t volumeSerialNumber; - /** - * A field once used to store the volume label. The volume label - * is now stored as a special file in the root directory. - */ - char volumeLabel[11]; - /** - * A field with a value of either FAT, FAT12 or FAT16, - * depending on the disk format. - */ - char fileSystemType[8]; - /** X86 boot code */ - uint8_t bootCode[448]; - /** must be 0X55 */ - uint8_t bootSectorSig0; - /** must be 0XAA */ - uint8_t bootSectorSig1; -} __attribute__((packed)); -/** Type name for FAT Boot Sector */ -typedef struct fat_boot fat_boot_t; -//------------------------------------------------------------------------------ -/** - * \struct fat32_boot - * - * \brief Boot sector for a FAT32 volume. - * - */ -struct fat32_boot { - /** - * The first three bytes of the boot sector must be valid, - * executable x 86-based CPU instructions. This includes a - * jump instruction that skips the next non-executable bytes. - */ - uint8_t jump[3]; - /** - * This is typically a string of characters that identifies - * the operating system that formatted the volume. - */ - char oemId[8]; - /** - * The size of a hardware sector. Valid decimal values for this - * field are 512, 1024, 2048, and 4096. For most disks used in - * the United States, the value of this field is 512. - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. - */ - uint8_t sectorsPerCluster; - /** - * The number of sectors preceding the start of the first FAT, - * including the boot sector. Must not be zero - */ - uint16_t reservedSectorCount; - /** - * The number of copies of the FAT on the volume. - * The value of this field is always 2. - */ - uint8_t fatCount; - /** - * FAT12/FAT16 only. For FAT32 volumes, this field must be set to 0. - */ - uint16_t rootDirEntryCount; - /** - * For FAT32 volumes, this field must be 0. - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (non-removable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * Contains the total number of sectors in the FAT32 volume. - */ - uint32_t totalSectors32; - /** - * Count of sectors occupied by one FAT on FAT32 volumes. - */ - uint32_t sectorsPerFat32; - /** - * This field is only defined for FAT32 media and does not exist on - * FAT12 and FAT16 media. - * Bits 0-3 -- Zero-based number of active FAT. - * Only valid if mirroring is disabled. - * Bits 4-6 -- Reserved. - * Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs. - * -- 1 means only one FAT is active; it is the one referenced - * in bits 0-3. - * Bits 8-15 -- Reserved. - */ - uint16_t fat32Flags; - /** - * FAT32 version. High byte is major revision number. - * Low byte is minor revision number. Only 0.0 define. - */ - uint16_t fat32Version; - /** - * Cluster number of the first cluster of the root directory for FAT32. - * This usually 2 but not required to be 2. - */ - uint32_t fat32RootCluster; - /** - * Sector number of FSINFO structure in the reserved area of the - * FAT32 volume. Usually 1. - */ - uint16_t fat32FSInfo; - /** - * If non-zero, indicates the sector number in the reserved area - * of the volume of a copy of the boot record. Usually 6. - * No value other than 6 is recommended. - */ - uint16_t fat32BackBootBlock; - /** - * Reserved for future expansion. Code that formats FAT32 volumes - * should always set all of the bytes of this field to 0. - */ - uint8_t fat32Reserved[12]; - /** - * Related to the BIOS physical drive number. Floppy drives are - * identified as 0x00 and physical hard disks are identified as - * 0x80, regardless of the number of physical disk drives. - * Typically, this value is set prior to issuing an INT 13h BIOS - * call to specify the device to access. The value is only - * relevant if the device is a boot device. - */ - uint8_t driveNumber; - /** used by Windows NT - should be zero for FAT */ - uint8_t reserved1; - /** 0X29 if next three fields are valid */ - uint8_t bootSignature; - /** - * A random serial number created when formatting a disk, - * which helps to distinguish between disks. - * Usually generated by combining date and time. - */ - uint32_t volumeSerialNumber; - /** - * A field once used to store the volume label. The volume label - * is now stored as a special file in the root directory. - */ - char volumeLabel[11]; - /** - * A text field with a value of FAT32. - */ - char fileSystemType[8]; - /** X86 boot code */ - uint8_t bootCode[420]; - /** must be 0X55 */ - uint8_t bootSectorSig0; - /** must be 0XAA */ - uint8_t bootSectorSig1; -} __attribute__((packed)); -/** Type name for FAT32 Boot Sector */ -typedef struct fat32_boot fat32_boot_t; -//------------------------------------------------------------------------------ -/** Lead signature for a FSINFO sector */ -const uint32_t FSINFO_LEAD_SIG = 0x41615252; -/** Struct signature for a FSINFO sector */ -const uint32_t FSINFO_STRUCT_SIG = 0x61417272; -/** - * \struct fat32_fsinfo - * - * \brief FSINFO sector for a FAT32 volume. - * - */ -struct fat32_fsinfo { - /** must be 0X52, 0X52, 0X61, 0X41 */ - uint32_t leadSignature; - /** must be zero */ - uint8_t reserved1[480]; - /** must be 0X72, 0X72, 0X41, 0X61 */ - uint32_t structSignature; - /** - * Contains the last known free cluster count on the volume. - * If the value is 0xFFFFFFFF, then the free count is unknown - * and must be computed. Any other value can be used, but is - * not necessarily correct. It should be range checked at least - * to make sure it is <= volume cluster count. - */ - uint32_t freeCount; - /** - * This is a hint for the FAT driver. It indicates the cluster - * number at which the driver should start looking for free clusters. - * If the value is 0xFFFFFFFF, then there is no hint and the driver - * should start looking at cluster 2. - */ - uint32_t nextFree; - /** must be zero */ - uint8_t reserved2[12]; - /** must be 0X00, 0X00, 0X55, 0XAA */ - uint8_t tailSignature[4]; -} __attribute__((packed)); -/** Type name for FAT32 FSINFO Sector */ -typedef struct fat32_fsinfo fat32_fsinfo_t; -//------------------------------------------------------------------------------ -// End Of Chain values for FAT entries -/** FAT12 end of chain value used by Microsoft. */ -const uint16_t FAT12EOC = 0XFFF; -/** Minimum value for FAT12 EOC. Use to test for EOC. */ -const uint16_t FAT12EOC_MIN = 0XFF8; -/** FAT16 end of chain value used by Microsoft. */ -const uint16_t FAT16EOC = 0XFFFF; -/** Minimum value for FAT16 EOC. Use to test for EOC. */ -const uint16_t FAT16EOC_MIN = 0XFFF8; -/** FAT32 end of chain value used by Microsoft. */ -const uint32_t FAT32EOC = 0X0FFFFFFF; -/** Minimum value for FAT32 EOC. Use to test for EOC. */ -const uint32_t FAT32EOC_MIN = 0X0FFFFFF8; -/** Mask a for FAT32 entry. Entries are 28 bits. */ -const uint32_t FAT32MASK = 0X0FFFFFFF; -//------------------------------------------------------------------------------ -/** - * \struct directoryEntry - * \brief FAT short directory entry - * - * Short means short 8.3 name, not the entry size. - * - * Date Format. A FAT directory entry date stamp is a 16-bit field that is - * basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the - * format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the - * 16-bit word): - * - * Bits 9-15: Count of years from 1980, valid value range 0-127 - * inclusive (1980-2107). - * - * Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive. - * - * Bits 0-4: Day of month, valid value range 1-31 inclusive. - * - * Time Format. A FAT directory entry time stamp is a 16-bit field that has - * a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the - * 16-bit word, bit 15 is the MSB of the 16-bit word). - * - * Bits 11-15: Hours, valid value range 0-23 inclusive. - * - * Bits 5-10: Minutes, valid value range 0-59 inclusive. - * - * Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds). - * - * The valid time range is from Midnight 00:00:00 to 23:59:58. - */ -struct directoryEntry { - /** Short 8.3 name. - * - * The first eight bytes contain the file name with blank fill. - * The last three bytes contain the file extension with blank fill. - */ - uint8_t name[11]; - /** Entry attributes. - * - * The upper two bits of the attribute byte are reserved and should - * always be set to 0 when a file is created and never modified or - * looked at after that. See defines that begin with DIR_ATT_. - */ - uint8_t attributes; - /** - * Reserved for use by Windows NT. Set value to 0 when a file is - * created and never modify or look at it after that. - */ - uint8_t reservedNT; - /** - * The granularity of the seconds part of creationTime is 2 seconds - * so this field is a count of tenths of a second and its valid - * value range is 0-199 inclusive. (WHG note - seems to be hundredths) - */ - uint8_t creationTimeTenths; - /** Time file was created. */ - uint16_t creationTime; - /** Date file was created. */ - uint16_t creationDate; - /** - * Last access date. Note that there is no last access time, only - * a date. This is the date of last read or write. In the case of - * a write, this should be set to the same date as lastWriteDate. - */ - uint16_t lastAccessDate; - /** - * High word of this entry's first cluster number (always 0 for a - * FAT12 or FAT16 volume). - */ - uint16_t firstClusterHigh; - /** Time of last write. File creation is considered a write. */ - uint16_t lastWriteTime; - /** Date of last write. File creation is considered a write. */ - uint16_t lastWriteDate; - /** Low word of this entry's first cluster number. */ - uint16_t firstClusterLow; - /** 32-bit unsigned holding this file's size in bytes. */ - uint32_t fileSize; -} __attribute__((packed)); -/** Type name for directoryEntry */ -typedef struct directoryEntry dir_t; -//------------------------------------------------------------------------------ -// Definitions for directory entries -// -/** escape for name[0] = 0XE5 */ -const uint8_t DIR_NAME_0XE5 = 0X05; -/** name[0] value for entry that is free after being "deleted" */ -const uint8_t DIR_NAME_DELETED = 0XE5; -/** name[0] value for entry that is free and no allocated entries follow */ -const uint8_t DIR_NAME_FREE = 0X00; -/** file is read-only */ -const uint8_t DIR_ATT_READ_ONLY = 0X01; -/** File should e hidden in directory listings */ -const uint8_t DIR_ATT_HIDDEN = 0X02; -/** Entry is for a system file */ -const uint8_t DIR_ATT_SYSTEM = 0X04; -/** Directory entry contains the volume label */ -const uint8_t DIR_ATT_VOLUME_ID = 0X08; -/** Entry is for a directory */ -const uint8_t DIR_ATT_DIRECTORY = 0X10; -/** Old DOS archive bit for backup support */ -const uint8_t DIR_ATT_ARCHIVE = 0X20; -/** Test value for long name entry. Test is - (d->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME. */ -const uint8_t DIR_ATT_LONG_NAME = 0X0F; -/** Test mask for long name entry */ -const uint8_t DIR_ATT_LONG_NAME_MASK = 0X3F; -/** defined attribute bits */ -const uint8_t DIR_ATT_DEFINED_BITS = 0X3F; - -/** Mask for file/subdirectory tests */ -const uint8_t DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY); - -/** Filename base-name is all lower case */ -const uint8_t DIR_NT_LC_BASE = 0X08; -/** Filename extension is all lower case.*/ -const uint8_t DIR_NT_LC_EXT = 0X10; - - -/** Directory entry is for a file - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a normal file else false. - */ -static inline uint8_t DIR_IS_FILE(const dir_t* dir) { - return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == 0; -} -/** Directory entry is for a file or subdirectory - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a normal file or subdirectory else false. - */ -static inline uint8_t DIR_IS_FILE_OR_SUBDIR(const dir_t* dir) { - return (dir->attributes & DIR_ATT_VOLUME_ID) == 0; -} -/** Directory entry is part of a long name - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for part of a long name else false. - */ -static inline uint8_t DIR_IS_LONG_NAME(const dir_t* dir) { - return dir->attributes == DIR_ATT_LONG_NAME; -} -/** Directory entry is hidden - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is hidden else false. - */ -static inline uint8_t DIR_IS_HIDDEN(const dir_t* dir) { - return dir->attributes & DIR_ATT_HIDDEN; -} -/** Directory entry is for a subdirectory - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a subdirectory else false. - */ -static inline uint8_t DIR_IS_SUBDIR(const dir_t* dir) { - return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == DIR_ATT_DIRECTORY; -} -/** Directory entry is system type - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is system else false. - */ -static inline uint8_t DIR_IS_SYSTEM(const dir_t* dir) { - return dir->attributes & DIR_ATT_SYSTEM; -} -/** date field for FAT directory entry - * \param[in] year [1980,2107] - * \param[in] month [1,12] - * \param[in] day [1,31] - * - * \return Packed date for dir_t entry. - */ -static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) { - return (year - 1980) << 9 | month << 5 | day; -} -/** year part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted year [1980,2107] - */ -static inline uint16_t FAT_YEAR(uint16_t fatDate) { - return 1980 + (fatDate >> 9); -} -/** month part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted month [1,12] - */ -static inline uint8_t FAT_MONTH(uint16_t fatDate) { - return (fatDate >> 5) & 0XF; -} -/** day part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted day [1,31] - */ -static inline uint8_t FAT_DAY(uint16_t fatDate) { - return fatDate & 0X1F; -} -/** time field for FAT directory entry - * \param[in] hour [0,23] - * \param[in] minute [0,59] - * \param[in] second [0,59] - * - * \return Packed time for dir_t entry. - */ -static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) { - return hour << 11 | minute << 5 | second >> 1; -} -/** hour part of FAT directory time field - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted hour [0,23] - */ -static inline uint8_t FAT_HOUR(uint16_t fatTime) { - return fatTime >> 11; -} -/** minute part of FAT directory time field - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted minute [0,59] - */ -static inline uint8_t FAT_MINUTE(uint16_t fatTime) { - return (fatTime >> 5) & 0X3F; -} -/** second part of FAT directory time field - * \note second/2 is stored in packed time. - * - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted second [0,58] - */ -static inline uint8_t FAT_SECOND(uint16_t fatTime) { - return 2*(fatTime & 0X1F); -} -/** Default date for file timestamps is 1 Jan 2000 */ -const uint16_t FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1; -/** Default time for file timestamp is 1 am */ -const uint16_t FAT_DEFAULT_TIME = (1 << 11); -//------------------------------------------------------------------------------ -/** Dimension of first name field in long directory entry */ -const uint8_t LDIR_NAME1_DIM = 5; -/** Dimension of first name field in long directory entry */ -const uint8_t LDIR_NAME2_DIM = 6; -/** Dimension of first name field in long directory entry */ -const uint8_t LDIR_NAME3_DIM = 2; -/** - * \struct longDirectoryEntry - * \brief FAT long directory entry - */ -struct longDirectoryEntry { - /** - * The order of this entry in the sequence of long dir entries - * associated with the short dir entry at the end of the long dir set. - * - * If masked with 0X40 (LAST_LONG_ENTRY), this indicates the - * entry is the last long dir entry in a set of long dir entries. - * All valid sets of long dir entries must begin with an entry having - * this mask. - */ - uint8_t ord; - /** Characters 1-5 of the long-name sub-component in this entry. */ - uint16_t name1[LDIR_NAME1_DIM]; - /** Attributes - must be ATTR_LONG_NAME */ - uint8_t attr; - /** - * If zero, indicates a directory entry that is a sub-component of a - * long name. NOTE: Other values reserved for future extensions. - * - * Non-zero implies other directory entry types. - */ - uint8_t type; - /** - * Checksum of name in the short dir entry at the end of the - * long dir set. - */ - uint8_t chksum; - /** Characters 6-11 of the long-name sub-component in this entry. */ - uint16_t name2[LDIR_NAME2_DIM]; - /** Must be ZERO. This is an artifact of the FAT "first cluster" */ - uint16_t mustBeZero; - /** Characters 12 and 13 of the long-name sub-component in this entry. */ - uint16_t name3[LDIR_NAME3_DIM]; -} __attribute__((packed)); -/** Type name for longDirectoryEntry */ -typedef struct longDirectoryEntry ldir_t; -/** - * Ord mast that indicates the entry is the last long dir entry in a - * set of long dir entries. All valid sets of long dir entries must - * begin with an entry having this mask. - */ -const uint8_t LDIR_ORD_LAST_LONG_ENTRY = 0X40; -#endif // FatStructs_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatVolume.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatVolume.cpp deleted file mode 100644 index 4a606a0e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatVolume.cpp +++ /dev/null @@ -1,625 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -#include "FatVolume.h" -//------------------------------------------------------------------------------ -cache_t* FatCache::read(uint32_t lbn, uint8_t option) { - if (m_lbn != lbn) { - if (!sync()) { - DBG_FAIL_MACRO; - goto fail; - } - if (!(option & CACHE_OPTION_NO_READ)) { - if (!m_vol->readBlock(lbn, m_block.data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_status = 0; - m_lbn = lbn; - } - m_status |= option & CACHE_STATUS_MASK; - return &m_block; - -fail: - - return 0; -} -//------------------------------------------------------------------------------ -bool FatCache::sync() { - if (m_status & CACHE_STATUS_DIRTY) { - if (!m_vol->writeBlock(m_lbn, m_block.data)) { - DBG_FAIL_MACRO; - goto fail; - } - // mirror second FAT - if (m_status & CACHE_STATUS_MIRROR_FAT) { - uint32_t lbn = m_lbn + m_vol->blocksPerFat(); - if (!m_vol->writeBlock(lbn, m_block.data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_status &= ~CACHE_STATUS_DIRTY; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatVolume::allocateCluster(uint32_t current, uint32_t* next) { - uint32_t find; - bool setStart; - if (m_allocSearchStart < current) { - // Try to keep file contiguous. Start just after current cluster. - find = current; - setStart = false; - } else { - find = m_allocSearchStart; - setStart = true; - } - while (1) { - find++; - if (find > m_lastCluster) { - if (setStart) { - // Can't find space, checked all clusters. - DBG_FAIL_MACRO; - goto fail; - } - find = m_allocSearchStart; - setStart = true; - continue; - } - if (find == current) { - // Can't find space, already searched clusters after current. - DBG_FAIL_MACRO; - goto fail; - } - uint32_t f; - int8_t fg = fatGet(find, &f); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg && f == 0) { - break; - } - } - if (setStart) { - m_allocSearchStart = find; - } - // Mark end of chain. - if (!fatPutEOC(find)) { - DBG_FAIL_MACRO; - goto fail; - } - if (current) { - // Link clusters. - if (!fatPut(current, find)) { - DBG_FAIL_MACRO; - goto fail; - } - } - updateFreeClusterCount(-1); - *next = find; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -// find a contiguous group of clusters -bool FatVolume::allocContiguous(uint32_t count, - uint32_t* firstCluster, uint32_t startCluster) { - // flag to save place to start next search - bool setStart; - // start of group - uint32_t bgnCluster; - // end of group - uint32_t endCluster; - if (startCluster != 0) { - bgnCluster = startCluster; - setStart = false; - } else { - // Start at cluster after last allocated cluster. - bgnCluster = m_allocSearchStart + 1; - setStart = true; - } - endCluster = bgnCluster; - // search the FAT for free clusters - while (1) { - if (endCluster > m_lastCluster) { - // Can't find space. - DBG_FAIL_MACRO; - goto fail; - } - uint32_t f; - int8_t fg = fatGet(endCluster, &f); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (f || fg == 0) { - if (startCluster) { - DBG_FAIL_MACRO; - goto fail; - } - // don't update search start if unallocated clusters before endCluster. - if (bgnCluster != endCluster) { - setStart = false; - } - // cluster in use try next cluster as bgnCluster - bgnCluster = endCluster + 1; - } else if ((endCluster - bgnCluster + 1) == count) { - // done - found space - break; - } - endCluster++; - } - // Remember possible next free cluster. - if (setStart) { - m_allocSearchStart = endCluster; - } - // mark end of chain - if (!fatPutEOC(endCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - // link clusters - while (endCluster > bgnCluster) { - if (!fatPut(endCluster - 1, endCluster)) { - DBG_FAIL_MACRO; - goto fail; - } - endCluster--; - } - // Maintain count of free clusters. - updateFreeClusterCount(-count); - - // return first cluster number to caller - *firstCluster = bgnCluster; - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -uint32_t FatVolume::clusterFirstBlock(uint32_t cluster) const { - return m_dataStartBlock + ((cluster - 2) << m_clusterSizeShift); -} -//------------------------------------------------------------------------------ -// Fetch a FAT entry - return -1 error, 0 EOC, else 1. -int8_t FatVolume::fatGet(uint32_t cluster, uint32_t* value) { - uint32_t lba; - uint32_t next; - cache_t* pc; - - // error if reserved cluster of beyond FAT - if (cluster < 2 || cluster > m_lastCluster) { - DBG_FAIL_MACRO; - goto fail; - } - - if (fatType() == 32) { - lba = m_fatStartBlock + (cluster >> 7); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - next = pc->fat32[cluster & 0X7F] & FAT32MASK; - goto done; - } - if (fatType() == 16) { - lba = m_fatStartBlock + ((cluster >> 8) & 0XFF); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - next = pc->fat16[cluster & 0XFF]; - goto done; - } - if (FAT12_SUPPORT && fatType() == 12) { - uint16_t index = cluster; - index += index >> 1; - lba = m_fatStartBlock + (index >> 9); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - index &= 0X1FF; - uint16_t tmp = pc->data[index]; - index++; - if (index == 512) { - pc = cacheFetchFat(lba + 1, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - index = 0; - } - tmp |= pc->data[index] << 8; - next = cluster & 1 ? tmp >> 4 : tmp & 0XFFF; - goto done; - } else { - DBG_FAIL_MACRO; - goto fail; - } -done: - if (isEOC(next)) { - return 0; - } - *value = next; - return 1; - -fail: - return -1; -} -//------------------------------------------------------------------------------ -// Store a FAT entry -bool FatVolume::fatPut(uint32_t cluster, uint32_t value) { - uint32_t lba; - cache_t* pc; - - // error if reserved cluster of beyond FAT - if (cluster < 2 || cluster > m_lastCluster) { - DBG_FAIL_MACRO; - goto fail; - } - - if (fatType() == 32) { - lba = m_fatStartBlock + (cluster >> 7); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - pc->fat32[cluster & 0X7F] = value; - return true; - } - - if (fatType() == 16) { - lba = m_fatStartBlock + ((cluster >> 8) & 0XFF); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - pc->fat16[cluster & 0XFF] = value; - return true; - } - - if (FAT12_SUPPORT && fatType() == 12) { - uint16_t index = cluster; - index += index >> 1; - lba = m_fatStartBlock + (index >> 9); - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - index &= 0X1FF; - uint8_t tmp = value; - if (cluster & 1) { - tmp = (pc->data[index] & 0XF) | tmp << 4; - } - pc->data[index] = tmp; - - index++; - if (index == 512) { - lba++; - index = 0; - pc = cacheFetchFat(lba, FatCache::CACHE_FOR_WRITE); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - } - tmp = value >> 4; - if (!(cluster & 1)) { - tmp = ((pc->data[index] & 0XF0)) | tmp >> 4; - } - pc->data[index] = tmp; - return true; - } else { - DBG_FAIL_MACRO; - goto fail; - } - -fail: - return false; -} -//------------------------------------------------------------------------------ -// free a cluster chain -bool FatVolume::freeChain(uint32_t cluster) { - uint32_t next; - int8_t fg; - do { - fg = fatGet(cluster, &next); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - // free cluster - if (!fatPut(cluster, 0)) { - DBG_FAIL_MACRO; - goto fail; - } - // Add one to count of free clusters. - updateFreeClusterCount(1); - - if (cluster <= m_allocSearchStart) { - m_allocSearchStart = cluster - 1; - } - cluster = next; - } while (fg); - - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -int32_t FatVolume::freeClusterCount() { -#if MAINTAIN_FREE_CLUSTER_COUNT - if (m_freeClusterCount >= 0) { - return m_freeClusterCount; - } -#endif // MAINTAIN_FREE_CLUSTER_COUNT - uint32_t free = 0; - uint32_t lba; - uint32_t todo = m_lastCluster + 1; - uint16_t n; - - if (FAT12_SUPPORT && fatType() == 12) { - for (unsigned i = 2; i < todo; i++) { - uint32_t c; - int8_t fg = fatGet(i, &c); - if (fg < 0) { - DBG_FAIL_MACRO; - goto fail; - } - if (fg && c == 0) { - free++; - } - } - } else if (fatType() == 16 || fatType() == 32) { - lba = m_fatStartBlock; - while (todo) { - cache_t* pc = cacheFetchFat(lba++, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - n = fatType() == 16 ? 256 : 128; - if (todo < n) { - n = todo; - } - if (fatType() == 16) { - for (uint16_t i = 0; i < n; i++) { - if (pc->fat16[i] == 0) { - free++; - } - } - } else { - for (uint16_t i = 0; i < n; i++) { - if (pc->fat32[i] == 0) { - free++; - } - } - } - todo -= n; - } - } else { - // invalid FAT type - DBG_FAIL_MACRO; - goto fail; - } - setFreeClusterCount(free); - return free; - -fail: - return -1; -} -//------------------------------------------------------------------------------ -bool FatVolume::init(uint8_t part) { - uint32_t clusterCount; - uint32_t totalBlocks; - uint32_t volumeStartBlock = 0; - fat32_boot_t* fbs; - cache_t* pc; - uint8_t tmp; - m_fatType = 0; - m_allocSearchStart = 1; - m_cache.init(this); -#if USE_SEPARATE_FAT_CACHE - m_fatCache.init(this); -#endif // USE_SEPARATE_FAT_CACHE - // if part == 0 assume super floppy with FAT boot sector in block zero - // if part > 0 assume mbr volume with partition table - if (part) { - if (part > 4) { - DBG_FAIL_MACRO; - goto fail; - } - pc = cacheFetchData(0, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - part_t* p = &pc->mbr.part[part - 1]; - if ((p->boot & 0X7F) != 0 || p->firstSector == 0) { - // not a valid partition - DBG_FAIL_MACRO; - goto fail; - } - volumeStartBlock = p->firstSector; - } - pc = cacheFetchData(volumeStartBlock, FatCache::CACHE_FOR_READ); - if (!pc) { - DBG_FAIL_MACRO; - goto fail; - } - fbs = &(pc->fbs32); - if (fbs->bytesPerSector != 512 || - fbs->fatCount != 2 || - fbs->reservedSectorCount == 0) { - // not valid FAT volume - DBG_FAIL_MACRO; - goto fail; - } - m_blocksPerCluster = fbs->sectorsPerCluster; - m_clusterBlockMask = m_blocksPerCluster - 1; - // determine shift that is same as multiply by m_blocksPerCluster - m_clusterSizeShift = 0; - for (tmp = 1; m_blocksPerCluster != tmp; tmp <<= 1, m_clusterSizeShift++) { - if (tmp == 0) { - DBG_FAIL_MACRO; - goto fail; - } - } - m_blocksPerFat = fbs->sectorsPerFat16 ? - fbs->sectorsPerFat16 : fbs->sectorsPerFat32; - - m_fatStartBlock = volumeStartBlock + fbs->reservedSectorCount; - - // count for FAT16 zero for FAT32 - m_rootDirEntryCount = fbs->rootDirEntryCount; - - // directory start for FAT16 dataStart for FAT32 - m_rootDirStart = m_fatStartBlock + 2 * m_blocksPerFat; - // data start for FAT16 and FAT32 - m_dataStartBlock = m_rootDirStart + ((32 * fbs->rootDirEntryCount + 511)/512); - - // total blocks for FAT16 or FAT32 - totalBlocks = fbs->totalSectors16 ? - fbs->totalSectors16 : fbs->totalSectors32; - // total data blocks - clusterCount = totalBlocks - (m_dataStartBlock - volumeStartBlock); - - // divide by cluster size to get cluster count - clusterCount >>= m_clusterSizeShift; - m_lastCluster = clusterCount + 1; - - // Indicate unknown number of free clusters. - setFreeClusterCount(-1); - // FAT type is determined by cluster count - if (clusterCount < 4085) { - m_fatType = 12; - if (!FAT12_SUPPORT) { - DBG_FAIL_MACRO; - goto fail; - } - } else if (clusterCount < 65525) { - m_fatType = 16; - } else { - m_rootDirStart = fbs->fat32RootCluster; - m_fatType = 32; - } - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -bool FatVolume::wipe(print_t* pr) { - cache_t* cache; - uint16_t count; - uint32_t lbn; - if (!fatType()) { - DBG_FAIL_MACRO; - goto fail; - } - cache = cacheClear(); - if (!cache) { - DBG_FAIL_MACRO; - goto fail; - } - memset(cache->data, 0, 512); - // Zero root. - if (fatType() == 32) { - lbn = clusterFirstBlock(m_rootDirStart); - count = m_blocksPerCluster; - } else { - lbn = m_rootDirStart; - count = m_rootDirEntryCount/16; - } - for (uint32_t n = 0; n < count; n++) { - if (!writeBlock(lbn + n, cache->data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Clear FATs. - count = 2*m_blocksPerFat; - lbn = m_fatStartBlock; - for (uint32_t nb = 0; nb < count; nb++) { - if (pr && (nb & 0XFF) == 0) { - pr->write('.'); - } - if (!writeBlock(lbn + nb, cache->data)) { - DBG_FAIL_MACRO; - goto fail; - } - } - // Reserve first two clusters. - if (fatType() == 32) { - cache->fat32[0] = 0x0FFFFFF8; - cache->fat32[1] = 0x0FFFFFFF; - } else if (fatType() == 16) { - cache->fat16[0] = 0XFFF8; - cache->fat16[1] = 0XFFFF; - } else if (FAT12_SUPPORT && fatType() == 12) { - cache->fat32[0] = 0XFFFFF8; - } else { - DBG_FAIL_MACRO; - goto fail; - } - if (!writeBlock(m_fatStartBlock, cache->data) || - !writeBlock(m_fatStartBlock + m_blocksPerFat, cache->data)) { - DBG_FAIL_MACRO; - goto fail; - } - if (fatType() == 32) { - // Reserve root cluster. - if (!fatPutEOC(m_rootDirStart) || !cacheSync()) { - DBG_FAIL_MACRO; - goto fail; - } - } - if (pr) { - pr->write('\r'); - pr->write('\n'); - } - m_fatType = 0; - return true; - -fail: - m_fatType = 0; - return false; -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatVolume.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatVolume.h deleted file mode 100644 index 7ec23acf..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FatVolume.h +++ /dev/null @@ -1,396 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FatVolume_h -#define FatVolume_h -/** - * \file - * \brief FatVolume class - */ -#include -#include "FatLibConfig.h" -#include "FatStructs.h" -#include "BlockDriver.h" -//------------------------------------------------------------------------------ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -/** Macro for debug. */ -#define DEBUG_MODE 0 -#if DEBUG_MODE -#define DBG_FAIL_MACRO Serial.print(F(__FILE__)); Serial.println(__LINE__); -#define DBG_PRINT_IF(b) if (b) {Serial.println(F(#b)); DBG_FAIL_MACRO;} -#define DBG_HALT_IF(b) if (b) {Serial.println(F(#b));\ - DBG_FAIL_MACRO; while (1);} -#else // DEBUG_MODE -#define DBG_FAIL_MACRO -#define DBG_PRINT_IF(b) -#define DBG_HALT_IF(b) -#endif // DEBUG_MODE -#endif // DOXYGEN_SHOULD_SKIP_THIS -//------------------------------------------------------------------------------ -#if ENABLE_ARDUINO_FEATURES -/** Use Print for Arduino */ -typedef Print print_t; -#else // ENABLE_ARDUINO_FEATURES -/** - * \class CharWriter - * \brief Character output - often serial port. - */ -class CharWriter { - public: - virtual size_t write(char c) = 0; - virtual size_t write(const char* s) = 0; -}; -typedef CharWriter print_t; -#endif // ENABLE_ARDUINO_FEATURES -//------------------------------------------------------------------------------ -// Forward declaration of FatVolume. -class FatVolume; -//------------------------------------------------------------------------------ -/** - * \brief Cache for an raw data block. - */ -union cache_t { - /** Used to access cached file data blocks. */ - uint8_t data[512]; - /** Used to access cached FAT16 entries. */ - uint16_t fat16[256]; - /** Used to access cached FAT32 entries. */ - uint32_t fat32[128]; - /** Used to access cached directory entries. */ - dir_t dir[16]; - /** Used to access a cached Master Boot Record. */ - mbr_t mbr; - /** Used to access to a cached FAT boot sector. */ - fat_boot_t fbs; - /** Used to access to a cached FAT32 boot sector. */ - fat32_boot_t fbs32; - /** Used to access to a cached FAT32 FSINFO sector. */ - fat32_fsinfo_t fsinfo; -}; -//============================================================================== -/** - * \class FatCache - * \brief Block cache. - */ -class FatCache { - public: - /** Cached block is dirty */ - static const uint8_t CACHE_STATUS_DIRTY = 1; - /** Cashed block is FAT entry and must be mirrored in second FAT. */ - static const uint8_t CACHE_STATUS_MIRROR_FAT = 2; - /** Cache block status bits */ - static const uint8_t CACHE_STATUS_MASK - = CACHE_STATUS_DIRTY | CACHE_STATUS_MIRROR_FAT; - /** Sync existing block but do not read new block. */ - static const uint8_t CACHE_OPTION_NO_READ = 4; - /** Cache block for read. */ - static const uint8_t CACHE_FOR_READ = 0; - /** Cache block for write. */ - static const uint8_t CACHE_FOR_WRITE = CACHE_STATUS_DIRTY; - /** Reserve cache block for write - do not read from block device. */ - static const uint8_t CACHE_RESERVE_FOR_WRITE - = CACHE_STATUS_DIRTY | CACHE_OPTION_NO_READ; - /** \return Cache block address. */ - cache_t* block() { - return &m_block; - } - /** Set current block dirty. */ - void dirty() { - m_status |= CACHE_STATUS_DIRTY; - } - /** Initialize the cache. - * \param[in] vol FatVolume that owns this FatCache. - */ - void init(FatVolume *vol) { - m_vol = vol; - invalidate(); - } - /** Invalidate current cache block. */ - void invalidate() { - m_status = 0; - m_lbn = 0XFFFFFFFF; - } - /** \return dirty status */ - bool isDirty() { - return m_status & CACHE_STATUS_DIRTY; - } - /** \return Logical block number for cached block. */ - uint32_t lbn() { - return m_lbn; - } - /** Read a block into the cache. - * \param[in] lbn Block to read. - * \param[in] option mode for cached block. - * \return Address of cached block. */ - cache_t* read(uint32_t lbn, uint8_t option); - /** Write current block if dirty. - * \return true for success else false. - */ - bool sync(); - - private: - uint8_t m_status; - FatVolume* m_vol; - uint32_t m_lbn; - cache_t m_block; -}; -//============================================================================== -/** - * \class FatVolume - * \brief Access FAT16 and FAT32 volumes on raw file devices. - */ -class FatVolume { - public: - /** Create an instance of FatVolume - */ - FatVolume() : m_fatType(0) {} - - /** \return The volume's cluster size in blocks. */ - uint8_t blocksPerCluster() const { - return m_blocksPerCluster; - } - /** \return The number of blocks in one FAT. */ - uint32_t blocksPerFat() const { - return m_blocksPerFat; - } - /** Clear the cache and returns a pointer to the cache. Not for normal apps. - * \return A pointer to the cache buffer or zero if an error occurs. - */ - cache_t* cacheClear() { - if (!cacheSync()) { - return 0; - } - m_cache.invalidate(); - return m_cache.block(); - } - /** \return The total number of clusters in the volume. */ - uint32_t clusterCount() const { - return m_lastCluster - 1; - } - /** \return The shift count required to multiply by blocksPerCluster. */ - uint8_t clusterSizeShift() const { - return m_clusterSizeShift; - } - /** \return The logical block number for the start of file data. */ - uint32_t dataStartBlock() const { - return m_dataStartBlock; - } - /** \return The sector number for the start of file data. */ - uint32_t dataStartSector() const { - return m_dataStartBlock; - } - /** \return The number of File Allocation Tables. */ - uint8_t fatCount() { - return 2; - } - /** \return The logical block number for the start of the first FAT. */ - uint32_t fatStartBlock() const { - return m_fatStartBlock; - } - /** \return The sector number for the start of the first FAT. */ - uint32_t fatStartSector() const { - return m_fatStartBlock; - } - /** \return The FAT type of the volume. Values are 12, 16 or 32. */ - uint8_t fatType() const { - return m_fatType; - } - /** Volume free space in clusters. - * - * \return Count of free clusters for success or -1 if an error occurs. - */ - int32_t freeClusterCount(); - /** Initialize a FAT volume. Try partition one first then try super - * floppy format. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool init() { - return init(1) || init(0); - } - /** Initialize a FAT volume. - - * \param[in] part The partition to be used. Legal values for \a part are - * 1-4 to use the corresponding partition on a device formatted with - * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in block zero. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool init(uint8_t part); - /** \return The cluster number of last cluster in the volume. */ - uint32_t lastCluster() const { - return m_lastCluster; - } - /** \return The number of entries in the root directory for FAT16 volumes. */ - uint16_t rootDirEntryCount() const { - return m_rootDirEntryCount; - } - /** \return The logical block number for the start of the root directory - on FAT16 volumes or the first cluster number on FAT32 volumes. */ - uint32_t rootDirStart() const { - return m_rootDirStart; - } - /** \return The volume's cluster size in sectors. */ - uint8_t sectorsPerCluster() const { - return m_blocksPerCluster; - } - /** \return The number of blocks in the volume */ - uint32_t volumeBlockCount() const { - return blocksPerCluster()*clusterCount(); - } - /** \return The number of sectors in the volume */ - uint32_t volumeSectorCount() const { - return sectorsPerCluster()*clusterCount(); - } - /** Wipe all data from the volume. - * \param[in] pr print stream for status dots. - * \return true for success else false. - */ - bool wipe(print_t* pr = 0); - /** Debug access to FAT table - * - * \param[in] n cluster number. - * \param[out] v value of entry - * \return -1 error, 0 EOC, else 1. - */ - int8_t dbgFat(uint32_t n, uint32_t* v) { - return fatGet(n, v); - } -//------------------------------------------------------------------------------ - private: - // Allow FatFile and FatCache access to FatVolume private functions. - friend class FatCache; ///< Allow access to FatVolume. - friend class FatFile; ///< Allow access to FatVolume. - friend class FatFileSystem; ///< Allow access to FatVolume. -//------------------------------------------------------------------------------ - BlockDriver* m_blockDev; // block device - uint8_t m_blocksPerCluster; // Cluster size in blocks. - uint8_t m_clusterBlockMask; // Mask to extract block of cluster. - uint8_t m_clusterSizeShift; // Cluster count to block count shift. - uint8_t m_fatType; // Volume type (12, 16, OR 32). - uint16_t m_rootDirEntryCount; // Number of entries in FAT16 root dir. - uint32_t m_allocSearchStart; // Start cluster for alloc search. - uint32_t m_blocksPerFat; // FAT size in blocks - uint32_t m_dataStartBlock; // First data block number. - uint32_t m_fatStartBlock; // Start block for first FAT. - uint32_t m_lastCluster; // Last cluster number in FAT. - uint32_t m_rootDirStart; // Start block for FAT16, cluster for FAT32. -//------------------------------------------------------------------------------ - // block I/O functions. - bool readBlock(uint32_t block, uint8_t* dst) { - return m_blockDev->readBlock(block, dst); - } - bool syncBlocks() { - return m_blockDev->syncBlocks(); - } - bool writeBlock(uint32_t block, const uint8_t* src) { - return m_blockDev->writeBlock(block, src); - } -#if USE_MULTI_BLOCK_IO - bool readBlocks(uint32_t block, uint8_t* dst, size_t nb) { - return m_blockDev->readBlocks(block, dst, nb); - } - bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb) { - return m_blockDev->writeBlocks(block, src, nb); - } -#endif // USE_MULTI_BLOCK_IO -#if MAINTAIN_FREE_CLUSTER_COUNT - int32_t m_freeClusterCount; // Count of free clusters in volume. - void setFreeClusterCount(int32_t value) { - m_freeClusterCount = value; - } - void updateFreeClusterCount(int32_t change) { - if (m_freeClusterCount >= 0) { - m_freeClusterCount += change; - } - } -#else // MAINTAIN_FREE_CLUSTER_COUNT - void setFreeClusterCount(int32_t value) { - (void)value; - } - void updateFreeClusterCount(int32_t change) { - (void)change; - } -#endif // MAINTAIN_FREE_CLUSTER_COUNT - -// block caches - FatCache m_cache; -#if USE_SEPARATE_FAT_CACHE - FatCache m_fatCache; - cache_t* cacheFetchFat(uint32_t blockNumber, uint8_t options) { - return m_fatCache.read(blockNumber, - options | FatCache::CACHE_STATUS_MIRROR_FAT); - } - bool cacheSync() { - return m_cache.sync() && m_fatCache.sync() && syncBlocks(); - } -#else // - cache_t* cacheFetchFat(uint32_t blockNumber, uint8_t options) { - return cacheFetchData(blockNumber, - options | FatCache::CACHE_STATUS_MIRROR_FAT); - } - bool cacheSync() { - return m_cache.sync() && syncBlocks(); - } -#endif // USE_SEPARATE_FAT_CACHE - cache_t* cacheFetchData(uint32_t blockNumber, uint8_t options) { - return m_cache.read(blockNumber, options); - } - void cacheInvalidate() { - m_cache.invalidate(); - } - bool cacheSyncData() { - return m_cache.sync(); - } - cache_t *cacheAddress() { - return m_cache.block(); - } - uint32_t cacheBlockNumber() { - return m_cache.lbn(); - } - void cacheDirty() { - m_cache.dirty(); - } -//------------------------------------------------------------------------------ - bool allocateCluster(uint32_t current, uint32_t* next); - bool allocContiguous(uint32_t count, - uint32_t* firstCluster, uint32_t startCluster = 0); - uint8_t blockOfCluster(uint32_t position) const { - return (position >> 9) & m_clusterBlockMask; - } - uint32_t clusterFirstBlock(uint32_t cluster) const; - int8_t fatGet(uint32_t cluster, uint32_t* value); - bool fatPut(uint32_t cluster, uint32_t value); - bool fatPutEOC(uint32_t cluster) { - return fatPut(cluster, 0x0FFFFFFF); - } - bool freeChain(uint32_t cluster); - bool isEOC(uint32_t cluster) const { - return cluster > m_lastCluster; - } -}; -#endif // FatVolume diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FmtNumber.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FmtNumber.cpp deleted file mode 100644 index 29531452..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FmtNumber.cpp +++ /dev/null @@ -1,460 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "FmtNumber.h" -// Use Stimmer div/mod 10 on avr -#ifdef __AVR__ -#include -#define USE_STIMMER -#endif // __AVR__ -//------------------------------------------------------------------------------ -// Stimmer div/mod 10 for AVR -// this code fragment works out i/10 and i%10 by calculating -// i*(51/256)*(256/255)/2 == i*51/510 == i/10 -// by "j.k" I mean 32.8 fixed point, j is integer part, k is fractional part -// j.k = ((j+1.0)*51.0)/256.0 -// (we add 1 because we will be using the floor of the result later) -// divmod10_asm16 and divmod10_asm32 are public domain code by Stimmer. -// http://forum.arduino.cc/index.php?topic=167414.msg1293679#msg1293679 -#define divmod10_asm16(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " lsr %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") - -#define divmod10_asm32(in32, mod8, tmp8) \ -asm volatile( \ - " ldi %2,51 \n\t" \ - " mul %A0,%2 \n\t" \ - " clr %A0 \n\t" \ - " add r0,%2 \n\t" \ - " adc %A0,r1 \n\t" \ - " mov %1,r0 \n\t" \ - " mul %B0,%2 \n\t" \ - " clr %B0 \n\t" \ - " add %A0,r0 \n\t" \ - " adc %B0,r1 \n\t" \ - " mul %C0,%2 \n\t" \ - " clr %C0 \n\t" \ - " add %B0,r0 \n\t" \ - " adc %C0,r1 \n\t" \ - " mul %D0,%2 \n\t" \ - " clr %D0 \n\t" \ - " add %C0,r0 \n\t" \ - " adc %D0,r1 \n\t" \ - " clr r1 \n\t" \ - " add %1,%A0 \n\t" \ - " adc %A0,%B0 \n\t" \ - " adc %B0,%C0 \n\t" \ - " adc %C0,%D0 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%B0 \n\t" \ - " adc %A0,%C0 \n\t" \ - " adc %B0,%D0 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " add %1,%D0 \n\t" \ - " adc %A0,r1 \n\t" \ - " adc %B0,r1 \n\t" \ - " adc %C0,r1 \n\t" \ - " adc %D0,r1 \n\t" \ - " lsr %D0 \n\t" \ - " ror %C0 \n\t" \ - " ror %B0 \n\t" \ - " ror %A0 \n\t" \ - " ror %1 \n\t" \ - " ldi %2,10 \n\t" \ - " mul %1,%2 \n\t" \ - " mov %1,r1 \n\t" \ - " clr r1 \n\t" \ - :"+r"(in32), "=d"(mod8), "=d"(tmp8) : : "r0") -//------------------------------------------------------------------------------ -/* -// C++ code is based on this version of divmod10 by robtillaart. -// http://forum.arduino.cc/index.php?topic=167414.msg1246851#msg1246851 -// from robtillaart post: -// The code is based upon the divu10() code from the book Hackers Delight1. -// My insight was that the error formula in divu10() was in fact modulo 10 -// but not always. Sometimes it was 10 more. -void divmod10(uint32_t in, uint32_t &div, uint32_t &mod) -{ - // q = in * 0.8; - uint32_t q = (in >> 1) + (in >> 2); - q = q + (q >> 4); - q = q + (q >> 8); - q = q + (q >> 16); // not needed for 16 bit version - - // q = q / 8; ==> q = in *0.1; - q = q >> 3; - - // determine error - uint32_t r = in - ((q << 3) + (q << 1)); // r = in - q*10; - div = q + (r > 9); - if (r > 9) mod = r - 10; - else mod = r; -} -// Hackers delight function is here: -// http://www.hackersdelight.org/hdcodetxt/divuc.c.txt -// Code below uses 8/10 = 0.1100 1100 1100 1100 1100 1100 1100 1100. -// 15 ops including the multiply, or 17 elementary ops. -unsigned divu10(unsigned n) { - unsigned q, r; - - q = (n >> 1) + (n >> 2); - q = q + (q >> 4); - q = q + (q >> 8); - q = q + (q >> 16); - q = q >> 3; - r = n - q*10; - return q + ((r + 6) >> 4); -// return q + (r > 9); -} -*/ -//------------------------------------------------------------------------------ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#ifdef __AVR__ -static const float m[] PROGMEM = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; -static const float p[] PROGMEM = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; -#else // __AVR__ -static const float m[] = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32}; -static const float p[] = {1e+1, 1e+2, 1e+4, 1e+8, 1e+16, 1e+32}; -#endif // __AVR__ -#endif // DOXYGEN_SHOULD_SKIP_THIS -// scale float v by power of ten. return v*10^n -float scale10(float v, int8_t n) { - const float *s; - if (n < 0) { - n = -n; - s = m; - } else { - s = p; - } - n &= 63; - for (uint8_t i = 0; n; n >>= 1, i++) { -#ifdef __AVR__ - if (n & 1) { - v *= pgm_read_float(&s[i]); - } -#else // __AVR__ - if (n & 1) { - v *= s[i]; - } -#endif // __AVR__ - } - return v; -} -//------------------------------------------------------------------------------ -// Format 16-bit unsigned -char* fmtDec(uint16_t n, char* p) { - while (n > 9) { -#ifdef USE_STIMMER - uint8_t tmp8, r; - divmod10_asm16(n, r, tmp8); -#else // USE_STIMMER - uint16_t t = n; - n = (n >> 1) + (n >> 2); - n = n + (n >> 4); - n = n + (n >> 8); - // n = n + (n >> 16); // no code for 16-bit n - n = n >> 3; - uint8_t r = t - (((n << 2) + n) << 1); - if (r > 9) { - n++; - r -= 10; - } -#endif // USE_STIMMER - *--p = r + '0'; - } - *--p = n + '0'; - return p; -} -//------------------------------------------------------------------------------ -// format 32-bit unsigned -char* fmtDec(uint32_t n, char* p) { - while (n >> 16) { -#ifdef USE_STIMMER - uint8_t tmp8, r; - divmod10_asm32(n, r, tmp8); -#else // USE_STIMMER - uint32_t t = n; - n = (n >> 1) + (n >> 2); - n = n + (n >> 4); - n = n + (n >> 8); - n = n + (n >> 16); - n = n >> 3; - uint8_t r = t - (((n << 2) + n) << 1); - if (r > 9) { - n++; - r -= 10; - } -#endif // USE_STIMMER - *--p = r + '0'; - } - return fmtDec((uint16_t)n, p); -} -//------------------------------------------------------------------------------ -char* fmtFloat(float value, char* p, uint8_t prec) { - char sign = value < 0 ? '-' : 0; - if (sign) { - value = -value; - } - - if (isnan(value)) { - *--p = 'n'; - *--p = 'a'; - *--p = 'n'; - return p; - } - if (isinf(value)) { - *--p = 'f'; - *--p = 'n'; - *--p = 'i'; - return p; - } - if (value > 4294967040.0) { - *--p = 'f'; - *--p = 'v'; - *--p = 'o'; - return p; - } - if (prec > 9) { - prec = 9; - } - value += scale10(0.5, -prec); - - uint32_t whole = value; - if (prec) { - char* tmp = p - prec; - uint32_t fraction = scale10(value - whole, prec); - p = fmtDec(fraction, p); - while (p > tmp) { - *--p = '0'; - } - *--p = '.'; - } - p = fmtDec(whole, p); - if (sign) { - *--p = sign; - } - return p; -} -//------------------------------------------------------------------------------ -/** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] ptr Pointer to last char in buffer. - * \param[in] prec Number of digits after decimal point. - * \param[in] expChar Use exp format if non zero. - * \return Pointer to first character of result. - */ -char* fmtFloat(float value, char* ptr, uint8_t prec, char expChar) { - bool neg = value < 0; - if (neg) { - value = -value; - } - - // check for nan inf ovf - if (isnan(value)) { - *--ptr = 'n'; - *--ptr = 'a'; - *--ptr = 'n'; - return ptr; - } - if (isinf(value)) { - *--ptr = 'f'; - *--ptr = 'n'; - *--ptr = 'i'; - return ptr; - } - if (!expChar && value > 4294967040.0) { - *--ptr = 'f'; - *--ptr = 'v'; - *--ptr = 'o'; - return ptr; - } - if (prec > 9) { - prec = 9; - } - float round = scale10(0.5, -prec); - if (expChar) { - int8_t exp = 0; - bool expNeg = false; - if (value) { - while (value > 10.0) { - value *= 0.1; - exp++; - } - while (value < 1.0) { - value *= 10.0; - exp--; - } - value += round; - if (value > 10.0) { - value *= 0.1; - exp++; - } - expNeg = exp < 0; - if (expNeg) { - exp = -exp; - } - } - ptr = fmtDec((uint16_t)exp, ptr); - if (exp < 10) { - *--ptr = '0'; - } - *--ptr = expNeg ? '-' : '+'; - *--ptr = expChar; - } else { - // round value - value += round; - } - uint32_t whole = value; - if (prec) { - char* tmp = ptr - prec; - uint32_t fraction = scale10(value - whole, prec); - ptr = fmtDec(fraction, ptr); - while (ptr > tmp) { - *--ptr = '0'; - } - *--ptr = '.'; - } - ptr = fmtDec(whole, ptr); - if (neg) { - *--ptr = '-'; - } - return ptr; -} -//------------------------------------------------------------------------------ -char* fmtHex(uint32_t n, char* p) { - do { - uint8_t h = n & 0XF; - *--p = h + (h < 10 ? '0' : 'A' - 10); - n >>= 4; - } while (n); - return p; -} -//------------------------------------------------------------------------------ -float scanFloat(const char* str, char** ptr) { - int16_t const EXP_LIMIT = 100; - bool digit = false; - bool dot = false; - uint32_t fract = 0; - int fracExp = 0; - uint8_t nd = 0; - bool neg; - int c; - float v; - const char* successPtr = str; - - if (ptr) { - *ptr = const_cast(str); - } - - while (isSpace((c = *str++))) {} - neg = c == '-'; - if (c == '-' || c == '+') { - c = *str++; - } - // Skip leading zeros - while (c == '0') { - c = *str++; - digit = true; - } - for (;;) { - if (isDigit(c)) { - digit = true; - if (nd < 9) { - fract = 10*fract + c - '0'; - nd++; - if (dot) { - fracExp--; - } - } else { - if (!dot) { - fracExp++; - } - } - } else if (c == '.') { - if (dot) { - goto fail; - } - dot = true; - } else { - if (!digit) { - goto fail; - } - break; - } - successPtr = str; - c = *str++; - } - if (c == 'e' || c == 'E') { - int exp = 0; - c = *str++; - bool expNeg = c == '-'; - if (c == '-' || c == '+') { - c = *str++; - } - while (isDigit(c)) { - if (exp > EXP_LIMIT) { - goto fail; - } - exp = 10*exp + c - '0'; - successPtr = str; - c = *str++; - } - fracExp += expNeg ? -exp : exp; - } - if (ptr) { - *ptr = const_cast(successPtr); - } - v = scale10(static_cast(fract), fracExp); - return neg ? -v : v; - -fail: - return 0; -} - - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FmtNumber.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FmtNumber.h deleted file mode 100644 index 7834c8fa..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/FmtNumber.h +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FmtNumber_h -#define FmtNumber_h -// #include -inline bool isDigit(char c) { - return '0' <= c && c <= '9'; -} -inline bool isSpace(char c) { - return c == ' ' || (0X9 <= c && c <= 0XD); -} -#include -#include -char* fmtDec(uint16_t n, char* p); -char* fmtDec(uint32_t n, char* p); -char* fmtFloat(float value, char* p, uint8_t prec); -char* fmtFloat(float value, char* ptr, uint8_t prec, char expChar); -char* fmtHex(uint32_t n, char* p); -float scale10(float v, int8_t n); -float scanFloat(const char* str, char** ptr); -#endif // FmtNumber_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/StdioStream.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/StdioStream.cpp deleted file mode 100644 index 076c2b2e..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/StdioStream.cpp +++ /dev/null @@ -1,508 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "StdioStream.h" -#include "FmtNumber.h" -//------------------------------------------------------------------------------ -int StdioStream::fclose() { - int rtn = 0; - if (!m_status) { - return EOF; - } - if (m_status & S_SWR) { - if (!flushBuf()) { - rtn = EOF; - } - } - if (!FatFile::close()) { - rtn = EOF; - } - m_r = 0; - m_w = 0; - m_status = 0; - return rtn; -} -//------------------------------------------------------------------------------ -int StdioStream::fflush() { - if ((m_status & (S_SWR | S_SRW)) && !(m_status & S_SRD)) { - if (flushBuf() && FatFile::sync()) { - return 0; - } - } - return EOF; -} -//------------------------------------------------------------------------------ -char* StdioStream::fgets(char* str, size_t num, size_t* len) { - char* s = str; - size_t n; - if (num-- == 0) { - return 0; - } - while (num) { - if ((n = m_r) == 0) { - if (!fillBuf()) { - if (s == str) { - return 0; - } - break; - } - n = m_r; - } - if (n > num) { - n = num; - } - uint8_t* end = reinterpret_cast(memchr(m_p, '\n', n)); - if (end != 0) { - n = ++end - m_p; - memcpy(s, m_p, n); - m_r -= n; - m_p = end; - s += n; - break; - } - memcpy(s, m_p, n); - m_r -= n; - m_p += n; - s += n; - num -= n; - } - *s = 0; - if (len) { - *len = s - str; - } - return str; -} -//------------------------------------------------------------------------------ -bool StdioStream::fopen(const char* path, const char* mode) { - oflag_t oflag; - uint8_t m; - switch (*mode++) { - case 'a': - m = O_WRONLY; - oflag = O_CREAT | O_APPEND; - m_status = S_SWR; - break; - - case 'r': - m = O_RDONLY; - oflag = 0; - m_status = S_SRD; - break; - - case 'w': - m = O_WRONLY; - oflag = O_CREAT | O_TRUNC; - m_status = S_SWR; - break; - - default: - goto fail; - } - while (*mode) { - switch (*mode++) { - case '+': - m_status = S_SRW; - m = O_RDWR; - break; - - case 'b': - break; - - case 'x': - oflag |= O_EXCL; - break; - - default: - goto fail; - } - } - oflag |= m; - - if (!FatFile::open(path, oflag)) { - goto fail; - } - m_r = 0; - m_w = 0; - m_p = m_buf; - return true; - -fail: - m_status = 0; - return false; -} -//------------------------------------------------------------------------------ -int StdioStream::fputs(const char* str) { - size_t len = strlen(str); - return fwrite(str, 1, len) == len ? len : EOF; -} -//------------------------------------------------------------------------------ -size_t StdioStream::fread(void* ptr, size_t size, size_t count) { - uint8_t* dst = reinterpret_cast(ptr); - size_t total = size*count; - if (total == 0) { - return 0; - } - size_t need = total; - while (need > m_r) { - memcpy(dst, m_p, m_r); - dst += m_r; - m_p += m_r; - need -= m_r; - if (!fillBuf()) { - return (total - need)/size; - } - } - memcpy(dst, m_p, need); - m_r -= need; - m_p += need; - return count; -} -//------------------------------------------------------------------------------ -int StdioStream::fseek(int32_t offset, int origin) { - int32_t pos; - if (m_status & S_SWR) { - if (!flushBuf()) { - goto fail; - } - } - switch (origin) { - case SEEK_CUR: - pos = ftell(); - if (pos < 0) { - goto fail; - } - pos += offset; - if (!FatFile::seekCur(pos)) { - goto fail; - } - break; - - case SEEK_SET: - if (!FatFile::seekSet(offset)) { - goto fail; - } - break; - - case SEEK_END: - if (!FatFile::seekEnd(offset)) { - goto fail; - } - break; - - default: - goto fail; - } - m_r = 0; - m_p = m_buf; - return 0; - -fail: - return EOF; -} -//------------------------------------------------------------------------------ -int32_t StdioStream::ftell() { - uint32_t pos = FatFile::curPosition(); - if (m_status & S_SRD) { - if (m_r > pos) { - return -1L; - } - pos -= m_r; - } else if (m_status & S_SWR) { - pos += m_p - m_buf; - } - return pos; -} -//------------------------------------------------------------------------------ -size_t StdioStream::fwrite(const void* ptr, size_t size, size_t count) { - return write(ptr, count*size) < 0 ? EOF : count; -} -//------------------------------------------------------------------------------ -int StdioStream::write(const void* buf, size_t count) { - const uint8_t* src = static_cast(buf); - size_t todo = count; - - while (todo > m_w) { - memcpy(m_p, src, m_w); - m_p += m_w; - src += m_w; - todo -= m_w; - if (!flushBuf()) { - return EOF; - } - } - memcpy(m_p, src, todo); - m_p += todo; - m_w -= todo; - return count; -} -//------------------------------------------------------------------------------ -#if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) -size_t StdioStream::print(const __FlashStringHelper *str) { - const char *p = (const char*)str; - uint8_t c; - while ((c = pgm_read_byte(p))) { - if (putc(c) < 0) { - return 0; - } - p++; - } - return p - (const char*)str; -} -#endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) -//------------------------------------------------------------------------------ -int StdioStream::printDec(float value, uint8_t prec) { - char buf[24]; - char *ptr = fmtFloat(value, buf + sizeof(buf), prec); - return write(ptr, buf + sizeof(buf) - ptr); -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(signed char n) { - if (n < 0) { - if (fputc('-') < 0) { - return -1; - } - n = -n; - } - return printDec((unsigned char)n); -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(int16_t n) { - int s; - uint8_t rtn = 0; - if (n < 0) { - if (fputc('-') < 0) { - return -1; - } - n = -n; - rtn++; - } - if ((s = printDec((uint16_t)n)) < 0) { - return s; - } - return rtn; -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(uint16_t n) { -#define NEW_WAY -#ifdef NEW_WAY - char buf[5]; - char *ptr = fmtDec(n, buf + sizeof(buf)); - uint8_t len = buf + sizeof(buf) - ptr; - return write(ptr, len); -#else - uint8_t len; - if (n < 100) { - len = n < 10 ? 1 : 2; - } else { - len = n < 1000 ? 3 : n < 10000 ? 4 : 5; - } - char* str = fmtSpace(len); - if (!str) { - return -1; - } - fmtDec(n, str); - return len; -#endif -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(int32_t n) { - uint8_t s = 0; - if (n < 0) { - if (fputc('-') < 0) { - return -1; - } - n = -n; - s = 1; - } - int rtn = printDec((uint32_t)n); - return rtn > 0 ? rtn + s : -1; -} -//------------------------------------------------------------------------------ -int StdioStream::printDec(uint32_t n) { -#ifdef NEW_WAY - char buf[10]; - char *ptr = fmtDec(n, buf + sizeof(buf)); - uint8_t len = buf + sizeof(buf) - ptr; - return write(ptr, len); -#else - uint8_t len; - if (n < 0X10000) { - return printDec((uint16_t)n); - } - if (n < 10000000) { - len = n < 100000 ? 5 : n < 1000000 ? 6 : 7; - } else { - len = n < 100000000 ? 8 : n < 1000000000 ? 9 : 10; - } - - char* str = fmtSpace(len); - if (!str) { - return -1; - } - fmtDec(n, str); - return len; -#endif -} -//------------------------------------------------------------------------------ -int StdioStream::printHex(uint32_t n) { -#ifdef NEW_WAY - char buf[8]; - char *ptr = fmtHex(n, buf + sizeof(buf)); - uint8_t len = buf + sizeof(buf) - ptr; - return write(ptr, len); -#else - size_t len; - if (n < 0X10000) { - len = n < 0X10 ? 1 : n < 0X100 ? 2 : n < 0X1000 ? 3 : 4; - } else { - len = n < 0X100000 ? 5 : n < 0X1000000 ? 6 : n < 0X10000000 ? 7 : 8; - } - char* str = fmtSpace(len); - if (!str) { - return -1; - } - - do { - uint8_t h = n & 0XF; - *str-- = h + (h < 10 ? '0' : 'A' - 10); - n >>= 4; - } while (n); - return len; -#endif -} -//------------------------------------------------------------------------------ -bool StdioStream::rewind() { - if (m_status & S_SWR) { - if (!flushBuf()) { - return false; - } - } - FatFile::seekSet(0); - m_r = 0; - return true; -} -//------------------------------------------------------------------------------ -int StdioStream::ungetc(int c) { - // error if EOF. - if (c == EOF) { - return EOF; - } - // error if not reading. - if ((m_status & S_SRD) == 0) { - return EOF; - } - // error if no space. - if (m_p == m_buf) { - return EOF; - } - m_r++; - m_status &= ~S_EOF; - return *--m_p = (uint8_t)c; -} -//============================================================================== -// private -//------------------------------------------------------------------------------ -int StdioStream::fillGet() { - if (!fillBuf()) { - return EOF; - } - m_r--; - return *m_p++; -} -//------------------------------------------------------------------------------ -// private -bool StdioStream::fillBuf() { - if (!(m_status & - S_SRD)) { // check for S_ERR and S_EOF ??///////////////// - if (!(m_status & S_SRW)) { - m_status |= S_ERR; - return false; - } - if (m_status & S_SWR) { - if (!flushBuf()) { - return false; - } - m_status &= ~S_SWR; - m_status |= S_SRD; - m_w = 0; - } - } - m_p = m_buf + UNGETC_BUF_SIZE; - int nr = FatFile::read(m_p, sizeof(m_buf) - UNGETC_BUF_SIZE); - if (nr <= 0) { - m_status |= nr < 0 ? S_ERR : S_EOF; - m_r = 0; - return false; - } - m_r = nr; - return true; -} -//------------------------------------------------------------------------------ -// private -bool StdioStream::flushBuf() { - if (!(m_status & - S_SWR)) { // check for S_ERR ??//////////////////////// - if (!(m_status & S_SRW)) { - m_status |= S_ERR; - return false; - } - m_status &= ~S_SRD; - m_status |= S_SWR; - m_r = 0; - m_w = sizeof(m_buf); - m_p = m_buf; - return true; - } - uint8_t n = m_p - m_buf; - m_p = m_buf; - m_w = sizeof(m_buf); - if (FatFile::write(m_buf, n) == n) { - return true; - } - m_status |= S_ERR; - return false; -} -//------------------------------------------------------------------------------ -int StdioStream::flushPut(uint8_t c) { - if (!flushBuf()) { - return EOF; - } - m_w--; - return *m_p++ = c; -} -//------------------------------------------------------------------------------ -char* StdioStream::fmtSpace(uint8_t len) { - if (m_w < len) { - if (!flushBuf() || m_w < len) { - return 0; - } - } - if (len > m_w) { - return 0; - } - m_p += len; - m_w -= len; - return reinterpret_cast(m_p); -} - diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/StdioStream.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/StdioStream.h deleted file mode 100644 index a4d5e9a0..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/StdioStream.h +++ /dev/null @@ -1,667 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef StdioStream_h -#define StdioStream_h -/** - * \file - * \brief StdioStream class - */ -#include -#include "FatFile.h" -//------------------------------------------------------------------------------ -/** Total size of stream buffer. The entire buffer is used for output. - * During input UNGETC_BUF_SIZE of this space is reserved for ungetc. - */ -const uint8_t STREAM_BUF_SIZE = 64; -/** Amount of buffer allocated for ungetc during input. */ -const uint8_t UNGETC_BUF_SIZE = 2; -//------------------------------------------------------------------------------ -// Get rid of any macros defined in . -#include -#undef clearerr -#undef fclose -#undef feof -#undef ferror -#undef fflush -#undef fgetc -#undef fgetpos -#undef fgets -#undef fopen -#undef fprintf -#undef fputc -#undef fputs -#undef fread -#undef freopen -#undef fscanf -#undef fseek -#undef fsetpos -#undef ftell -#undef fwrite -#undef getc -#undef getchar -#undef gets -#undef perror -//#undef printf // NOLINT -#undef putc -#undef putchar -#undef puts -#undef remove -#undef rename -#undef rewind -#undef scanf -#undef setbuf -#undef setvbuf -//#undef sprintf // NOLINT -#undef sscanf -#undef tmpfile -#undef tmpnam -#undef ungetc -#undef vfprintf -#undef vprintf -#undef vsprintf - -// make sure needed macros are defined -#ifndef EOF -/** End-of-file return value. */ -#define EOF (-1) -#endif // EOF -#ifndef NULL -/** Null pointer */ -#define NULL 0 -#endif // NULL -#ifndef SEEK_CUR -/** Seek relative to current position. */ -#define SEEK_CUR 1 -#endif // SEEK_CUR -#ifndef SEEK_END -/** Seek relative to end-of-file. */ -#define SEEK_END 2 -#endif // SEEK_END -#ifndef SEEK_SET -/** Seek relative to start-of-file. */ -#define SEEK_SET 0 -#endif // SEEK_SET -//------------------------------------------------------------------------------ -/** \class StdioStream - * \brief StdioStream implements a minimal stdio stream. - * - * StdioStream does not support subdirectories or long file names. - */ -class StdioStream : private FatFile { - public: - /** Constructor - * - */ - StdioStream() { - m_w = m_r = 0; - m_p = m_buf; - m_status = 0; - } - //---------------------------------------------------------------------------- - /** Clear the stream's end-of-file and error indicators. */ - void clearerr() { - m_status &= ~(S_ERR | S_EOF); - } - //---------------------------------------------------------------------------- - /** Close a stream. - * - * A successful call to the fclose function causes the stream to be - * flushed and the associated file to be closed. Any unwritten buffered - * data is written to the file; any unread buffered data is discarded. - * Whether or not the call succeeds, the stream is disassociated from - * the file. - * - * \return zero if the stream was successfully closed, or EOF if any any - * errors are detected. - */ - int fclose(); - //---------------------------------------------------------------------------- - /** Test the stream's end-of-file indicator. - * \return non-zero if and only if the end-of-file indicator is set. - */ - int feof() { - return (m_status & S_EOF) != 0; - } - //---------------------------------------------------------------------------- - /** Test the stream's error indicator. - * \return return non-zero if and only if the error indicator is set. - */ - int ferror() { - return (m_status & S_ERR) != 0; - } - //---------------------------------------------------------------------------- - /** Flush the stream. - * - * If stream is an output stream or an update stream in which the most - * recent operation was not input, any unwritten data is written to the - * file; otherwise the call is an error since any buffered input data - * would be lost. - * - * \return sets the error indicator for the stream and returns EOF if an - * error occurs, otherwise it returns zero. - */ - int fflush(); - //---------------------------------------------------------------------------- - /** Get a byte from the stream. - * - * \return If the end-of-file indicator for the stream is set, or if the - * stream is at end-of-file, the end-of-file indicator for the stream is - * set and the fgetc function returns EOF. Otherwise, the fgetc function - * returns the next character from the input stream. - */ - int fgetc() { - return m_r-- == 0 ? fillGet() : *m_p++; - } - //---------------------------------------------------------------------------- - /** Get a string from a stream. - * - * The fgets function reads at most one less than the number of - * characters specified by num from the stream into the array pointed - * to by str. No additional characters are read after a new-line - * character (which is retained) or after end-of-file. A null character - * is written immediately after the last character read into the array. - * - * \param[out] str Pointer to an array of where the string is copied. - * - * \param[in] num Maximum number of characters including the null - * character. - * - * \param[out] len If len is not null and fgets is successful, the - * length of the string is returned. - * - * \return str if successful. If end-of-file is encountered and no - * characters have been read into the array, the contents of the array - * remain unchanged and a null pointer is returned. If a read error - * occurs during the operation, the array contents are indeterminate - * and a null pointer is returned. - */ - char* fgets(char* str, size_t num, size_t* len = 0); - //---------------------------------------------------------------------------- - /** Open a stream. - * - * Open a file and associates the stream with it. - * - * \param[in] path file to be opened. - * - * \param[in] mode a string that indicates the open mode. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
"r" or "rb"Open a file for reading. The file must exist.
"w" or "wb"Truncate an existing to zero length or create an empty file - * for writing.
"wx" or "wbx"Create a file for writing. Fails if the file already exists.
"a" or "ab"Append; open or create file for writing at end-of-file.
"r+" or "rb+" or "r+b"Open a file for update (reading and writing).
"w+" or "w+b" or "wb+"Truncate an existing to zero length or create a file for update.
"w+x" or "w+bx" or "wb+x"Create a file for update. Fails if the file already exists.
"a+" or "a+b" or "ab+"Append; open or create a file for update, writing at end-of-file.
- * The character 'b' shall have no effect, but is allowed for ISO C - * standard conformance. - * - * Opening a file with append mode causes all subsequent writes to the - * file to be forced to the then current end-of-file, regardless of - * intervening calls to the fseek function. - * - * When a file is opened with update mode, both input and output may be - * performed on the associated stream. However, output shall not be - * directly followed by input without an intervening call to the fflush - * function or to a file positioning function (fseek, or rewind), and - * input shall not be directly followed by output without an intervening - * call to a file positioning function, unless the input operation - * encounters end-of-file. - * - * \return true for success or false for failure. - */ - bool fopen(const char* path, const char * mode); - //---------------------------------------------------------------------------- - /** Write a byte to a stream. - * - * \param[in] c the byte to be written (converted to an unsigned char). - * - * \return Upon successful completion, fputc() returns the value it - * has written. Otherwise, it returns EOF and sets the error indicator for - * the stream. - */ - int fputc(int c) { - return m_w-- == 0 ? flushPut(c) : *m_p++ = c; - } - //---------------------------------------------------------------------------- - /** Write a string to a stream. - * - * \param[in] str a pointer to the string to be written. - * - * \return for success, fputs() returns a non-negative - * number. Otherwise, it returns EOF and sets the error indicator for - * the stream. - */ - int fputs(const char* str); - //---------------------------------------------------------------------------- - /** Binary input. - * - * Reads an array of up to count elements, each one with a size of size - * bytes. - * \param[out] ptr pointer to area of at least (size*count) bytes where - * the data will be stored. - * - * \param[in] size the size, in bytes, of each element to be read. - * - * \param[in] count the number of elements to be read. - * - * \return number of elements successfully read, which may be less than - * count if a read error or end-of-file is encountered. If size or count - * is zero, fread returns zero and the contents of the array and the - * state of the stream remain unchanged. - */ - size_t fread(void* ptr, size_t size, size_t count); - //---------------------------------------------------------------------------- - /** Set the file position for the stream. - * - * \param[in] offset number of offset from the origin. - * - * \param[in] origin position used as reference for the offset. It is - * specified by one of the following constants. - * - * SEEK_SET - Beginning of file. - * - * SEEK_CUR - Current position of the file pointer. - * - * SEEK_END - End of file. - * - * \return zero for success. Otherwise, it returns non-zero and sets the - * error indicator for the stream. - */ - int fseek(int32_t offset, int origin); - //---------------------------------------------------------------------------- - /** Get the current position in a stream. - * - * \return If successful, ftell return the current value of the position - * indicator. On failure, ftell returns −1L. - */ - int32_t ftell(); - //---------------------------------------------------------------------------- - /** Binary output. - * - * Writes an array of up to count elements, each one with a size of size - * bytes. - * \param[in] ptr pointer to (size*count) bytes of data to be written. - * - * \param[in] size the size, in bytes, of each element to be written. - * - * \param[in] count the number of elements to be written. - * - * \return number of elements successfully written. if this number is - * less than count, an error has occurred. If size or count is zero, - * fwrite returns zero. - */ - size_t fwrite(const void * ptr, size_t size, size_t count); - //---------------------------------------------------------------------------- - /** Get a byte from the stream. - * - * getc and fgetc are equivalent but getc is in-line so it is faster but - * require more flash memory. - * - * \return If the end-of-file indicator for the stream is set, or if the - * stream is at end-of-file, the end-of-file indicator for the stream is - * set and the fgetc function returns EOF. Otherwise, the fgetc function - * returns the next character from the input stream. - */ - inline __attribute__((always_inline)) - int getc() { - return m_r-- == 0 ? fillGet() : *m_p++; - } - //---------------------------------------------------------------------------- - /** Write a byte to a stream. - * - * putc and fputc are equivalent but putc is in-line so it is faster but - * require more flash memory. - * - * \param[in] c the byte to be written (converted to an unsigned char). - * - * \return Upon successful completion, fputc() returns the value it - * has written. Otherwise, it returns EOF and sets the error indicator for - * the stream. - */ - inline __attribute__((always_inline)) - int putc(int c) { - return m_w-- == 0 ? flushPut(c) : *m_p++ = c; - } - //---------------------------------------------------------------------------- - /** Write a CR/LF. - * - * \return two, the number of bytes written, for success or -1 for failure. - */ - inline __attribute__((always_inline)) - int putCRLF() { - if (m_w < 2) { - if (!flushBuf()) { - return -1; - } - } - *m_p++ = '\r'; - *m_p++ = '\n'; - m_w -= 2; - return 2; - } - //---------------------------------------------------------------------------- - /** Write a character. - * \param[in] c the character to write. - * \return the number of bytes written. - */ - size_t print(char c) { - return putc(c) < 0 ? 0 : 1; - } - //---------------------------------------------------------------------------- - /** Write a string. - * - * \param[in] str the string to be written. - * - * \return the number of bytes written. - */ - size_t print(const char* str) { - int n = fputs(str); - return n < 0 ? 0 : n; - } - //---------------------------------------------------------------------------- -#if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - /** Print a string stored in flash memory. - * - * \param[in] str the string to print. - * - * \return the number of bytes written. - */ - size_t print(const __FlashStringHelper *str); -#endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - //---------------------------------------------------------------------------- - /** Print a floating point number. - * - * \param[in] prec Number of digits after decimal point. - * - * \param[in] val the number to be printed. - * - * \return the number of bytes written. - */ - size_t print(double val, uint8_t prec = 2) { - return print(static_cast(val), prec); - } - //---------------------------------------------------------------------------- - /** Print a floating point number. - * - * \param[in] prec Number of digits after decimal point. - * - * \param[in] val the number to be printed. - * - * \return the number of bytes written. - */ - size_t print(float val, uint8_t prec = 2) { - int n = printDec(val, prec); - return n > 0 ? n : 0; - } - //---------------------------------------------------------------------------- - /** Print a number. - * - * \param[in] val the number to be printed. - * - * \return the number of bytes written. - */ - template - size_t print(T val) { - int n = printDec(val); - return n > 0 ? n : 0; - } - //---------------------------------------------------------------------------- - /** Write a CR/LF. - * - * \return two, the number of bytes written, for success or zero for failure. - */ - size_t println() { - return putCRLF() > 0 ? 2 : 0; - } - //---------------------------------------------------------------------------- - /** Print a floating point number followed by CR/LF. - * - * \param[in] val the number to be printed. - * - * \param[in] prec Number of digits after decimal point. - * - * \return the number of bytes written. - */ - size_t println(double val, uint8_t prec = 2) { - return println(static_cast(val), prec); - } - //---------------------------------------------------------------------------- - /** Print a floating point number followed by CR/LF. - * - * \param[in] val the number to be printed. - * - * \param[in] prec Number of digits after decimal point. - * - * \return the number of bytes written. - */ - size_t println(float val, uint8_t prec = 2) { - int n = printDec(val, prec); - return n > 0 && putCRLF() > 0 ? n + 2 : 0; - } - //---------------------------------------------------------------------------- - /** Print an item followed by CR/LF - * - * \param[in] val the item to be printed. - * - * \return the number of bytes written. - */ - template - size_t println(T val) { - int n = print(val); - return putCRLF() > 0 ? n + 2 : 0; - } - //---------------------------------------------------------------------------- - /** Print a char as a number. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(char n) { - if (CHAR_MIN == 0) { - return printDec((unsigned char)n); - } else { - return printDec((signed char)n); - } - } - //---------------------------------------------------------------------------- - /** print a signed 8-bit integer - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(signed char n); - //---------------------------------------------------------------------------- - /** Print an unsigned 8-bit number. - * \param[in] n number to be print. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(unsigned char n) { - return printDec((uint16_t)n); - } - //---------------------------------------------------------------------------- - /** Print a int16_t - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(int16_t n); - //---------------------------------------------------------------------------- - /** print a uint16_t. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(uint16_t n); - //---------------------------------------------------------------------------- - /** Print a signed 32-bit integer. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(int32_t n); - //---------------------------------------------------------------------------- - /** Write an unsigned 32-bit number. - * \param[in] n number to be printed. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(uint32_t n); - //---------------------------------------------------------------------------- - /** Print a double. - * \param[in] value The number to be printed. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(double value, uint8_t prec) { - return printDec(static_cast(value), prec); - } - //---------------------------------------------------------------------------- - /** Print a float. - * \param[in] value The number to be printed. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printDec(float value, uint8_t prec); - //---------------------------------------------------------------------------- - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(double value, char term, uint8_t prec = 2) { - return printField(static_cast(value), term, prec) > 0; - } - //---------------------------------------------------------------------------- - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. - * \param[in] prec Number of digits after decimal point. - * \return The number of bytes written or -1 if an error occurs. - */ - int printField(float value, char term, uint8_t prec = 2) { - int rtn = printDec(value, prec); - return rtn < 0 || putc(term) < 0 ? -1 : rtn + 1; - } - //---------------------------------------------------------------------------- - /** Print a number followed by a field terminator. - * \param[in] value The number to be printed. - * \param[in] term The field terminator. - * \return The number of bytes written or -1 if an error occurs. - */ - template - int printField(T value, char term) { - int rtn = printDec(value); - return rtn < 0 || putc(term) < 0 ? -1 : rtn + 1; - } - //---------------------------------------------------------------------------- - /** Print HEX - * \param[in] n number to be printed as HEX. - * - * \return The number of bytes written or -1 if an error occurs. - */ - int printHex(uint32_t n); - //---------------------------------------------------------------------------- - /** Print HEX with CRLF - * \param[in] n number to be printed as HEX. - * - * \return The number of bytes written or -1 if an error occurs. - */ - int printHexln(uint32_t n) { - int rtn = printHex(n); - return rtn < 0 || putCRLF() != 2 ? -1 : rtn + 2; - } - //---------------------------------------------------------------------------- - /** Set position of a stream to the beginning. - * - * The rewind function sets the file position to the beginning of the - * file. It is equivalent to fseek(0L, SEEK_SET) except that the error - * indicator for the stream is also cleared. - * - * \return true for success or false for failure. - */ - bool rewind(); - //---------------------------------------------------------------------------- - /** Push a byte back into an input stream. - * - * \param[in] c the byte (converted to an unsigned char) to be pushed back. - * - * One character of push-back is guaranteed. If the ungetc function is - * called too many times without an intervening read or file positioning - * operation on that stream, the operation may fail. - * - * A successful intervening call to a file positioning function (fseek, - * fsetpos, or rewind) discards any pushed-back characters for the stream. - * - * \return Upon successful completion, ungetc() returns the byte pushed - * back after conversion. Otherwise it returns EOF. - */ - int ungetc(int c); - //============================================================================ - private: - bool fillBuf(); - int fillGet(); - bool flushBuf(); - int flushPut(uint8_t c); - char* fmtSpace(uint8_t len); - int write(const void* buf, size_t count); - //---------------------------------------------------------------------------- - // S_SRD and S_WR are never simultaneously asserted - static const uint8_t S_SRD = 0x01; // OK to read - static const uint8_t S_SWR = 0x02; // OK to write - static const uint8_t S_SRW = 0x04; // open for reading & writing - static const uint8_t S_EOF = 0x10; // found EOF - static const uint8_t S_ERR = 0x20; // found error - //---------------------------------------------------------------------------- - uint8_t m_status; - uint8_t* m_p; - uint8_t m_r; - uint8_t m_w; - uint8_t m_buf[STREAM_BUF_SIZE]; -}; -//------------------------------------------------------------------------------ -#endif // StdioStream_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/bufstream.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/bufstream.h deleted file mode 100644 index f3cb8831..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/bufstream.h +++ /dev/null @@ -1,172 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef bufstream_h -#define bufstream_h -/** - * \file - * \brief \ref ibufstream and \ref obufstream classes - */ -#include -#include "iostream.h" -//============================================================================== -/** - * \class ibufstream - * \brief parse a char string - */ -class ibufstream : public istream { - public: - /** Constructor */ - ibufstream() : m_buf(0), m_len(0) {} - /** Constructor - * \param[in] str pointer to string to be parsed - * Warning: The string will not be copied so must stay in scope. - */ - explicit ibufstream(const char* str) { - init(str); - } - /** Initialize an ibufstream - * \param[in] str pointer to string to be parsed - * Warning: The string will not be copied so must stay in scope. - */ - void init(const char* str) { - m_buf = str; - m_len = strlen(m_buf); - m_pos = 0; - clear(); - } - - protected: - /// @cond SHOW_PROTECTED - int16_t getch() { - if (m_pos < m_len) { - return m_buf[m_pos++]; - } - setstate(eofbit); - return -1; - } - void getpos(FatPos_t *pos) { - pos->position = m_pos; - } - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - bool seekpos(pos_type pos) { - if (pos < m_len) { - m_pos = pos; - return true; - } - return false; - } - void setpos(FatPos_t *pos) { - m_pos = pos->position; - } - pos_type tellpos() { - return m_pos; - } - /// @endcond - private: - const char* m_buf; - size_t m_len; - size_t m_pos; -}; -//============================================================================== -/** - * \class obufstream - * \brief format a char string - */ -class obufstream : public ostream { - public: - /** constructor */ - obufstream() : m_in(0) {} - /** Constructor - * \param[in] buf buffer for formatted string - * \param[in] size buffer size - */ - obufstream(char *buf, size_t size) { - init(buf, size); - } - /** Initialize an obufstream - * \param[in] buf buffer for formatted string - * \param[in] size buffer size - */ - void init(char *buf, size_t size) { - m_buf = buf; - buf[0] = '\0'; - m_size = size; - m_in = 0; - } - /** \return a pointer to the buffer */ - char* buf() { - return m_buf; - } - /** \return the length of the formatted string */ - size_t length() { - return m_in; - } - - protected: - /// @cond SHOW_PROTECTED - void putch(char c) { - if (m_in >= (m_size - 1)) { - setstate(badbit); - return; - } - m_buf[m_in++] = c; - m_buf[m_in] = '\0'; - } - void putstr(const char *str) { - while (*str) { - putch(*str++); - } - } - bool seekoff(off_type off, seekdir way) { - (void)off; - (void)way; - return false; - } - bool seekpos(pos_type pos) { - if (pos > m_in) { - return false; - } - m_in = pos; - m_buf[m_in] = '\0'; - return true; - } - bool sync() { - return true; - } - - pos_type tellpos() { - return m_in; - } - /// @endcond - private: - char *m_buf; - size_t m_size; - size_t m_in; -}; -#endif // bufstream_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/fstream.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/fstream.cpp deleted file mode 100644 index 01ec1893..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/fstream.cpp +++ /dev/null @@ -1,172 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "fstream.h" -//============================================================================== -/// @cond SHOW_PROTECTED -int16_t FatStreamBase::getch() { - uint8_t c; - int8_t s = read(&c, 1); - if (s != 1) { - if (s < 0) { - setstate(badbit); - } else { - setstate(eofbit); - } - return -1; - } - if (c != '\r' || (getmode() & ios::binary)) { - return c; - } - s = read(&c, 1); - if (s == 1 && c == '\n') { - return c; - } - if (s == 1) { - seekCur(-1); - } - return '\r'; -} -//------------------------------------------------------------------------------ -void FatStreamBase::open(const char* path, ios::openmode mode) { - oflag_t oflag; - switch (mode & (app | in | out | trunc)) { - case app | in: - case app | in | out: - oflag = O_RDWR | O_APPEND | O_CREAT; - break; - - case app: - case app | out: - oflag = O_WRONLY | O_APPEND | O_CREAT; - break; - - case in: - oflag = O_RDONLY; - break; - - case in | out: - oflag = O_RDWR; - break; - - case in | out | trunc: - oflag = O_RDWR | O_TRUNC | O_CREAT; - break; - - case out: - case out | trunc: - oflag = O_WRONLY | O_TRUNC | O_CREAT; - break; - - default: - goto fail; - } - if (mode & ios::ate) { - oflag |= O_AT_END; - } - if (!FatFile::open(path, oflag)) { - goto fail; - } - setmode(mode); - clear(); - return; - -fail: - FatFile::close(); - setstate(failbit); - return; -} -//------------------------------------------------------------------------------ -void FatStreamBase::putch(char c) { - if (c == '\n' && !(getmode() & ios::binary)) { - write('\r'); - } - write(c); - if (getWriteError()) { - setstate(badbit); - } -} -//------------------------------------------------------------------------------ -void FatStreamBase::putstr(const char* str) { - size_t n = 0; - while (1) { - char c = str[n]; - if (c == '\0' || (c == '\n' && !(getmode() & ios::binary))) { - if (n > 0) { - write(str, n); - } - if (c == '\0') { - break; - } - write('\r'); - str += n; - n = 0; - } - n++; - } - if (getWriteError()) { - setstate(badbit); - } -} -//------------------------------------------------------------------------------ -/** Internal do not use - * \param[in] off - * \param[in] way - */ -bool FatStreamBase::seekoff(off_type off, seekdir way) { - pos_type pos; - switch (way) { - case beg: - pos = off; - break; - - case cur: - pos = curPosition() + off; - break; - - case end: - pos = fileSize() + off; - break; - - default: - return false; - } - return seekpos(pos); -} -//------------------------------------------------------------------------------ -/** Internal do not use - * \param[in] pos - */ -bool FatStreamBase::seekpos(pos_type pos) { - return seekSet(pos); -} -//------------------------------------------------------------------------------ -int FatStreamBase::write(const void* buf, size_t n) { - return FatFile::write(buf, n); -} -//------------------------------------------------------------------------------ -void FatStreamBase::write(char c) { - write(&c, 1); -} -/// @endcond diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/fstream.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/fstream.h deleted file mode 100644 index f8d80dd8..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/fstream.h +++ /dev/null @@ -1,320 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef fstream_h -#define fstream_h -/** - * \file - * \brief \ref fstream, \ref ifstream, and \ref ofstream classes - */ -#include "FatFile.h" -#include "iostream.h" -//============================================================================== -/** - * \class FatStreamBase - * \brief Base class for C++ style streams - */ -class FatStreamBase : protected FatFile, virtual public ios { - protected: - /// @cond SHOW_PROTECTED - int16_t getch(); - void putch(char c); - void putstr(const char *str); - void open(const char* path, ios::openmode mode); - /** Internal do not use - * \return mode - */ - ios::openmode getmode() { - return m_mode; - } - /** Internal do not use - * \param[in] mode - */ - void setmode(ios::openmode mode) { - m_mode = mode; - } - bool seekoff(off_type off, seekdir way); - bool seekpos(pos_type pos); - int write(const void* buf, size_t n); - void write(char c); - /// @endcond - private: - ios::openmode m_mode; -}; -//============================================================================== -/** - * \class fstream - * \brief file input/output stream. - */ -class fstream : public iostream, FatStreamBase { - public: - using iostream::peek; - fstream() {} - /** Constructor with open - * - * \param[in] path path to open - * \param[in] mode open mode - */ - explicit fstream(const char* path, openmode mode = in | out) { - open(path, mode); - } -#if DESTRUCTOR_CLOSES_FILE - ~fstream() {} -#endif // DESTRUCTOR_CLOSES_FILE - /** Clear state and writeError - * \param[in] state new state for stream - */ - void clear(iostate state = goodbit) { - ios::clear(state); - FatFile::clearWriteError(); - } - /** Close a file and force cached data and directory information - * to be written to the storage device. - */ - void close() { - FatFile::close(); - } - /** Open a fstream - * \param[in] path file to open - * \param[in] mode open mode - * - * Valid open modes are (at end, ios::ate, and/or ios::binary may be added): - * - * ios::in - Open file for reading. - * - * ios::out or ios::out | ios::trunc - Truncate to 0 length, if existent, - * or create a file for writing only. - * - * ios::app or ios::out | ios::app - Append; open or create file for - * writing at end-of-file. - * - * ios::in | ios::out - Open file for update (reading and writing). - * - * ios::in | ios::out | ios::trunc - Truncate to zero length, if existent, - * or create file for update. - * - * ios::in | ios::app or ios::in | ios::out | ios::app - Append; open or - * create text file for update, writing at end of file. - */ - void open(const char* path, openmode mode = in | out) { - FatStreamBase::open(path, mode); - } - /** \return True if stream is open else false. */ - bool is_open() { - return FatFile::isOpen(); - } - - protected: - /// @cond SHOW_PROTECTED - /** Internal - do not use - * \return - */ - int16_t getch() { - return FatStreamBase::getch(); - } - /** Internal - do not use - * \param[out] pos - */ - void getpos(FatPos_t* pos) { - FatFile::getpos(pos); - } - /** Internal - do not use - * \param[in] c - */ - void putch(char c) { - FatStreamBase::putch(c); - } - /** Internal - do not use - * \param[in] str - */ - void putstr(const char *str) { - FatStreamBase::putstr(str); - } - /** Internal - do not use - * \param[in] pos - */ - bool seekoff(off_type off, seekdir way) { - return FatStreamBase::seekoff(off, way); - } - bool seekpos(pos_type pos) { - return FatStreamBase::seekpos(pos); - } - void setpos(FatPos_t* pos) { - FatFile::setpos(pos); - } - bool sync() { - return FatStreamBase::sync(); - } - pos_type tellpos() { - return FatStreamBase::curPosition(); - } - /// @endcond -}; -//============================================================================== -/** - * \class ifstream - * \brief file input stream. - */ -class ifstream : public istream, FatStreamBase { - public: - using istream::peek; - ifstream() {} - /** Constructor with open - * \param[in] path file to open - * \param[in] mode open mode - */ - explicit ifstream(const char* path, openmode mode = in) { - open(path, mode); - } -#if DESTRUCTOR_CLOSES_FILE - ~ifstream() {} -#endif // DESTRUCTOR_CLOSES_FILE - /** Close a file and force cached data and directory information - * to be written to the storage device. - */ - void close() { - FatFile::close(); - } - /** \return True if stream is open else false. */ - bool is_open() { - return FatFile::isOpen(); - } - /** Open an ifstream - * \param[in] path file to open - * \param[in] mode open mode - * - * \a mode See fstream::open() for valid modes. - */ - void open(const char* path, openmode mode = in) { - FatStreamBase::open(path, mode | in); - } - - protected: - /// @cond SHOW_PROTECTED - /** Internal - do not use - * \return - */ - int16_t getch() { - return FatStreamBase::getch(); - } - /** Internal - do not use - * \param[out] pos - */ - void getpos(FatPos_t* pos) { - FatFile::getpos(pos); - } - /** Internal - do not use - * \param[in] pos - */ - bool seekoff(off_type off, seekdir way) { - return FatStreamBase::seekoff(off, way); - } - bool seekpos(pos_type pos) { - return FatStreamBase::seekpos(pos); - } - void setpos(FatPos_t* pos) { - FatFile::setpos(pos); - } - pos_type tellpos() { - return FatStreamBase::curPosition(); - } - /// @endcond -}; -//============================================================================== -/** - * \class ofstream - * \brief file output stream. - */ -class ofstream : public ostream, FatStreamBase { - public: - ofstream() {} - /** Constructor with open - * \param[in] path file to open - * \param[in] mode open mode - */ - explicit ofstream(const char* path, ios::openmode mode = out) { - open(path, mode); - } -#if DESTRUCTOR_CLOSES_FILE - ~ofstream() {} -#endif // DESTRUCTOR_CLOSES_FILE - /** Clear state and writeError - * \param[in] state new state for stream - */ - void clear(iostate state = goodbit) { - ios::clear(state); - FatFile::clearWriteError(); - } - /** Close a file and force cached data and directory information - * to be written to the storage device. - */ - void close() { - FatFile::close(); - } - /** Open an ofstream - * \param[in] path file to open - * \param[in] mode open mode - * - * \a mode See fstream::open() for valid modes. - */ - void open(const char* path, openmode mode = out) { - FatStreamBase::open(path, mode | out); - } - /** \return True if stream is open else false. */ - bool is_open() { - return FatFile::isOpen(); - } - - protected: - /// @cond SHOW_PROTECTED - /** - * Internal do not use - * \param[in] c - */ - void putch(char c) { - FatStreamBase::putch(c); - } - void putstr(const char* str) { - FatStreamBase::putstr(str); - } - bool seekoff(off_type off, seekdir way) { - return FatStreamBase::seekoff(off, way); - } - bool seekpos(pos_type pos) { - return FatStreamBase::seekpos(pos); - } - /** - * Internal do not use - * \param[in] b - */ - bool sync() { - return FatStreamBase::sync(); - } - pos_type tellpos() { - return FatStreamBase::curPosition(); - } - /// @endcond -}; -//------------------------------------------------------------------------------ -#endif // fstream_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ios.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ios.h deleted file mode 100644 index 460718d7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ios.h +++ /dev/null @@ -1,423 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef ios_h -#define ios_h -#include "FatFile.h" -/** - * \file - * \brief \ref ios_base and \ref ios classes - */ -//============================================================================== -/** - * \class ios_base - * \brief Base class for all streams - */ -class ios_base { - public: - /** typedef for iostate bitmask */ - typedef unsigned char iostate; - // State flags. - /** iostate for no flags */ - static const iostate goodbit = 0x00; - /** iostate bad bit for a nonrecoverable error. */ - static const iostate badbit = 0X01; - /** iostate bit for end of file reached */ - static const iostate eofbit = 0x02; - /** iostate fail bit for nonfatal error */ - static const iostate failbit = 0X04; - /** - * unsigned size that can represent maximum file size. - * (violates spec - should be signed) - */ - typedef uint32_t streamsize; - /** type for absolute seek position */ - typedef uint32_t pos_type; - /** type for relative seek offset */ - typedef int32_t off_type; - - /** enumerated type for the direction of relative seeks */ - enum seekdir { - /** seek relative to the beginning of the stream */ - beg, - /** seek relative to the current stream position */ - cur, - /** seek relative to the end of the stream */ - end - }; - /** type for format flags */ - typedef unsigned int fmtflags; - /** left adjust fields */ - static const fmtflags left = 0x0001; - /** right adjust fields */ - static const fmtflags right = 0x0002; - /** fill between sign/base prefix and number */ - static const fmtflags internal = 0x0004; - /** base 10 flag*/ - static const fmtflags dec = 0x0008; - /** base 16 flag */ - static const fmtflags hex = 0x0010; - /** base 8 flag */ - static const fmtflags oct = 0x0020; - // static const fmtflags fixed = 0x0040; - // static const fmtflags scientific = 0x0080; - /** use strings true/false for bool */ - static const fmtflags boolalpha = 0x0100; - /** use prefix 0X for hex and 0 for oct */ - static const fmtflags showbase = 0x0200; - /** always show '.' for floating numbers */ - static const fmtflags showpoint = 0x0400; - /** show + sign for nonnegative numbers */ - static const fmtflags showpos = 0x0800; - /** skip initial white space */ - static const fmtflags skipws = 0x1000; - // static const fmtflags unitbuf = 0x2000; - /** use uppercase letters in number representations */ - static const fmtflags uppercase = 0x4000; - /** mask for adjustfield */ - static const fmtflags adjustfield = left | right | internal; - /** mask for basefield */ - static const fmtflags basefield = dec | hex | oct; - // static const fmtflags floatfield = scientific | fixed; - //---------------------------------------------------------------------------- - /** typedef for iostream open mode */ - typedef uint8_t openmode; - - // Openmode flags. - /** seek to end before each write */ - static const openmode app = 0X4; - /** open and seek to end immediately after opening */ - static const openmode ate = 0X8; - /** perform input and output in binary mode (as opposed to text mode) */ - static const openmode binary = 0X10; - /** open for input */ - static const openmode in = 0X20; - /** open for output */ - static const openmode out = 0X40; - /** truncate an existing stream when opening */ - static const openmode trunc = 0X80; - //---------------------------------------------------------------------------- - ios_base() : m_fill(' '), m_fmtflags(dec | right | skipws) - , m_precision(2), m_width(0) {} - /** \return fill character */ - char fill() { - return m_fill; - } - /** Set fill character - * \param[in] c new fill character - * \return old fill character - */ - char fill(char c) { - char r = m_fill; - m_fill = c; - return r; - } - /** \return format flags */ - fmtflags flags() const { - return m_fmtflags; - } - /** set format flags - * \param[in] fl new flag - * \return old flags - */ - fmtflags flags(fmtflags fl) { - fmtflags tmp = m_fmtflags; - m_fmtflags = fl; - return tmp; - } - /** \return precision */ - int precision() const { - return m_precision; - } - /** set precision - * \param[in] n new precision - * \return old precision - */ - int precision(unsigned int n) { - int r = m_precision; - m_precision = n; - return r; - } - /** set format flags - * \param[in] fl new flags to be or'ed in - * \return old flags - */ - fmtflags setf(fmtflags fl) { - fmtflags r = m_fmtflags; - m_fmtflags |= fl; - return r; - } - /** modify format flags - * \param[in] mask flags to be removed - * \param[in] fl flags to be set after mask bits have been cleared - * \return old flags - */ - fmtflags setf(fmtflags fl, fmtflags mask) { - fmtflags r = m_fmtflags; - m_fmtflags &= ~mask; - m_fmtflags |= fl; - return r; - } - /** clear format flags - * \param[in] fl flags to be cleared - * \return old flags - */ - void unsetf(fmtflags fl) { - m_fmtflags &= ~fl; - } - /** \return width */ - unsigned width() { - return m_width; - } - /** set width - * \param[in] n new width - * \return old width - */ - unsigned width(unsigned n) { - unsigned r = m_width; - m_width = n; - return r; - } - - protected: - /** \return current number base */ - uint8_t flagsToBase() { - uint8_t f = flags() & basefield; - return f == oct ? 8 : f != hex ? 10 : 16; - } - - private: - char m_fill; - fmtflags m_fmtflags; - unsigned char m_precision; - unsigned int m_width; -}; -//------------------------------------------------------------------------------ -/** function for boolalpha manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& boolalpha(ios_base& str) { - str.setf(ios_base::boolalpha); - return str; -} -/** function for dec manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& dec(ios_base& str) { - str.setf(ios_base::dec, ios_base::basefield); - return str; -} -/** function for hex manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& hex(ios_base& str) { - str.setf(ios_base::hex, ios_base::basefield); - return str; -} -/** function for internal manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& internal(ios_base& str) { - str.setf(ios_base::internal, ios_base::adjustfield); - return str; -} -/** function for left manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& left(ios_base& str) { - str.setf(ios_base::left, ios_base::adjustfield); - return str; -} -/** function for noboolalpha manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noboolalpha(ios_base& str) { - str.unsetf(ios_base::boolalpha); - return str; -} -/** function for noshowbase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noshowbase(ios_base& str) { - str.unsetf(ios_base::showbase); - return str; -} -/** function for noshowpoint manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noshowpoint(ios_base& str) { - str.unsetf(ios_base::showpoint); - return str; -} -/** function for noshowpos manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noshowpos(ios_base& str) { - str.unsetf(ios_base::showpos); - return str; -} -/** function for noskipws manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& noskipws(ios_base& str) { - str.unsetf(ios_base::skipws); - return str; -} -/** function for nouppercase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& nouppercase(ios_base& str) { - str.unsetf(ios_base::uppercase); - return str; -} -/** function for oct manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& oct(ios_base& str) { - str.setf(ios_base::oct, ios_base::basefield); - return str; -} -/** function for right manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& right(ios_base& str) { - str.setf(ios_base::right, ios_base::adjustfield); - return str; -} -/** function for showbase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& showbase(ios_base& str) { - str.setf(ios_base::showbase); - return str; -} -/** function for showpos manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& showpos(ios_base& str) { - str.setf(ios_base::showpos); - return str; -} -/** function for showpoint manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& showpoint(ios_base& str) { - str.setf(ios_base::showpoint); - return str; -} -/** function for skipws manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& skipws(ios_base& str) { - str.setf(ios_base::skipws); - return str; -} -/** function for uppercase manipulator - * \param[in] str The stream - * \return The stream - */ -inline ios_base& uppercase(ios_base& str) { - str.setf(ios_base::uppercase); - return str; -} -//============================================================================== -/** - * \class ios - * \brief Error and state information for all streams - */ -class ios : public ios_base { - public: - /** Create ios with no error flags set */ - ios() : m_iostate(0) {} - - /** \return null pointer if fail() is true. */ - operator const void*() const { - return !fail() ? reinterpret_cast(this) : 0; - } - /** \return true if fail() else false. */ - bool operator!() const { - return fail(); - } - /** \return The iostate flags for this file. */ - iostate rdstate() const { - return m_iostate; - } - /** \return True if no iostate flags are set else false. */ - bool good() const { - return m_iostate == goodbit; - } - /** \return true if end of file has been reached else false. - * - * Warning: An empty file returns false before the first read. - * - * Moral: eof() is only useful in combination with fail(), to find out - * whether EOF was the cause for failure - */ - bool eof() const { - return m_iostate & eofbit; - } - /** \return true if any iostate bit other than eof are set else false. */ - bool fail() const { - return m_iostate & (failbit | badbit); - } - /** \return true if bad bit is set else false. */ - bool bad() const { - return m_iostate & badbit; - } - /** Clear iostate bits. - * - * \param[in] state The flags you want to set after clearing all flags. - **/ - void clear(iostate state = goodbit) { - m_iostate = state; - } - /** Set iostate bits. - * - * \param[in] state Bitts to set. - **/ - void setstate(iostate state) { - m_iostate |= state; - } - - private: - iostate m_iostate; -}; -#endif // ios_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/iostream.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/iostream.h deleted file mode 100644 index 6b47419f..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/iostream.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef iostream_h -#define iostream_h -/** - * \file - * \brief \ref iostream class - */ -#include "istream.h" -#include "ostream.h" -/** Skip white space - * \param[in] is the Stream - * \return The stream - */ -inline istream& ws(istream& is) { - is.skipWhite(); - return is; -} -/** insert endline - * \param[in] os The Stream - * \return The stream - */ -inline ostream& endl(ostream& os) { - os.put('\n'); -#if ENDL_CALLS_FLUSH - os.flush(); -#endif // ENDL_CALLS_FLUSH - return os; -} -/** flush manipulator - * \param[in] os The stream - * \return The stream - */ -inline ostream& flush(ostream& os) { - os.flush(); - return os; -} -/** - * \struct setfill - * \brief type for setfill manipulator - */ -struct setfill { - /** fill character */ - char c; - /** constructor - * - * \param[in] arg new fill character - */ - explicit setfill(char arg) : c(arg) {} -}; -/** setfill manipulator - * \param[in] os the stream - * \param[in] arg set setfill object - * \return the stream - */ -inline ostream &operator<< (ostream &os, const setfill &arg) { - os.fill(arg.c); - return os; -} -/** setfill manipulator - * \param[in] obj the stream - * \param[in] arg set setfill object - * \return the stream - */ -inline istream &operator>>(istream &obj, const setfill &arg) { - obj.fill(arg.c); - return obj; -} -//------------------------------------------------------------------------------ -/** \struct setprecision - * \brief type for setprecision manipulator - */ -struct setprecision { - /** precision */ - unsigned int p; - /** constructor - * \param[in] arg new precision - */ - explicit setprecision(unsigned int arg) : p(arg) {} -}; -/** setprecision manipulator - * \param[in] os the stream - * \param[in] arg set setprecision object - * \return the stream - */ -inline ostream &operator<< (ostream &os, const setprecision &arg) { - os.precision(arg.p); - return os; -} -/** setprecision manipulator - * \param[in] is the stream - * \param[in] arg set setprecision object - * \return the stream - */ -inline istream &operator>>(istream &is, const setprecision &arg) { - is.precision(arg.p); - return is; -} -//------------------------------------------------------------------------------ -/** \struct setw - * \brief type for setw manipulator - */ -struct setw { - /** width */ - unsigned w; - /** constructor - * \param[in] arg new width - */ - explicit setw(unsigned arg) : w(arg) {} -}; -/** setw manipulator - * \param[in] os the stream - * \param[in] arg set setw object - * \return the stream - */ -inline ostream &operator<< (ostream &os, const setw &arg) { - os.width(arg.w); - return os; -} -/** setw manipulator - * \param[in] is the stream - * \param[in] arg set setw object - * \return the stream - */ -inline istream &operator>>(istream &is, const setw &arg) { - is.width(arg.w); - return is; -} -//============================================================================== -/** - * \class iostream - * \brief Input/Output stream - */ -class iostream : public istream, public ostream { -}; -#endif // iostream_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/istream.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/istream.cpp deleted file mode 100644 index 74ae2953..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/istream.cpp +++ /dev/null @@ -1,396 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -// #include -#include -#include -#include "istream.h" -//------------------------------------------------------------------------------ -int istream::get() { - int c; - m_gcount = 0; - c = getch(); - if (c < 0) { - setstate(failbit); - } else { - m_gcount = 1; - } - return c; -} -//------------------------------------------------------------------------------ -istream& istream::get(char& c) { - int tmp = get(); - if (tmp >= 0) { - c = tmp; - } - return *this; -} -//------------------------------------------------------------------------------ -istream& istream::get(char *str, streamsize n, char delim) { - int c; - FatPos_t pos; - m_gcount = 0; - while ((m_gcount + 1) < n) { - c = getch(&pos); - if (c < 0) { - break; - } - if (c == delim) { - setpos(&pos); - break; - } - str[m_gcount++] = c; - } - if (n > 0) { - str[m_gcount] = '\0'; - } - if (m_gcount == 0) { - setstate(failbit); - } - return *this; -} -//------------------------------------------------------------------------------ -void istream::getBool(bool *b) { - if ((flags() & boolalpha) == 0) { - getNumber(b); - return; - } -#ifdef __AVR__ - PGM_P truePtr = PSTR("true"); - PGM_P falsePtr = PSTR("false"); -#else // __AVR__ - const char* truePtr = "true"; - const char* falsePtr = "false"; -#endif // __AVR - const uint8_t true_len = 4; - const uint8_t false_len = 5; - bool trueOk = true; - bool falseOk = true; - uint8_t i = 0; - int c = readSkip(); - while (1) { -#ifdef __AVR__ - falseOk = falseOk && c == pgm_read_byte(falsePtr + i); - trueOk = trueOk && c == pgm_read_byte(truePtr + i); -#else // __AVR__ - falseOk = falseOk && c == falsePtr[i]; - trueOk = trueOk && c == truePtr[i]; -#endif // __AVR__ - if (trueOk == false && falseOk == false) { - break; - } - i++; - if (trueOk && i == true_len) { - *b = true; - return; - } - if (falseOk && i == false_len) { - *b = false; - return; - } - c = getch(); - } - setstate(failbit); -} -//------------------------------------------------------------------------------ -void istream::getChar(char* ch) { - int16_t c = readSkip(); - if (c < 0) { - setstate(failbit); - } else { - *ch = c; - } -} -//------------------------------------------------------------------------------ -// -// http://www.exploringbinary.com/category/numbers-in-computers/ -// -int16_t const EXP_LIMIT = 100; -static const uint32_t uint32_max = (uint32_t)-1; -bool istream::getDouble(double* value) { - bool got_digit = false; - bool got_dot = false; - bool neg; - int16_t c; - bool expNeg = false; - int16_t exp = 0; - int16_t fracExp = 0; - uint32_t frac = 0; - FatPos_t endPos; - double pow10; - double v; - - getpos(&endPos); - c = readSkip(); - neg = c == '-'; - if (c == '-' || c == '+') { - c = getch(); - } - while (1) { - if (isdigit(c)) { - got_digit = true; - if (frac < uint32_max/10) { - frac = frac * 10 + (c - '0'); - if (got_dot) { - fracExp--; - } - } else { - if (!got_dot) { - fracExp++; - } - } - } else if (!got_dot && c == '.') { - got_dot = true; - } else { - break; - } - if (fracExp < -EXP_LIMIT || fracExp > EXP_LIMIT) { - goto fail; - } - c = getch(&endPos); - } - if (!got_digit) { - goto fail; - } - if (c == 'e' || c == 'E') { - c = getch(); - expNeg = c == '-'; - if (c == '-' || c == '+') { - c = getch(); - } - while (isdigit(c)) { - if (exp > EXP_LIMIT) { - goto fail; - } - exp = exp * 10 + (c - '0'); - c = getch(&endPos); - } - } - v = static_cast(frac); - exp = expNeg ? fracExp - exp : fracExp + exp; - expNeg = exp < 0; - if (expNeg) { - exp = -exp; - } - pow10 = 10.0; - while (exp) { - if (exp & 1) { - if (expNeg) { - // check for underflow - if (v < FLT_MIN * pow10 && frac != 0) { - goto fail; - } - v /= pow10; - } else { - // check for overflow - if (v > FLT_MAX / pow10) { - goto fail; - } - v *= pow10; - } - } - pow10 *= pow10; - exp >>= 1; - } - setpos(&endPos); - *value = neg ? -v : v; - return true; - -fail: - // error restore position to last good place - setpos(&endPos); - setstate(failbit); - return false; -} -//------------------------------------------------------------------------------ - -istream& istream::getline(char *str, streamsize n, char delim) { - FatPos_t pos; - int c; - m_gcount = 0; - if (n > 0) { - str[0] = '\0'; - } - while (1) { - c = getch(&pos); - if (c < 0) { - break; - } - if (c == delim) { - m_gcount++; - break; - } - if ((m_gcount + 1) >= n) { - setpos(&pos); - setstate(failbit); - break; - } - str[m_gcount++] = c; - str[m_gcount] = '\0'; - } - if (m_gcount == 0) { - setstate(failbit); - } - return *this; -} -//------------------------------------------------------------------------------ -bool istream::getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num) { - int16_t c; - int8_t any = 0; - int8_t have_zero = 0; - uint8_t neg; - uint32_t val = 0; - uint32_t cutoff; - uint8_t cutlim; - FatPos_t endPos; - uint8_t f = flags() & basefield; - uint8_t base = f == oct ? 8 : f != hex ? 10 : 16; - getpos(&endPos); - c = readSkip(); - - neg = c == '-' ? 1 : 0; - if (c == '-' || c == '+') { - c = getch(); - } - - if (base == 16 && c == '0') { // TESTSUITE - c = getch(&endPos); - if (c == 'X' || c == 'x') { - c = getch(); - // remember zero in case no hex digits follow x/X - have_zero = 1; - } else { - any = 1; - } - } - // set values for overflow test - cutoff = neg ? negMax : posMax; - cutlim = cutoff % base; - cutoff /= base; - - while (1) { - if (isdigit(c)) { - c -= '0'; - } else if (isalpha(c)) { - c -= isupper(c) ? 'A' - 10 : 'a' - 10; - } else { - break; - } - if (c >= base) { - break; - } - if (val > cutoff || (val == cutoff && c > cutlim)) { - // indicate overflow error - any = -1; - break; - } - val = val * base + c; - c = getch(&endPos); - any = 1; - } - setpos(&endPos); - if (any > 0 || (have_zero && any >= 0)) { - *num = neg ? -val : val; - return true; - } - setstate(failbit); - return false; -} -//------------------------------------------------------------------------------ -void istream::getStr(char *str) { - FatPos_t pos; - uint16_t i = 0; - uint16_t m = width() ? width() - 1 : 0XFFFE; - if (m != 0) { - getpos(&pos); - int c = readSkip(); - - while (i < m) { - if (c < 0) { - break; - } - if (isspace(c)) { - setpos(&pos); - break; - } - str[i++] = c; - c = getch(&pos); - } - } - str[i] = '\0'; - if (i == 0) { - setstate(failbit); - } - width(0); -} -//------------------------------------------------------------------------------ -istream& istream::ignore(streamsize n, int delim) { - int c; - m_gcount = 0; - while (m_gcount < n) { - c = getch(); - if (c < 0) { - break; - } - m_gcount++; - if (c == delim) { - break; - } - } - return *this; -} -//------------------------------------------------------------------------------ -int istream::peek() { - int16_t c; - FatPos_t pos; - m_gcount = 0; - getpos(&pos); - c = getch(); - if (c < 0) { - if (!bad()) { - setstate(eofbit); - } - } else { - setpos(&pos); - } - return c; -} -//------------------------------------------------------------------------------ -int16_t istream::readSkip() { - int16_t c; - do { - c = getch(); - } while (isspace(c) && (flags() & skipws)); - return c; -} -//------------------------------------------------------------------------------ -/** used to implement ws() */ -void istream::skipWhite() { - int c; - FatPos_t pos; - do { - c = getch(&pos); - } while (isspace(c)); - setpos(&pos); -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/istream.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/istream.h deleted file mode 100644 index 5fa81d1b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/istream.h +++ /dev/null @@ -1,384 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef istream_h -#define istream_h -/** - * \file - * \brief \ref istream class - */ -#include "ios.h" - -/** - * \class istream - * \brief Input Stream - */ -class istream : public virtual ios { - public: - istream() {} - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - istream& operator>>(istream& (*pf)(istream& str)) { - return pf(*this); - } - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - istream& operator>>(ios_base& (*pf)(ios_base& str)) { - pf(*this); - return *this; - } - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - istream& operator>>(ios& (*pf)(ios& str)) { - pf(*this); - return *this; - } - /** - * Extract a character string - * \param[out] str location to store the string. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(char *str) { - getStr(str); - return *this; - } - /** - * Extract a character - * \param[out] ch location to store the character. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(char& ch) { - getChar(&ch); - return *this; - } - /** - * Extract a character string - * \param[out] str location to store the string. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(signed char *str) { - getStr(reinterpret_cast(str)); - return *this; - } - /** - * Extract a character - * \param[out] ch location to store the character. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(signed char& ch) { - getChar(reinterpret_cast(&ch)); - return *this; - } - /** - * Extract a character string - * \param[out] str location to store the string. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(unsigned char *str) { - getStr(reinterpret_cast(str)); - return *this; - } - /** - * Extract a character - * \param[out] ch location to store the character. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(unsigned char& ch) { - getChar(reinterpret_cast(&ch)); - return *this; - } - /** - * Extract a value of type bool. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>>(bool& arg) { - getBool(&arg); - return *this; - } - /** - * Extract a value of type short. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(short& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type unsigned short. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(unsigned short& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type int. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(int& arg) { - getNumber(&arg); - return *this; - } - /** - * Extract a value of type unsigned int. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(unsigned int& arg) { - getNumber(&arg); - return *this; - } - /** - * Extract a value of type long. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(long& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type unsigned long. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>>(unsigned long& arg) { // NOLINT - getNumber(&arg); - return *this; - } - /** - * Extract a value of type double. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>> (double& arg) { - getDouble(&arg); - return *this; - } - /** - * Extract a value of type float. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream &operator>> (float& arg) { - double v; - getDouble(&v); - arg = v; - return *this; - } - /** - * Extract a value of type void*. - * \param[out] arg location to store the value. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& operator>> (void*& arg) { - uint32_t val; - getNumber(&val); - arg = reinterpret_cast(val); - return *this; - } - /** - * \return The number of characters extracted by the last unformatted - * input function. - */ - streamsize gcount() const { - return m_gcount; - } - /** - * Extract a character if one is available. - * - * \return The character or -1 if a failure occurs. A failure is indicated - * by the stream state. - */ - int get(); - /** - * Extract a character if one is available. - * - * \param[out] ch location to receive the extracted character. - * - * \return always returns *this. A failure is indicated by the stream state. - */ - istream& get(char& ch); - /** - * Extract characters. - * - * \param[out] str Location to receive extracted characters. - * \param[in] n Size of str. - * \param[in] delim Delimiter - * - * Characters are extracted until extraction fails, n is less than 1, - * n-1 characters are extracted, or the next character equals - * \a delim (delim is not extracted). If no characters are extracted - * failbit is set. If end-of-file occurs the eofbit is set. - * - * \return always returns *this. A failure is indicated by the stream state. - */ - istream& get(char *str, streamsize n, char delim = '\n'); - /** - * Extract characters - * - * \param[out] str Location to receive extracted characters. - * \param[in] n Size of str. - * \param[in] delim Delimiter - * - * Characters are extracted until extraction fails, - * the next character equals \a delim (delim is extracted), or n-1 - * characters are extracted. - * - * The failbit is set if no characters are extracted or n-1 characters - * are extracted. If end-of-file occurs the eofbit is set. - * - * \return always returns *this. A failure is indicated by the stream state. - */ - istream& getline(char *str, streamsize n, char delim = '\n'); - /** - * Extract characters and discard them. - * - * \param[in] n maximum number of characters to ignore. - * \param[in] delim Delimiter. - * - * Characters are extracted until extraction fails, \a n characters - * are extracted, or the next input character equals \a delim - * (the delimiter is extracted). If end-of-file occurs the eofbit is set. - * - * Failures are indicated by the state of the stream. - * - * \return *this - * - */ - istream& ignore(streamsize n = 1, int delim = -1); - /** - * Return the next available character without consuming it. - * - * \return The character if the stream state is good else -1; - * - */ - int peek(); -// istream& read(char *str, streamsize count); -// streamsize readsome(char *str, streamsize count); - /** - * \return the stream position - */ - pos_type tellg() { - return tellpos(); - } - /** - * Set the stream position - * \param[in] pos The absolute position in which to move the read pointer. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& seekg(pos_type pos) { - if (!seekpos(pos)) { - setstate(failbit); - } - return *this; - } - /** - * Set the stream position. - * - * \param[in] off An offset to move the read pointer relative to way. - * \a off is a signed 32-bit int so the offset is limited to +- 2GB. - * \param[in] way One of ios::beg, ios::cur, or ios::end. - * \return Is always *this. Failure is indicated by the state of *this. - */ - istream& seekg(off_type off, seekdir way) { - if (!seekoff(off, way)) { - setstate(failbit); - } - return *this; - } - void skipWhite(); - - protected: - /// @cond SHOW_PROTECTED - /** - * Internal - do not use - * \return - */ - virtual int16_t getch() = 0; - /** - * Internal - do not use - * \param[out] pos - * \return - */ - int16_t getch(FatPos_t* pos) { - getpos(pos); - return getch(); - } - /** - * Internal - do not use - * \param[out] pos - */ - virtual void getpos(FatPos_t* pos) = 0; - /** - * Internal - do not use - * \param[in] pos - */ - virtual bool seekoff(off_type off, seekdir way) = 0; - virtual bool seekpos(pos_type pos) = 0; - virtual void setpos(FatPos_t* pos) = 0; - virtual pos_type tellpos() = 0; - - /// @endcond - private: - void getBool(bool *b); - void getChar(char* ch); - bool getDouble(double* value); - template void getNumber(T* value); - bool getNumber(uint32_t posMax, uint32_t negMax, uint32_t* num); - void getStr(char *str); - int16_t readSkip(); - - size_t m_gcount; -}; -//------------------------------------------------------------------------------ -template -void istream::getNumber(T* value) { - uint32_t tmp; - if ((T)-1 < 0) { - // number is signed, max positive value - uint32_t const m = ((uint32_t)-1) >> (33 - sizeof(T) * 8); - // max absolute value of negative number is m + 1. - if (getNumber(m, m + 1, &tmp)) { - *value = (T)tmp; - } - } else { - // max unsigned value for T - uint32_t const m = (T)-1; - if (getNumber(m, m, &tmp)) { - *value = (T)tmp; - } - } -} -#endif // istream_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ostream.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ostream.cpp deleted file mode 100644 index 5c1a3301..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ostream.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include -#include "ostream.h" -#ifndef PSTR -#define PSTR(x) x -#endif -//------------------------------------------------------------------------------ -void ostream::do_fill(unsigned len) { - for (; len < width(); len++) { - putch(fill()); - } - width(0); -} -//------------------------------------------------------------------------------ -void ostream::fill_not_left(unsigned len) { - if ((flags() & adjustfield) != left) { - do_fill(len); - } -} -//------------------------------------------------------------------------------ -char* ostream::fmtNum(uint32_t n, char *ptr, uint8_t base) { - char a = flags() & uppercase ? 'A' - 10 : 'a' - 10; - do { - uint32_t m = n; - n /= base; - char c = m - base * n; - *--ptr = c < 10 ? c + '0' : c + a; - } while (n); - return ptr; -} -//------------------------------------------------------------------------------ -void ostream::putBool(bool b) { - if (flags() & boolalpha) { - if (b) { - putPgm(PSTR("true")); - } else { - putPgm(PSTR("false")); - } - } else { - putChar(b ? '1' : '0'); - } -} -//------------------------------------------------------------------------------ -void ostream::putChar(char c) { - fill_not_left(1); - putch(c); - do_fill(1); -} -//------------------------------------------------------------------------------ -void ostream::putDouble(double n) { - uint8_t nd = precision(); - double round = 0.5; - char sign; - char buf[13]; // room for sign, 10 digits, '.', and zero byte - char *end = buf + sizeof(buf) - 1; - char *str = end; - // terminate string - *end = '\0'; - - // get sign and make nonnegative - if (n < 0.0) { - sign = '-'; - n = -n; - } else { - sign = flags() & showpos ? '+' : '\0'; - } - // check for larger than uint32_t - if (n > 4.0E9) { - putPgm(PSTR("BIG FLT")); - return; - } - // round up and separate int and fraction parts - for (uint8_t i = 0; i < nd; ++i) { - round *= 0.1; - } - n += round; - uint32_t intPart = n; - double fractionPart = n - intPart; - - // format intPart and decimal point - if (nd || (flags() & showpoint)) { - *--str = '.'; - } - str = fmtNum(intPart, str, 10); - - // calculate length for fill - uint8_t len = sign ? 1 : 0; - len += nd + end - str; - - // extract adjust field - fmtflags adj = flags() & adjustfield; - if (adj == internal) { - if (sign) { - putch(sign); - } - do_fill(len); - } else { - // do fill for internal or right - fill_not_left(len); - if (sign) { - *--str = sign; - } - } - putstr(str); - // output fraction - while (nd-- > 0) { - fractionPart *= 10.0; - int digit = static_cast(fractionPart); - putch(digit + '0'); - fractionPart -= digit; - } - // do fill if not done above - do_fill(len); -} -//------------------------------------------------------------------------------ -void ostream::putNum(int32_t n) { - bool neg = n < 0 && flagsToBase() == 10; - if (neg) { - n = -n; - } - putNum(n, neg); -} -//------------------------------------------------------------------------------ -void ostream::putNum(uint32_t n, bool neg) { - char buf[13]; - char* end = buf + sizeof(buf) - 1; - char* num; - char* str; - uint8_t base = flagsToBase(); - *end = '\0'; - str = num = fmtNum(n, end, base); - if (base == 10) { - if (neg) { - *--str = '-'; - } else if (flags() & showpos) { - *--str = '+'; - } - } else if (flags() & showbase) { - if (flags() & hex) { - *--str = flags() & uppercase ? 'X' : 'x'; - } - *--str = '0'; - } - uint8_t len = end - str; - fmtflags adj = flags() & adjustfield; - if (adj == internal) { - while (str < num) { - putch(*str++); - } - } - if (adj != left) { - do_fill(len); - } - putstr(str); - do_fill(len); -} -//------------------------------------------------------------------------------ -void ostream::putPgm(const char* str) { - int n; - for (n = 0; pgm_read_byte(&str[n]); n++) {} - fill_not_left(n); - for (uint8_t c; (c = pgm_read_byte(str)); str++) { - putch(c); - } - do_fill(n); -} -//------------------------------------------------------------------------------ -void ostream::putStr(const char *str) { - unsigned n = strlen(str); - fill_not_left(n); - putstr(str); - do_fill(n); -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ostream.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ostream.h deleted file mode 100644 index 106898aa..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FatLib/ostream.h +++ /dev/null @@ -1,276 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef ostream_h -#define ostream_h -/** - * \file - * \brief \ref ostream class - */ -#include "ios.h" -//============================================================================== -/** - * \class ostream - * \brief Output Stream - */ -class ostream : public virtual ios { - public: - ostream() {} - - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - ostream& operator<< (ostream& (*pf)(ostream& str)) { - return pf(*this); - } - /** call manipulator - * \param[in] pf function to call - * \return the stream - */ - ostream& operator<< (ios_base& (*pf)(ios_base& str)) { - pf(*this); - return *this; - } - /** Output bool - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (bool arg) { - putBool(arg); - return *this; - } - /** Output string - * \param[in] arg string to output - * \return the stream - */ - ostream &operator<< (const char *arg) { - putStr(arg); - return *this; - } - /** Output string - * \param[in] arg string to output - * \return the stream - */ - ostream &operator<< (const signed char *arg) { - putStr((const char*)arg); - return *this; - } - /** Output string - * \param[in] arg string to output - * \return the stream - */ - ostream &operator<< (const unsigned char *arg) { - putStr((const char*)arg); - return *this; - } - /** Output character - * \param[in] arg character to output - * \return the stream - */ - ostream &operator<< (char arg) { - putChar(arg); - return *this; - } - /** Output character - * \param[in] arg character to output - * \return the stream - */ - ostream &operator<< (signed char arg) { - putChar(static_cast(arg)); - return *this; - } - /** Output character - * \param[in] arg character to output - * \return the stream - */ - ostream &operator<< (unsigned char arg) { - putChar(static_cast(arg)); - return *this; - } - /** Output double - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (double arg) { - putDouble(arg); - return *this; - } - /** Output float - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (float arg) { - putDouble(arg); - return *this; - } - /** Output signed short - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (short arg) { // NOLINT - putNum((int32_t)arg); - return *this; - } - /** Output unsigned short - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (unsigned short arg) { // NOLINT - putNum((uint32_t)arg); - return *this; - } - /** Output signed int - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (int arg) { - putNum((int32_t)arg); - return *this; - } - /** Output unsigned int - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (unsigned int arg) { - putNum((uint32_t)arg); - return *this; - } - /** Output signed long - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (long arg) { // NOLINT - putNum((int32_t)arg); - return *this; - } - /** Output unsigned long - * \param[in] arg value to output - * \return the stream - */ - ostream &operator<< (unsigned long arg) { // NOLINT - putNum((uint32_t)arg); - return *this; - } - /** Output pointer - * \param[in] arg value to output - * \return the stream - */ - ostream& operator<< (const void* arg) { - putNum(reinterpret_cast(arg)); - return *this; - } -#if (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - /** Output a string from flash using the Arduino F() macro. - * \param[in] arg pointing to flash string - * \return the stream - */ - ostream &operator<< (const __FlashStringHelper *arg) { - putPgm(reinterpret_cast(arg)); - return *this; - } -#endif // (defined(ARDUINO) && ENABLE_ARDUINO_FEATURES) || defined(DOXYGEN) - /** - * Puts a character in a stream. - * - * The unformatted output function inserts the element \a ch. - * It returns *this. - * - * \param[in] ch The character - * \return A reference to the ostream object. - */ - ostream& put(char ch) { - putch(ch); - return *this; - } -// ostream& write(char *str, streamsize count); - /** - * Flushes the buffer associated with this stream. The flush function - * calls the sync function of the associated file. - * \return A reference to the ostream object. - */ - ostream& flush() { - if (!sync()) { - setstate(badbit); - } - return *this; - } - /** - * \return the stream position - */ - pos_type tellp() { - return tellpos(); - } - /** - * Set the stream position - * \param[in] pos The absolute position in which to move the write pointer. - * \return Is always *this. Failure is indicated by the state of *this. - */ - ostream& seekp(pos_type pos) { - if (!seekpos(pos)) { - setstate(failbit); - } - return *this; - } - /** - * Set the stream position. - * - * \param[in] off An offset to move the write pointer relative to way. - * \a off is a signed 32-bit int so the offset is limited to +- 2GB. - * \param[in] way One of ios::beg, ios::cur, or ios::end. - * \return Is always *this. Failure is indicated by the state of *this. - */ - ostream& seekp(off_type off, seekdir way) { - if (!seekoff(off, way)) { - setstate(failbit); - } - return *this; - } - - protected: - /// @cond SHOW_PROTECTED - /** Put character with binary/text conversion - * \param[in] ch character to write - */ - virtual void putch(char ch) = 0; - virtual void putstr(const char *str) = 0; - virtual bool seekoff(off_type pos, seekdir way) = 0; - virtual bool seekpos(pos_type pos) = 0; - virtual bool sync() = 0; - - virtual pos_type tellpos() = 0; - /// @endcond - private: - void do_fill(unsigned len); - void fill_not_left(unsigned len); - char* fmtNum(uint32_t n, char *ptr, uint8_t base); - void putBool(bool b); - void putChar(char c); - void putDouble(double n); - void putNum(uint32_t n, bool neg = false); - void putNum(int32_t n); - void putPgm(const char* str); - void putStr(const char* str); -}; -#endif // ostream_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/FreeStack.h b/extra-libraries/SDFat/SdFat-1.1.0/src/FreeStack.h deleted file mode 100644 index c655ef61..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/FreeStack.h +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef FreeStack_h -#define FreeStack_h -/** - * \file - * \brief FreeStack() function. - */ -#if defined(__AVR__) || defined(DOXYGEN) -/** boundary between stack and heap. */ -extern char *__brkval; -/** End of bss section.*/ -extern char __bss_end; -/** Amount of free stack space. - * \return The number of free bytes. - */ -static int FreeStack() { - char* sp = reinterpret_cast(SP); - return __brkval ? sp - __brkval : sp - &__bss_end; -// char top; -// return __brkval ? &top - __brkval : &top - &__bss_end; -} -#elif defined(PLATFORM_ID) // Particle board -static int FreeStack() { - return System.freeMemory(); -} -#elif defined(__arm__) -extern "C" char* sbrk(int incr); -static int FreeStack() { - char top = 't'; - return &top - reinterpret_cast(sbrk(0)); -} -#else -#warning FreeStack is not defined for this system. -static int FreeStack() { - return 0; -} -#endif -#endif // FreeStack_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/MinimumSerial.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/MinimumSerial.cpp deleted file mode 100644 index e0d4fb25..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/MinimumSerial.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SysCall.h" -#if defined(UDR0) || defined(DOXYGEN) -#include "MinimumSerial.h" -const uint16_t MIN_2X_BAUD = F_CPU/(4*(2*0XFFF + 1)) + 1; -//------------------------------------------------------------------------------ -int MinimumSerial::available() { - return UCSR0A & (1 << RXC0) ? 1 : 0; -} -//------------------------------------------------------------------------------ -void MinimumSerial::begin(uint32_t baud) { - uint16_t baud_setting; - // don't worry, the compiler will squeeze out F_CPU != 16000000UL - if ((F_CPU != 16000000UL || baud != 57600) && baud > MIN_2X_BAUD) { - // Double the USART Transmission Speed - UCSR0A = 1 << U2X0; - baud_setting = (F_CPU / 4 / baud - 1) / 2; - } else { - // hardcoded exception for compatibility with the bootloader shipped - // with the Duemilanove and previous boards and the firmware on the 8U2 - // on the Uno and Mega 2560. - UCSR0A = 0; - baud_setting = (F_CPU / 8 / baud - 1) / 2; - } - // assign the baud_setting - UBRR0H = baud_setting >> 8; - UBRR0L = baud_setting; - // enable transmit and receive - UCSR0B |= (1 << TXEN0) | (1 << RXEN0); -} -//------------------------------------------------------------------------------ -void MinimumSerial::flush() { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} -} -//------------------------------------------------------------------------------ -int MinimumSerial::read() { - if (UCSR0A & (1 << RXC0)) { - return UDR0; - } - return -1; -} -//------------------------------------------------------------------------------ -size_t MinimumSerial::write(uint8_t b) { - while (((1 << UDRIE0) & UCSR0B) || !(UCSR0A & (1 << UDRE0))) {} - UDR0 = b; - return 1; -} -#endif // defined(UDR0) || defined(DOXYGEN) diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/MinimumSerial.h b/extra-libraries/SDFat/SdFat-1.1.0/src/MinimumSerial.h deleted file mode 100644 index 0a0f667d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/MinimumSerial.h +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - /** - * \file - * \brief Minimal AVR Serial driver. - */ -#ifndef MinimumSerial_h -#define MinimumSerial_h -#include "SysCall.h" -//============================================================================== -/** - * \class MinimumSerial - * \brief mini serial class for the %SdFat library. - */ -class MinimumSerial : public Print { - public: - /** \return true for hardware serial */ - operator bool() { return true; } - /** - * \return one if data is available. - */ - int available(); - /** - * Set baud rate for serial port zero and enable in non interrupt mode. - * Do not call this function if you use another serial library. - * \param[in] baud rate - */ - void begin(uint32_t baud); - /** Wait for write done. */ - void flush(); - /** - * Unbuffered read - * \return -1 if no character is available or an available character. - */ - int read(); - /** - * Unbuffered write - * - * \param[in] b byte to write. - * \return 1 - */ - size_t write(uint8_t b); - using Print::write; -}; -#endif // MinimumSerial_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdInfo.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdInfo.h deleted file mode 100644 index 38579414..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdInfo.h +++ /dev/null @@ -1,485 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdInfo_h -#define SdInfo_h -#include -// Based on the document: -// -// SD Specifications -// Part 1 -// Physical Layer -// Simplified Specification -// Version 5.00 -// Aug 10, 2016 -// -// https://www.sdcard.org/downloads/pls/ -//------------------------------------------------------------------------------ -// SD card errors -// See the SD Specification for command info. -typedef enum { - SD_CARD_ERROR_NONE = 0, - - // Basic commands and switch command. - SD_CARD_ERROR_CMD0 = 0X20, - SD_CARD_ERROR_CMD2, - SD_CARD_ERROR_CMD3, - SD_CARD_ERROR_CMD6, - SD_CARD_ERROR_CMD7, - SD_CARD_ERROR_CMD8, - SD_CARD_ERROR_CMD9, - SD_CARD_ERROR_CMD10, - SD_CARD_ERROR_CMD12, - SD_CARD_ERROR_CMD13, - - // Read, write, erase, and extension commands. - SD_CARD_ERROR_CMD17 = 0X30, - SD_CARD_ERROR_CMD18, - SD_CARD_ERROR_CMD24, - SD_CARD_ERROR_CMD25, - SD_CARD_ERROR_CMD32, - SD_CARD_ERROR_CMD33, - SD_CARD_ERROR_CMD38, - SD_CARD_ERROR_CMD58, - SD_CARD_ERROR_CMD59, - - // Application specific commands. - SD_CARD_ERROR_ACMD6 = 0X40, - SD_CARD_ERROR_ACMD13, - SD_CARD_ERROR_ACMD23, - SD_CARD_ERROR_ACMD41, - - // Read/write errors - SD_CARD_ERROR_READ = 0X50, - SD_CARD_ERROR_READ_CRC, - SD_CARD_ERROR_READ_FIFO, - SD_CARD_ERROR_READ_REG, - SD_CARD_ERROR_READ_START, - SD_CARD_ERROR_READ_TIMEOUT, - SD_CARD_ERROR_STOP_TRAN, - SD_CARD_ERROR_WRITE, - SD_CARD_ERROR_WRITE_FIFO, - SD_CARD_ERROR_WRITE_START, - SD_CARD_ERROR_FLASH_PROGRAMMING, - SD_CARD_ERROR_WRITE_TIMEOUT, - - // Misc errors. - SD_CARD_ERROR_DMA = 0X60, - SD_CARD_ERROR_ERASE, - SD_CARD_ERROR_ERASE_SINGLE_BLOCK, - SD_CARD_ERROR_ERASE_TIMEOUT, - SD_CARD_ERROR_INIT_NOT_CALLED, - SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED -} sd_error_code_t; -//------------------------------------------------------------------------------ -// card types -/** Standard capacity V1 SD card */ -const uint8_t SD_CARD_TYPE_SD1 = 1; -/** Standard capacity V2 SD card */ -const uint8_t SD_CARD_TYPE_SD2 = 2; -/** High Capacity SD card */ -const uint8_t SD_CARD_TYPE_SDHC = 3; -//------------------------------------------------------------------------------ -#define SD_SCK_HZ(maxSpeed) SPISettings(maxSpeed, MSBFIRST, SPI_MODE0) -#define SD_SCK_MHZ(maxMhz) SPISettings(1000000UL*maxMhz, MSBFIRST, SPI_MODE0) -// SPI divisor constants -/** Set SCK to max rate of F_CPU/2. */ -#define SPI_FULL_SPEED SD_SCK_MHZ(50) -/** Set SCK rate to F_CPU/3 for Due */ -#define SPI_DIV3_SPEED SD_SCK_HZ(F_CPU/3) -/** Set SCK rate to F_CPU/4. */ -#define SPI_HALF_SPEED SD_SCK_HZ(F_CPU/4) -/** Set SCK rate to F_CPU/6 for Due */ -#define SPI_DIV6_SPEED SD_SCK_HZ(F_CPU/6) -/** Set SCK rate to F_CPU/8. */ -#define SPI_QUARTER_SPEED SD_SCK_HZ(F_CPU/8) -/** Set SCK rate to F_CPU/16. */ -#define SPI_EIGHTH_SPEED SD_SCK_HZ(F_CPU/16) -/** Set SCK rate to F_CPU/32. */ -#define SPI_SIXTEENTH_SPEED SD_SCK_HZ(F_CPU/32) -//------------------------------------------------------------------------------ -// SD operation timeouts -/** CMD0 retry count */ -const uint8_t SD_CMD0_RETRY = 10; -/** command timeout ms */ -const uint16_t SD_CMD_TIMEOUT = 300; -/** init timeout ms */ -const uint16_t SD_INIT_TIMEOUT = 2000; -/** erase timeout ms */ -const uint16_t SD_ERASE_TIMEOUT = 10000; -/** read timeout ms */ -const uint16_t SD_READ_TIMEOUT = 1000; -/** write time out ms */ -const uint16_t SD_WRITE_TIMEOUT = 2000; -//------------------------------------------------------------------------------ -// SD card commands -/** GO_IDLE_STATE - init card in spi mode if CS low */ -const uint8_t CMD0 = 0X00; -/** ALL_SEND_CID - Asks any card to send the CID. */ -const uint8_t CMD2 = 0X02; -/** SEND_RELATIVE_ADDR - Ask the card to publish a new RCA. */ -const uint8_t CMD3 = 0X03; -/** SWITCH_FUNC - Switch Function Command */ -const uint8_t CMD6 = 0X06; -/** SELECT/DESELECT_CARD - toggles between the stand-by and transfer states. */ -const uint8_t CMD7 = 0X07; -/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ -const uint8_t CMD8 = 0X08; -/** SEND_CSD - read the Card Specific Data (CSD register) */ -const uint8_t CMD9 = 0X09; -/** SEND_CID - read the card identification information (CID register) */ -const uint8_t CMD10 = 0X0A; -/** STOP_TRANSMISSION - end multiple block read sequence */ -const uint8_t CMD12 = 0X0C; -/** SEND_STATUS - read the card status register */ -const uint8_t CMD13 = 0X0D; -/** READ_SINGLE_BLOCK - read a single data block from the card */ -const uint8_t CMD17 = 0X11; -/** READ_MULTIPLE_BLOCK - read a multiple data blocks from the card */ -const uint8_t CMD18 = 0X12; -/** WRITE_BLOCK - write a single data block to the card */ -const uint8_t CMD24 = 0X18; -/** WRITE_MULTIPLE_BLOCK - write blocks of data until a STOP_TRANSMISSION */ -const uint8_t CMD25 = 0X19; -/** ERASE_WR_BLK_START - sets the address of the first block to be erased */ -const uint8_t CMD32 = 0X20; -/** ERASE_WR_BLK_END - sets the address of the last block of the continuous - range to be erased*/ -const uint8_t CMD33 = 0X21; -/** ERASE - erase all previously selected blocks */ -const uint8_t CMD38 = 0X26; -/** APP_CMD - escape for application specific command */ -const uint8_t CMD55 = 0X37; -/** READ_OCR - read the OCR register of a card */ -const uint8_t CMD58 = 0X3A; -/** CRC_ON_OFF - enable or disable CRC checking */ -const uint8_t CMD59 = 0X3B; -/** SET_BUS_WIDTH - Defines the data bus width for data transfer. */ -const uint8_t ACMD6 = 0X06; -/** SD_STATUS - Send the SD Status. */ -const uint8_t ACMD13 = 0X0D; -/** SET_WR_BLK_ERASE_COUNT - Set the number of write blocks to be - pre-erased before writing */ -const uint8_t ACMD23 = 0X17; -/** SD_SEND_OP_COMD - Sends host capacity support information and - activates the card's initialization process */ -const uint8_t ACMD41 = 0X29; -//============================================================================== -// CARD_STATUS -/** The command's argument was out of the allowed range for this card. */ -const uint32_t CARD_STATUS_OUT_OF_RANGE = 1UL << 31; -/** A misaligned address which did not match the block length. */ -const uint32_t CARD_STATUS_ADDRESS_ERROR = 1UL << 30; -/** The transferred block length is not allowed for this card. */ -const uint32_t CARD_STATUS_BLOCK_LEN_ERROR = 1UL << 29; -/** An error in the sequence of erase commands occurred. */ -const uint32_t CARD_STATUS_ERASE_SEQ_ERROR = 1UL <<28; -/** An invalid selection of write-blocks for erase occurred. */ -const uint32_t CARD_STATUS_ERASE_PARAM = 1UL << 27; -/** Set when the host attempts to write to a protected block. */ -const uint32_t CARD_STATUS_WP_VIOLATION = 1UL << 26; -/** When set, signals that the card is locked by the host. */ -const uint32_t CARD_STATUS_CARD_IS_LOCKED = 1UL << 25; -/** Set when a sequence or password error has been detected. */ -const uint32_t CARD_STATUS_LOCK_UNLOCK_FAILED = 1UL << 24; -/** The CRC check of the previous command failed. */ -const uint32_t CARD_STATUS_COM_CRC_ERROR = 1UL << 23; -/** Command not legal for the card state. */ -const uint32_t CARD_STATUS_ILLEGAL_COMMAND = 1UL << 22; -/** Card internal ECC was applied but failed to correct the data. */ -const uint32_t CARD_STATUS_CARD_ECC_FAILED = 1UL << 21; -/** Internal card controller error */ -const uint32_t CARD_STATUS_CC_ERROR = 1UL << 20; -/** A general or an unknown error occurred during the operation. */ -const uint32_t CARD_STATUS_ERROR = 1UL << 19; -// bits 19, 18, and 17 reserved. -/** Permanent WP set or attempt to change read only values of CSD. */ -const uint32_t CARD_STATUS_CSD_OVERWRITE = 1UL <<16; -/** partial address space was erased due to write protect. */ -const uint32_t CARD_STATUS_WP_ERASE_SKIP = 1UL << 15; -/** The command has been executed without using the internal ECC. */ -const uint32_t CARD_STATUS_CARD_ECC_DISABLED = 1UL << 14; -/** out of erase sequence command was received. */ -const uint32_t CARD_STATUS_ERASE_RESET = 1UL << 13; -/** The state of the card when receiving the command. - * 0 = idle - * 1 = ready - * 2 = ident - * 3 = stby - * 4 = tran - * 5 = data - * 6 = rcv - * 7 = prg - * 8 = dis - * 9-14 = reserved - * 15 = reserved for I/O mode - */ -const uint32_t CARD_STATUS_CURRENT_STATE = 0XF << 9; -/** Shift for current state. */ -const uint32_t CARD_STATUS_CURRENT_STATE_SHIFT = 9; -/** Corresponds to buffer empty signaling on the bus. */ -const uint32_t CARD_STATUS_READY_FOR_DATA = 1UL << 8; -// bit 7 reserved. -/** Extension Functions may set this bit to get host to deal with events. */ -const uint32_t CARD_STATUS_FX_EVENT = 1UL << 6; -/** The card will expect ACMD, or the command has been interpreted as ACMD */ -const uint32_t CARD_STATUS_APP_CMD = 1UL << 5; -// bit 4 reserved. -/** Error in the sequence of the authentication process. */ -const uint32_t CARD_STATUS_AKE_SEQ_ERROR = 1UL << 3; -// bits 2,1, and 0 reserved for manufacturer test mode. -//============================================================================== -/** status for card in the ready state */ -const uint8_t R1_READY_STATE = 0X00; -/** status for card in the idle state */ -const uint8_t R1_IDLE_STATE = 0X01; -/** status bit for illegal command */ -const uint8_t R1_ILLEGAL_COMMAND = 0X04; -/** start data token for read or write single block*/ -const uint8_t DATA_START_BLOCK = 0XFE; -/** stop token for write multiple blocks*/ -const uint8_t STOP_TRAN_TOKEN = 0XFD; -/** start data token for write multiple blocks*/ -const uint8_t WRITE_MULTIPLE_TOKEN = 0XFC; -/** mask for data response tokens after a write block operation */ -const uint8_t DATA_RES_MASK = 0X1F; -/** write data accepted token */ -const uint8_t DATA_RES_ACCEPTED = 0X05; -//============================================================================== -/** - * \class CID - * \brief Card IDentification (CID) register. - */ -typedef struct CID { - // byte 0 - /** Manufacturer ID */ - unsigned char mid; - // byte 1-2 - /** OEM/Application ID */ - char oid[2]; - // byte 3-7 - /** Product name */ - char pnm[5]; - // byte 8 - /** Product revision least significant digit */ - unsigned char prv_m : 4; - /** Product revision most significant digit */ - unsigned char prv_n : 4; - // byte 9-12 - /** Product serial number */ - uint32_t psn; - // byte 13 - /** Manufacturing date year low digit */ - unsigned char mdt_year_high : 4; - /** not used */ - unsigned char reserved : 4; - // byte 14 - /** Manufacturing date month */ - unsigned char mdt_month : 4; - /** Manufacturing date year low digit */ - unsigned char mdt_year_low : 4; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** CRC7 checksum */ - unsigned char crc : 7; -} __attribute__((packed)) cid_t; - -//============================================================================== -/** - * \class CSDV1 - * \brief CSD register for version 1.00 cards . - */ -typedef struct CSDV1 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - unsigned char taac; - // byte 2 - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - unsigned char c_size_high : 2; - unsigned char reserved2 : 2; - unsigned char dsr_imp : 1; - unsigned char read_blk_misalign : 1; - unsigned char write_blk_misalign : 1; - unsigned char read_bl_partial : 1; - // byte 7 - unsigned char c_size_mid; - // byte 8 - unsigned char vdd_r_curr_max : 3; - unsigned char vdd_r_curr_min : 3; - unsigned char c_size_low : 2; - // byte 9 - unsigned char c_size_mult_high : 2; - unsigned char vdd_w_cur_max : 3; - unsigned char vdd_w_curr_min : 3; - // byte 10 - unsigned char sector_size_high : 6; - unsigned char erase_blk_en : 1; - unsigned char c_size_mult_low : 1; - // byte 11 - unsigned char wp_grp_size : 7; - unsigned char sector_size_low : 1; - // byte 12 - unsigned char write_bl_len_high : 2; - unsigned char r2w_factor : 3; - unsigned char reserved3 : 2; - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved4 : 5; - unsigned char write_partial : 1; - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved5: 2; - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Indicates the file format on the card */ - unsigned char file_format_grp : 1; - // byte 15 - unsigned char always1 : 1; - unsigned char crc : 7; -} __attribute__((packed)) csd1_t; -//============================================================================== -/** - * \class CSDV2 - * \brief CSD register for version 2.00 cards. - */ -typedef struct CSDV2 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - /** fixed to 0X0E */ - unsigned char taac; - // byte 2 - /** fixed to 0 */ - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - /** This field is fixed to 9h, which indicates READ_BL_LEN=512 Byte */ - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - /** not used */ - unsigned char reserved2 : 4; - unsigned char dsr_imp : 1; - /** fixed to 0 */ - unsigned char read_blk_misalign : 1; - /** fixed to 0 */ - unsigned char write_blk_misalign : 1; - /** fixed to 0 - no partial read */ - unsigned char read_bl_partial : 1; - // byte 7 - /** high part of card size */ - unsigned char c_size_high : 6; - /** not used */ - unsigned char reserved3 : 2; - // byte 8 - /** middle part of card size */ - unsigned char c_size_mid; - // byte 9 - /** low part of card size */ - unsigned char c_size_low; - // byte 10 - /** sector size is fixed at 64 KB */ - unsigned char sector_size_high : 6; - /** fixed to 1 - erase single is supported */ - unsigned char erase_blk_en : 1; - /** not used */ - unsigned char reserved4 : 1; - // byte 11 - unsigned char wp_grp_size : 7; - /** sector size is fixed at 64 KB */ - unsigned char sector_size_low : 1; - // byte 12 - /** write_bl_len fixed for 512 byte blocks */ - unsigned char write_bl_len_high : 2; - /** fixed value of 2 */ - unsigned char r2w_factor : 3; - /** not used */ - unsigned char reserved5 : 2; - /** fixed value of 0 - no write protect groups */ - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved6 : 5; - /** always zero - no partial block read*/ - unsigned char write_partial : 1; - /** write_bl_len fixed for 512 byte blocks */ - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved7: 2; - /** Do not use always 0 */ - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Do not use always 0 */ - unsigned char file_format_grp : 1; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** checksum */ - unsigned char crc : 7; -} __attribute__((packed)) csd2_t; -//============================================================================== -/** - * \class csd_t - * \brief Union of old and new style CSD register. - */ -union csd_t { - csd1_t v1; - csd2_t v2; -}; -//----------------------------------------------------------------------------- -inline uint32_t sdCardCapacity(csd_t* csd) { - if (csd->v1.csd_ver == 0) { - uint8_t read_bl_len = csd->v1.read_bl_len; - uint16_t c_size = (csd->v1.c_size_high << 10) - | (csd->v1.c_size_mid << 2) | csd->v1.c_size_low; - uint8_t c_size_mult = (csd->v1.c_size_mult_high << 1) - | csd->v1.c_size_mult_low; - return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); - } else if (csd->v2.csd_ver == 1) { - uint32_t c_size = 0X10000L * csd->v2.c_size_high + 0X100L - * (uint32_t)csd->v2.c_size_mid + csd->v2.c_size_low; - return (c_size + 1) << 10; - } else { - return 0; - } -} -#endif // SdInfo_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCard.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCard.cpp deleted file mode 100644 index fa1cae79..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCard.cpp +++ /dev/null @@ -1,802 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiCard.h" -//============================================================================== -// debug trace macro -#define SD_TRACE(m, b) -// #define SD_TRACE(m, b) Serial.print(m);Serial.println(b); -#define SD_CS_DBG(m) -// #define SD_CS_DBG(m) Serial.println(F(m)); - -#define DBG_PROFILE_STATS 0 -#if DBG_PROFILE_STATS - -#define DBG_TAG_LIST\ - DBG_TAG(DBG_CMD0_TIME, "CMD0 time")\ - DBG_TAG(DBG_ACMD41_TIME, "ACMD41 time")\ - DBG_TAG(DBG_CMD_BUSY, "cmd busy")\ - DBG_TAG(DBG_ERASE_BUSY, "erase busy")\ - DBG_TAG(DBG_WAIT_READ, "wait read")\ - DBG_TAG(DBG_WRITE_FLASH, "write flash")\ - DBG_TAG(DBG_WRITE_BUSY, "write busy")\ - DBG_TAG(DBG_WRITE_STOP, "write stop")\ - DBG_TAG(DBG_ACMD41_COUNT, "ACMD41 count")\ - DBG_TAG(DBG_CMD0_COUNT, "CMD0 count") - -#define DBG_TIME_DIM DBG_ACMD41_COUNT - -enum DbgTag { - #define DBG_TAG(tag, str) tag, - DBG_TAG_LIST - DBG_COUNT_DIM - #undef DBG_TAG -}; - -static uint32_t dbgCount[DBG_COUNT_DIM]; -static uint32_t dbgBgnTime[DBG_TIME_DIM]; -static uint32_t dbgMaxTime[DBG_TIME_DIM]; -static uint32_t dbgMinTime[DBG_TIME_DIM]; -static uint32_t dbgTotalTime[DBG_TIME_DIM]; -//------------------------------------------------------------------------------ -static void dbgBeginTime(DbgTag tag) { - dbgBgnTime[tag] = micros(); -} -//------------------------------------------------------------------------------ -static void dbgClearStats() { - for (int i = 0; i < DBG_COUNT_DIM; i++) { - dbgCount[i] = 0; - if (i < DBG_TIME_DIM) { - dbgMaxTime[i] = 0; - dbgMinTime[i] = 9999999; - dbgTotalTime[i] = 0; - } - } -} -//------------------------------------------------------------------------------ -static void dbgEndTime(DbgTag tag) { - uint32_t m = micros() - dbgBgnTime[tag]; - dbgTotalTime[tag] += m; - if (m > dbgMaxTime[tag]) { - dbgMaxTime[tag] = m; - } - if (m < dbgMinTime[tag]) { - dbgMinTime[tag] = m; - } - dbgCount[tag]++; -} -//------------------------------------------------------------------------------ -static void dbgEventCount(DbgTag tag) { - dbgCount[tag]++; -} -//------------------------------------------------------------------------------ -static void dbgPrintTagText(uint8_t tag) { - #define DBG_TAG(e, m) case e: Serial.print(F(m)); break; - switch (tag) { - DBG_TAG_LIST - } - #undef DBG_TAG -} -//------------------------------------------------------------------------------ -static void dbgPrintStats() { - Serial.println(); - Serial.println(F("=======================")); - Serial.println(F("item,event,min,max,avg")); - Serial.println(F("tag,count,usec,usec,usec")); - for (int i = 0; i < DBG_COUNT_DIM; i++) { - if (dbgCount[i]) { - dbgPrintTagText(i); - Serial.print(','); - Serial.print(dbgCount[i]); - if (i < DBG_TIME_DIM) { - Serial.print(','); - Serial.print(dbgMinTime[i]); - Serial.print(','); - Serial.print(dbgMaxTime[i]); - Serial.print(','); - Serial.print(dbgTotalTime[i]/dbgCount[i]); - } - Serial.println(); - } - } - Serial.println(F("=======================")); - Serial.println(); -} -#undef DBG_TAG_LIST -#define DBG_BEGIN_TIME(tag) dbgBeginTime(tag) -#define DBG_END_TIME(tag) dbgEndTime(tag) -#define DBG_EVENT_COUNT(tag) dbgEventCount(tag) -#else // DBG_PROFILE_STATS -#define DBG_BEGIN_TIME(tag) -#define DBG_END_TIME(tag) -#define DBG_EVENT_COUNT(tag) -static void dbgClearStats() {} -static void dbgPrintStats() {} -#endif // DBG_PROFILE_STATS -//============================================================================== -#if USE_SD_CRC -// CRC functions -//------------------------------------------------------------------------------ -static uint8_t CRC7(const uint8_t* data, uint8_t n) { - uint8_t crc = 0; - for (uint8_t i = 0; i < n; i++) { - uint8_t d = data[i]; - for (uint8_t j = 0; j < 8; j++) { - crc <<= 1; - if ((d & 0x80) ^ (crc & 0x80)) { - crc ^= 0x09; - } - d <<= 1; - } - } - return (crc << 1) | 1; -} -//------------------------------------------------------------------------------ -#if USE_SD_CRC == 1 -// Shift based CRC-CCITT -// uses the x^16,x^12,x^5,x^1 polynomial. -static uint16_t CRC_CCITT(const uint8_t *data, size_t n) { - uint16_t crc = 0; - for (size_t i = 0; i < n; i++) { - crc = (uint8_t)(crc >> 8) | (crc << 8); - crc ^= data[i]; - crc ^= (uint8_t)(crc & 0xff) >> 4; - crc ^= crc << 12; - crc ^= (crc & 0xff) << 5; - } - return crc; -} -#elif USE_SD_CRC > 1 // CRC_CCITT -//------------------------------------------------------------------------------ -// Table based CRC-CCITT -// uses the x^16,x^12,x^5,x^1 polynomial. -#ifdef __AVR__ -static const uint16_t crctab[] PROGMEM = { -#else // __AVR__ -static const uint16_t crctab[] = { -#endif // __AVR__ - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, - 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, - 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, - 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, - 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, - 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, - 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, - 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, - 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, - 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, - 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, - 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, - 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, - 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, - 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, - 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, - 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, - 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, - 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, - 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, - 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, - 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, - 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 -}; -static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { - uint16_t crc = 0; - for (size_t i = 0; i < n; i++) { -#ifdef __AVR__ - crc = pgm_read_word(&crctab[(crc >> 8 ^ data[i]) & 0XFF]) ^ (crc << 8); -#else // __AVR__ - crc = crctab[(crc >> 8 ^ data[i]) & 0XFF] ^ (crc << 8); -#endif // __AVR__ - } - return crc; -} -#endif // CRC_CCITT -#endif // USE_SD_CRC -//============================================================================== -// SdSpiCard member functions -//------------------------------------------------------------------------------ -bool SdSpiCard::begin(SdSpiDriver* spi, uint8_t csPin, SPISettings settings) { - m_spiActive = false; - m_errorCode = SD_CARD_ERROR_NONE; - m_type = 0; - m_spiDriver = spi; - uint16_t t0 = curTimeMS(); - uint32_t arg; - - m_spiDriver->begin(csPin); - m_spiDriver->setSpiSettings(SD_SCK_HZ(250000)); - spiStart(); - - // must supply min of 74 clock cycles with CS high. - spiUnselect(); - for (uint8_t i = 0; i < 10; i++) { - spiSend(0XFF); - } - spiSelect(); - - DBG_BEGIN_TIME(DBG_CMD0_TIME); - // command to go idle in SPI mode - for (uint8_t i = 1;; i++) { - DBG_EVENT_COUNT(DBG_CMD0_COUNT); - if (cardCommand(CMD0, 0) == R1_IDLE_STATE) { - break; - } - if (i == SD_CMD0_RETRY) { - error(SD_CARD_ERROR_CMD0); - goto fail; - } - // stop multi-block write - spiSend(STOP_TRAN_TOKEN); - // finish block transfer - for (int i = 0; i < 520; i++) { - spiReceive(); - } - } - DBG_END_TIME(DBG_CMD0_TIME); -#if USE_SD_CRC - if (cardCommand(CMD59, 1) != R1_IDLE_STATE) { - error(SD_CARD_ERROR_CMD59); - goto fail; - } -#endif // USE_SD_CRC - // check SD version - if (cardCommand(CMD8, 0x1AA) == (R1_ILLEGAL_COMMAND | R1_IDLE_STATE)) { - type(SD_CARD_TYPE_SD1); - } else { - for (uint8_t i = 0; i < 4; i++) { - m_status = spiReceive(); - } - if (m_status == 0XAA) { - type(SD_CARD_TYPE_SD2); - } else { - error(SD_CARD_ERROR_CMD8); - goto fail; - } - } - // initialize card and send host supports SDHC if SD2 - arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; - DBG_BEGIN_TIME(DBG_ACMD41_TIME); - while (cardAcmd(ACMD41, arg) != R1_READY_STATE) { - DBG_EVENT_COUNT(DBG_ACMD41_COUNT); - // check for timeout - if (isTimedOut(t0, SD_INIT_TIMEOUT)) { - error(SD_CARD_ERROR_ACMD41); - goto fail; - } - } - DBG_END_TIME(DBG_ACMD41_TIME); - // if SD2 read OCR register to check for SDHC card - if (type() == SD_CARD_TYPE_SD2) { - if (cardCommand(CMD58, 0)) { - error(SD_CARD_ERROR_CMD58); - goto fail; - } - if ((spiReceive() & 0XC0) == 0XC0) { - type(SD_CARD_TYPE_SDHC); - } - // Discard rest of ocr - contains allowed voltage range. - for (uint8_t i = 0; i < 3; i++) { - spiReceive(); - } - } - spiStop(); - m_spiDriver->setSpiSettings(settings); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -// send command and return error code. Return zero for OK -uint8_t SdSpiCard::cardCommand(uint8_t cmd, uint32_t arg) { - // select card - if (!m_spiActive) { - spiStart(); - } - // wait if busy unless CMD0 - if (cmd != CMD0) { - DBG_BEGIN_TIME(DBG_CMD_BUSY); - waitNotBusy(SD_CMD_TIMEOUT); - DBG_END_TIME(DBG_CMD_BUSY); - } - -#if USE_SD_CRC - // form message - uint8_t buf[6]; - buf[0] = (uint8_t)0x40U | cmd; - buf[1] = (uint8_t)(arg >> 24U); - buf[2] = (uint8_t)(arg >> 16U); - buf[3] = (uint8_t)(arg >> 8U); - buf[4] = (uint8_t)arg; - - // add CRC - buf[5] = CRC7(buf, 5); - - // send message - spiSend(buf, 6); -#else // USE_SD_CRC - // send command - spiSend(cmd | 0x40); - - // send argument - uint8_t *pa = reinterpret_cast(&arg); - for (int8_t i = 3; i >= 0; i--) { - spiSend(pa[i]); - } - // send CRC - correct for CMD0 with arg zero or CMD8 with arg 0X1AA - spiSend(cmd == CMD0 ? 0X95 : 0X87); -#endif // USE_SD_CRC - - // discard first fill byte to avoid MISO pull-up problem. - spiReceive(); - - // there are 1-8 fill bytes before response. fill bytes should be 0XFF. - for (uint8_t i = 0; ((m_status = spiReceive()) & 0X80) && i < 10; i++) { - } - return m_status; -} -//------------------------------------------------------------------------------ -uint32_t SdSpiCard::cardCapacity() { - csd_t csd; - return readCSD(&csd) ? sdCardCapacity(&csd) : 0; -} -//------------------------------------------------------------------------------ -void SdSpiCard::dbgClearStats() {::dbgClearStats();} -//------------------------------------------------------------------------------ -void SdSpiCard::dbgPrintStats() {::dbgPrintStats();} -//------------------------------------------------------------------------------ -bool SdSpiCard::erase(uint32_t firstBlock, uint32_t lastBlock) { - csd_t csd; - if (!readCSD(&csd)) { - goto fail; - } - // check for single block erase - if (!csd.v1.erase_blk_en) { - // erase size mask - uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; - if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) { - // error card can't erase specified area - error(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); - goto fail; - } - } - if (m_type != SD_CARD_TYPE_SDHC) { - firstBlock <<= 9; - lastBlock <<= 9; - } - if (cardCommand(CMD32, firstBlock) - || cardCommand(CMD33, lastBlock) - || cardCommand(CMD38, 0)) { - error(SD_CARD_ERROR_ERASE); - goto fail; - } - DBG_BEGIN_TIME(DBG_ERASE_BUSY); - if (!waitNotBusy(SD_ERASE_TIMEOUT)) { - error(SD_CARD_ERROR_ERASE_TIMEOUT); - goto fail; - } - DBG_END_TIME(DBG_ERASE_BUSY); - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::eraseSingleBlockEnable() { - csd_t csd; - return readCSD(&csd) ? csd.v1.erase_blk_en : false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::isBusy() { - bool rtn = true; - bool spiActive = m_spiActive; - if (!spiActive) { - spiStart(); - } - for (uint8_t i = 0; i < 8; i++) { - if (0XFF == spiReceive()) { - rtn = false; - break; - } - } - if (!spiActive) { - spiStop(); - } - return rtn; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::isTimedOut(uint16_t startMS, uint16_t timeoutMS) { -#if WDT_YIELD_TIME_MICROS - static uint32_t last; - if ((micros() - last) > WDT_YIELD_TIME_MICROS) { - SysCall::yield(); - last = micros(); - } -#endif // WDT_YIELD_TIME_MICROS - return (curTimeMS() - startMS) > timeoutMS; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readBlock(uint32_t blockNumber, uint8_t* dst) { - SD_TRACE("RB", blockNumber); - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD17, blockNumber)) { - error(SD_CARD_ERROR_CMD17); - goto fail; - } - if (!readData(dst, 512)) { - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readBlocks(uint32_t block, uint8_t* dst, size_t count) { - if (!readStart(block)) { - return false; - } - for (uint16_t b = 0; b < count; b++, dst += 512) { - if (!readData(dst, 512)) { - return false; - } - } - return readStop(); -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readData(uint8_t *dst) { - return readData(dst, 512); -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readData(uint8_t* dst, size_t count) { -#if USE_SD_CRC - uint16_t crc; -#endif // USE_SD_CRC - DBG_BEGIN_TIME(DBG_WAIT_READ); - // wait for start block token - uint16_t t0 = curTimeMS(); - while ((m_status = spiReceive()) == 0XFF) { - if (isTimedOut(t0, SD_READ_TIMEOUT)) { - error(SD_CARD_ERROR_READ_TIMEOUT); - goto fail; - } - } - DBG_END_TIME(DBG_WAIT_READ); - if (m_status != DATA_START_BLOCK) { - error(SD_CARD_ERROR_READ); - goto fail; - } - // transfer data - if ((m_status = spiReceive(dst, count))) { - error(SD_CARD_ERROR_DMA); - goto fail; - } - -#if USE_SD_CRC - // get crc - crc = (spiReceive() << 8) | spiReceive(); - if (crc != CRC_CCITT(dst, count)) { - error(SD_CARD_ERROR_READ_CRC); - goto fail; - } -#else - // discard crc - spiReceive(); - spiReceive(); -#endif // USE_SD_CRC - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readOCR(uint32_t* ocr) { - uint8_t *p = reinterpret_cast(ocr); - if (cardCommand(CMD58, 0)) { - error(SD_CARD_ERROR_CMD58); - goto fail; - } - for (uint8_t i = 0; i < 4; i++) { - p[3 - i] = spiReceive(); - } - - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -/** read CID or CSR register */ -bool SdSpiCard::readRegister(uint8_t cmd, void* buf) { - uint8_t* dst = reinterpret_cast(buf); - if (cardCommand(cmd, 0)) { - error(SD_CARD_ERROR_READ_REG); - goto fail; - } - if (!readData(dst, 16)) { - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readStart(uint32_t blockNumber) { - SD_TRACE("RS", blockNumber); - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD18, blockNumber)) { - error(SD_CARD_ERROR_CMD18); - goto fail; - } -// spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//----------------------------------------------------------------------------- -bool SdSpiCard::readStatus(uint8_t* status) { - // retrun is R2 so read extra status byte. - if (cardAcmd(ACMD13, 0) || spiReceive()) { - error(SD_CARD_ERROR_ACMD13); - goto fail; - } - if (!readData(status, 64)) { - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//----------------------------------------------------------------------------- -void SdSpiCard::spiStart() { - if (!m_spiActive) { - spiActivate(); - spiSelect(); - m_spiActive = true; - } -} -//----------------------------------------------------------------------------- -void SdSpiCard::spiStop() { - if (m_spiActive) { - spiUnselect(); - spiSend(0XFF); - spiDeactivate(); - m_spiActive = false; - } -} -//------------------------------------------------------------------------------ -bool SdSpiCard::readStop() { - if (cardCommand(CMD12, 0)) { - error(SD_CARD_ERROR_CMD12); - goto fail; - } - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -// wait for card to go not busy -bool SdSpiCard::waitNotBusy(uint16_t timeoutMS) { - uint16_t t0 = curTimeMS(); -#if WDT_YIELD_TIME_MICROS - // Call isTimedOut first to insure yield is called. - while (!isTimedOut(t0, timeoutMS)) { - if (spiReceive() == 0XFF) { - return true; - } - } - return false; -#else // WDT_YIELD_TIME_MICROS - // Check not busy first since yield is not called in isTimedOut. - while (spiReceive() != 0XFF) { - if (isTimedOut(t0, timeoutMS)) { - return false; - } - } - return true; -#endif // WDT_YIELD_TIME_MICROS -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeBlock(uint32_t blockNumber, const uint8_t* src) { - SD_TRACE("WB", blockNumber); - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD24, blockNumber)) { - error(SD_CARD_ERROR_CMD24); - goto fail; - } - if (!writeData(DATA_START_BLOCK, src)) { - goto fail; - } - - -#if CHECK_FLASH_PROGRAMMING - // wait for flash programming to complete - DBG_BEGIN_TIME(DBG_WRITE_FLASH); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - error(SD_CARD_ERROR_FLASH_PROGRAMMING); - goto fail; - } - DBG_END_TIME(DBG_WRITE_FLASH); - // response is r2 so get and check two bytes for nonzero - if (cardCommand(CMD13, 0) || spiReceive()) { - error(SD_CARD_ERROR_CMD13); - goto fail; - } -#endif // CHECK_PROGRAMMING - - spiStop(); - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeBlocks(uint32_t block, const uint8_t* src, size_t count) { - if (!writeStart(block)) { - goto fail; - } - for (size_t b = 0; b < count; b++, src += 512) { - if (!writeData(src)) { - goto fail; - } - } - return writeStop(); - - fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeData(const uint8_t* src) { - // wait for previous write to finish - DBG_BEGIN_TIME(DBG_WRITE_BUSY); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - error(SD_CARD_ERROR_WRITE_TIMEOUT); - goto fail; - } - DBG_END_TIME(DBG_WRITE_BUSY); - if (!writeData(WRITE_MULTIPLE_TOKEN, src)) { - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -// send one block of data for write block or write multiple blocks -bool SdSpiCard::writeData(uint8_t token, const uint8_t* src) { -#if USE_SD_CRC - uint16_t crc = CRC_CCITT(src, 512); -#else // USE_SD_CRC - uint16_t crc = 0XFFFF; -#endif // USE_SD_CRC - spiSend(token); - spiSend(src, 512); - spiSend(crc >> 8); - spiSend(crc & 0XFF); - - m_status = spiReceive(); - if ((m_status & DATA_RES_MASK) != DATA_RES_ACCEPTED) { - error(SD_CARD_ERROR_WRITE); - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeStart(uint32_t blockNumber) { - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD25, blockNumber)) { - error(SD_CARD_ERROR_CMD25); - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeStart(uint32_t blockNumber, uint32_t eraseCount) { - SD_TRACE("WS", blockNumber); - // send pre-erase count - if (cardAcmd(ACMD23, eraseCount)) { - error(SD_CARD_ERROR_ACMD23); - goto fail; - } - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) { - blockNumber <<= 9; - } - if (cardCommand(CMD25, blockNumber)) { - error(SD_CARD_ERROR_CMD25); - goto fail; - } - return true; - -fail: - spiStop(); - return false; -} -//------------------------------------------------------------------------------ -bool SdSpiCard::writeStop() { - DBG_BEGIN_TIME(DBG_WRITE_STOP); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - goto fail; - } - DBG_END_TIME(DBG_WRITE_STOP); - spiSend(STOP_TRAN_TOKEN); - spiStop(); - return true; - -fail: - error(SD_CARD_ERROR_STOP_TRAN); - spiStop(); - return false; -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCard.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCard.h deleted file mode 100644 index 6c690526..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCard.h +++ /dev/null @@ -1,379 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdSpiCard_h -#define SdSpiCard_h -/** - * \file - * \brief SdSpiCard class for V2 SD/SDHC cards - */ -#include -#include "SysCall.h" -#include "SdInfo.h" -#include "../FatLib/BaseBlockDriver.h" -#include "../SpiDriver/SdSpiDriver.h" -//============================================================================== -/** - * \class SdSpiCard - * \brief Raw access to SD and SDHC flash memory cards via SPI protocol. - */ -#if ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -class SdSpiCard : public BaseBlockDriver { -#else // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS -class SdSpiCard { -#endif // ENABLE_EXTENDED_TRANSFER_CLASS || ENABLE_SDIO_CLASS - public: - /** Construct an instance of SdSpiCard. */ - SdSpiCard() : m_errorCode(SD_CARD_ERROR_INIT_NOT_CALLED), m_type(0) {} - /** Initialize the SD card. - * \param[in] spi SPI driver for card. - * \param[in] csPin card chip select pin. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings); - /** - * Determine the size of an SD flash memory card. - * - * \return The number of 512 byte sectors in the card - * or zero if an error occurs. - */ - uint32_t cardCapacity(); - /** \return Card size in sectors or zero if an error occurs. */ - uint32_t cardSize() {return cardCapacity();} - /** Clear debug stats. */ - void dbgClearStats(); - /** Print debug stats. */ - void dbgPrintStats(); - /** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool erase(uint32_t firstBlock, uint32_t lastBlock); - /** Determine if card supports single block erase. - * - * \return true is returned if single block erase is supported. - * false is returned if single block erase is not supported. - */ - bool eraseSingleBlockEnable(); - /** - * Set SD error code. - * \param[in] code value for error code. - */ - void error(uint8_t code) { - m_errorCode = code; - } - /** - * \return code for the last error. See SdInfo.h for a list of error codes. - */ - int errorCode() const { - return m_errorCode; - } - /** \return error data for last error. */ - int errorData() const { - return m_status; - } - /** - * Check for busy. MISO low indicates the card is busy. - * - * \return true if busy else false. - */ - bool isBusy(); - /** - * Read a 512 byte block from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t lba, uint8_t* dst); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t lba, uint8_t* dst, size_t nb); - /** - * Read a card's CID register. The CID contains card identification - * information such as Manufacturer ID, Product name, Product serial - * number and Manufacturing date. - * - * \param[out] cid pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCID(cid_t* cid) { - return readRegister(CMD10, cid); - } - /** - * Read a card's CSD register. The CSD contains Card-Specific Data that - * provides information regarding access to the card's contents. - * - * \param[out] csd pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCSD(csd_t* csd) { - return readRegister(CMD9, csd); - } - /** Read one data block in a multiple block read sequence - * - * \param[out] dst Pointer to the location for the data to be read. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readData(uint8_t *dst); - /** Read OCR register. - * - * \param[out] ocr Value of OCR register. - * \return true for success else false. - */ - bool readOCR(uint32_t* ocr); - /** Start a read multiple blocks sequence. - * - * \param[in] blockNumber Address of first block in sequence. - * - * \note This function is used with readData() and readStop() for optimized - * multiple block reads. SPI chipSelect must be low for the entire sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStart(uint32_t blockNumber); - /** Return the 64 byte card status - * \param[out] status location for 64 status bytes. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStatus(uint8_t* status); - /** End a read multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStop(); - /** \return success if sync successful. Not for user apps. */ - bool syncBlocks() {return true;} - /** Return the card type: SD V1, SD V2 or SDHC - * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. - */ - int type() const { - return m_type; - } - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t lba, const uint8_t* src); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t lba, const uint8_t* src, size_t nb); - /** Write one data block in a multiple block write sequence. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeData(const uint8_t* src); - /** Start a write multiple blocks sequence. - * - * \param[in] blockNumber Address of first block in sequence. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t blockNumber); - - /** Start a write multiple blocks sequence with pre-erase. - * - * \param[in] blockNumber Address of first block in sequence. - * \param[in] eraseCount The number of blocks to be pre-erased. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t blockNumber, uint32_t eraseCount); - /** End a write multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStop(); - /** Set CS low and activate the card. */ - void spiStart(); - /** Set CS high and deactivate the card. */ - void spiStop(); - - private: - // private functions - uint8_t cardAcmd(uint8_t cmd, uint32_t arg) { - cardCommand(CMD55, 0); - return cardCommand(cmd, arg); - } - uint8_t cardCommand(uint8_t cmd, uint32_t arg); - bool isTimedOut(uint16_t startMS, uint16_t timeoutMS); - bool readData(uint8_t* dst, size_t count); - bool readRegister(uint8_t cmd, void* buf); - - void type(uint8_t value) { - m_type = value; - } - - bool waitNotBusy(uint16_t timeoutMS); - bool writeData(uint8_t token, const uint8_t* src); - - //--------------------------------------------------------------------------- - // functions defined in SdSpiDriver.h - void spiActivate() { - m_spiDriver->activate(); - } - void spiDeactivate() { - m_spiDriver->deactivate(); - } - uint8_t spiReceive() { - return m_spiDriver->receive(); - } - uint8_t spiReceive(uint8_t* buf, size_t n) { - return m_spiDriver->receive(buf, n); - } - void spiSend(uint8_t data) { - m_spiDriver->send(data); - } - void spiSend(const uint8_t* buf, size_t n) { - m_spiDriver->send(buf, n); - } - void spiSelect() { - m_spiDriver->select(); - } - void spiUnselect() { - m_spiDriver->unselect(); - } - uint8_t m_errorCode; - SdSpiDriver *m_spiDriver; - bool m_spiActive; - uint8_t m_status; - uint8_t m_type; -}; -//============================================================================== -/** - * \class SdSpiCardEX - * \brief Extended SD I/O block driver. - */ -class SdSpiCardEX : public SdSpiCard { - public: - /** Initialize the SD card - * - * \param[in] spi SPI driver. - * \param[in] csPin Card chip select pin number. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool begin(SdSpiDriver* spi, uint8_t csPin, SPISettings spiSettings) { - m_curState = IDLE_STATE; - return SdSpiCard::begin(spi, csPin, spiSettings); - } - /** - * Read a 512 byte block from an SD card. - * - * \param[in] block Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t block, uint8_t* dst); - /** End multi-block transfer and go to idle state. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool syncBlocks(); - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t block, const uint8_t* src); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] block Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t block, uint8_t* dst, size_t nb); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb); - - private: - static const uint32_t IDLE_STATE = 0; - static const uint32_t READ_STATE = 1; - static const uint32_t WRITE_STATE = 2; - uint32_t m_curBlock; - uint8_t m_curState; -}; -#endif // SdSpiCard_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCardEX.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCardEX.cpp deleted file mode 100644 index b5dced49..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdSpiCardEX.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiCard.h" -bool SdSpiCardEX::readBlock(uint32_t block, uint8_t* dst) { - if (m_curState != READ_STATE || block != m_curBlock) { - if (!syncBlocks()) { - return false; - } - if (!SdSpiCard::readStart(block)) { - return false; - } - m_curBlock = block; - m_curState = READ_STATE; - } - if (!SdSpiCard::readData(dst)) { - return false; - } - m_curBlock++; - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::readBlocks(uint32_t block, uint8_t* dst, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!readBlock(block + i, dst + i*512UL)) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::syncBlocks() { - if (m_curState == READ_STATE) { - m_curState = IDLE_STATE; - if (!SdSpiCard::readStop()) { - return false; - } - } else if (m_curState == WRITE_STATE) { - m_curState = IDLE_STATE; - if (!SdSpiCard::writeStop()) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::writeBlock(uint32_t block, const uint8_t* src) { - if (m_curState != WRITE_STATE || m_curBlock != block) { - if (!syncBlocks()) { - return false; - } - if (!SdSpiCard::writeStart(block)) { - return false; - } - m_curBlock = block; - m_curState = WRITE_STATE; - } - if (!SdSpiCard::writeData(src)) { - return false; - } - m_curBlock++; - return true; -} -//----------------------------------------------------------------------------- -bool SdSpiCardEX::writeBlocks(uint32_t block, - const uint8_t* src, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!writeBlock(block + i, src + i*512UL)) { - return false; - } - } - return true; -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioCard.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioCard.h deleted file mode 100644 index 74dad371..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioCard.h +++ /dev/null @@ -1,303 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdioCard_h -#define SdioCard_h -#include "SysCall.h" -#include "BlockDriver.h" -/** - * \class SdioCard - * \brief Raw SDIO access to SD and SDHC flash memory cards. - */ -class SdioCard : public BaseBlockDriver { - public: - /** Initialize the SD card. - * \return true for success else false. - */ - bool begin(); - /** - * Determine the size of an SD flash memory card. - * - * \return The number of 512 byte sectors in the card - * or zero if an error occurs. - */ - uint32_t cardCapacity(); - /** \return Card size in sectors or zero if an error occurs. */ - uint32_t cardSize() {return cardCapacity();} - /** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool erase(uint32_t firstBlock, uint32_t lastBlock); - /** - * \return code for the last error. See SdInfo.h for a list of error codes. - */ - uint8_t errorCode(); - /** \return error data for last error. */ - uint32_t errorData(); - /** \return error line for last error. Tmp function for debug. */ - uint32_t errorLine(); - /** - * Check for busy with CMD13. - * - * \return true if busy else false. - */ - bool isBusy(); - /** \return the SD clock frequency in kHz. */ - uint32_t kHzSdClk(); - /** - * Read a 512 byte block from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t lba, uint8_t* dst); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] lba Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t lba, uint8_t* dst, size_t nb); - /** - * Read a card's CID register. The CID contains card identification - * information such as Manufacturer ID, Product name, Product serial - * number and Manufacturing date. - * - * \param[out] cid pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCID(void* cid); - /** - * Read a card's CSD register. The CSD contains Card-Specific Data that - * provides information regarding access to the card's contents. - * - * \param[out] csd pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCSD(void* csd); - /** Read one data block in a multiple block read sequence - * - * \param[out] dst Pointer to the location for the data to be read. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readData(uint8_t *dst); - /** Read OCR register. - * - * \param[out] ocr Value of OCR register. - * \return true for success else false. - */ - bool readOCR(uint32_t* ocr); - /** Start a read multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * - * \note This function is used with readData() and readStop() for optimized - * multiple block reads. SPI chipSelect must be low for the entire sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStart(uint32_t lba); - /** Start a read multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * \param[in] count Maximum block count. - * \note This function is used with readData() and readStop() for optimized - * multiple block reads. SPI chipSelect must be low for the entire sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStart(uint32_t lba, uint32_t count); - /** End a read multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readStop(); - /** \return success if sync successful. Not for user apps. */ - bool syncBlocks(); - /** Return the card type: SD V1, SD V2 or SDHC - * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. - */ - uint8_t type(); - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t lba, const uint8_t* src); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] lba Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t lba, const uint8_t* src, size_t nb); - /** Write one data block in a multiple block write sequence. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeData(const uint8_t* src); - /** Start a write multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t lba); - /** Start a write multiple blocks sequence. - * - * \param[in] lba Address of first block in sequence. - * \param[in] count Maximum block count. - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStart(uint32_t lba, uint32_t count); - - /** End a write multiple blocks sequence. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeStop(); -}; -//============================================================================== -/** - * \class SdioCardEX - * \brief Extended SD I/O block driver. - */ -class SdioCardEX : public SdioCard { - public: - /** Initialize the SD card - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool begin() { - m_curState = IDLE_STATE; - return SdioCard::begin(); - } - /** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool erase(uint32_t firstBlock, uint32_t lastBlock) { - return syncBlocks() && SdioCard::erase(firstBlock, lastBlock); - } - /** - * Read a 512 byte block from an SD card. - * - * \param[in] block Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlock(uint32_t block, uint8_t* dst); - /** End multi-block transfer and go to idle state. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool syncBlocks(); - /** - * Writes a 512 byte block to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlock(uint32_t block, const uint8_t* src); - /** - * Read multiple 512 byte blocks from an SD card. - * - * \param[in] block Logical block to be read. - * \param[in] nb Number of blocks to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool readBlocks(uint32_t block, uint8_t* dst, size_t nb); - /** - * Write multiple 512 byte blocks to an SD card. - * - * \param[in] block Logical block to be written. - * \param[in] nb Number of blocks to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value true is returned for success and - * the value false is returned for failure. - */ - bool writeBlocks(uint32_t block, const uint8_t* src, size_t nb); - - private: - static const uint32_t IDLE_STATE = 0; - static const uint32_t READ_STATE = 1; - static const uint32_t WRITE_STATE = 2; - uint32_t m_curLba; - uint32_t m_limitLba; - uint8_t m_curState; -}; -#endif // SdioCard_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioCardEX.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioCardEX.cpp deleted file mode 100644 index ed4981d1..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioCardEX.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdioCard.h" - -// limit of K66 due to errata KINETIS_K_0N65N. -const uint32_t MAX_SDHC_COUNT = 0XFFFF; - -// Max RU is 1024 blocks. -const uint32_t RU_MASK = 0X03FF; - -bool SdioCardEX::readBlock(uint32_t lba, uint8_t* dst) { - if (m_curState != READ_STATE || lba != m_curLba) { - if (!syncBlocks()) { - return false; - } - m_limitLba = (lba + MAX_SDHC_COUNT) & ~RU_MASK; - if (!SdioCard::readStart(lba, m_limitLba - lba)) { - return false; - } - m_curLba = lba; - m_curState = READ_STATE; - } - if (!SdioCard::readData(dst)) { - return false; - } - m_curLba++; - if (m_curLba >= m_limitLba) { - m_curState = IDLE_STATE; - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::readBlocks(uint32_t lba, uint8_t* dst, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!readBlock(lba + i, dst + i*512UL)) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::syncBlocks() { - if (m_curState == READ_STATE) { - m_curState = IDLE_STATE; - if (!SdioCard::readStop()) { - return false; - } - } else if (m_curState == WRITE_STATE) { - m_curState = IDLE_STATE; - if (!SdioCard::writeStop()) { - return false; - } - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::writeBlock(uint32_t lba, const uint8_t* src) { - if (m_curState != WRITE_STATE || m_curLba != lba) { - if (!syncBlocks()) { - return false; - } - m_limitLba = (lba + MAX_SDHC_COUNT) & ~RU_MASK; - if (!SdioCard::writeStart(lba , m_limitLba - lba)) { - return false; - } - m_curLba = lba; - m_curState = WRITE_STATE; - } - if (!SdioCard::writeData(src)) { - return false; - } - m_curLba++; - if (m_curLba >= m_limitLba) { - m_curState = IDLE_STATE; - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCardEX::writeBlocks(uint32_t lba, const uint8_t* src, size_t nb) { - for (size_t i = 0; i < nb; i++) { - if (!writeBlock(lba + i, src + i*512UL)) { - return false; - } - } - return true; -} diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioTeensy.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioTeensy.cpp deleted file mode 100644 index 3ed3eb6c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdCard/SdioTeensy.cpp +++ /dev/null @@ -1,800 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(__MK64FX512__) || defined(__MK66FX1M0__) -#include "SdioCard.h" -//============================================================================== -#define SDHC_PROCTL_DTW_4BIT 0x01 -const uint32_t FIFO_WML = 16; -const uint32_t CMD8_RETRIES = 10; -const uint32_t BUSY_TIMEOUT_MICROS = 500000; -//============================================================================== -const uint32_t SDHC_IRQSTATEN_MASK = - SDHC_IRQSTATEN_DMAESEN | SDHC_IRQSTATEN_AC12ESEN | - SDHC_IRQSTATEN_DEBESEN | SDHC_IRQSTATEN_DCESEN | - SDHC_IRQSTATEN_DTOESEN | SDHC_IRQSTATEN_CIESEN | - SDHC_IRQSTATEN_CEBESEN | SDHC_IRQSTATEN_CCESEN | - SDHC_IRQSTATEN_CTOESEN | SDHC_IRQSTATEN_DINTSEN | - SDHC_IRQSTATEN_TCSEN | SDHC_IRQSTATEN_CCSEN; - -const uint32_t SDHC_IRQSTAT_CMD_ERROR = - SDHC_IRQSTAT_CIE | SDHC_IRQSTAT_CEBE | - SDHC_IRQSTAT_CCE | SDHC_IRQSTAT_CTOE; - -const uint32_t SDHC_IRQSTAT_DATA_ERROR = - SDHC_IRQSTAT_AC12E | SDHC_IRQSTAT_DEBE | - SDHC_IRQSTAT_DCE | SDHC_IRQSTAT_DTOE; - -const uint32_t SDHC_IRQSTAT_ERROR = - SDHC_IRQSTAT_DMAE | SDHC_IRQSTAT_CMD_ERROR | - SDHC_IRQSTAT_DATA_ERROR; - -const uint32_t SDHC_IRQSIGEN_MASK = - SDHC_IRQSIGEN_DMAEIEN | SDHC_IRQSIGEN_AC12EIEN | - SDHC_IRQSIGEN_DEBEIEN | SDHC_IRQSIGEN_DCEIEN | - SDHC_IRQSIGEN_DTOEIEN | SDHC_IRQSIGEN_CIEIEN | - SDHC_IRQSIGEN_CEBEIEN | SDHC_IRQSIGEN_CCEIEN | - SDHC_IRQSIGEN_CTOEIEN | SDHC_IRQSIGEN_TCIEN; -//============================================================================= -const uint32_t CMD_RESP_NONE = SDHC_XFERTYP_RSPTYP(0); - -const uint32_t CMD_RESP_R1 = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(2); - -const uint32_t CMD_RESP_R1b = SDHC_XFERTYP_CICEN | SDHC_XFERTYP_CCCEN | - SDHC_XFERTYP_RSPTYP(3); - -const uint32_t CMD_RESP_R2 = SDHC_XFERTYP_CCCEN | SDHC_XFERTYP_RSPTYP(1); - -const uint32_t CMD_RESP_R3 = SDHC_XFERTYP_RSPTYP(2); - -const uint32_t CMD_RESP_R6 = CMD_RESP_R1; - -const uint32_t CMD_RESP_R7 = CMD_RESP_R1; - -const uint32_t DATA_READ = SDHC_XFERTYP_DTDSEL | SDHC_XFERTYP_DPSEL; - -const uint32_t DATA_READ_DMA = DATA_READ | SDHC_XFERTYP_DMAEN; - -const uint32_t DATA_READ_MULTI_DMA = DATA_READ_DMA | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; - -const uint32_t DATA_READ_MULTI_PGM = DATA_READ | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN | SDHC_XFERTYP_AC12EN; - -const uint32_t DATA_WRITE_DMA = SDHC_XFERTYP_DPSEL | SDHC_XFERTYP_DMAEN; - -const uint32_t DATA_WRITE_MULTI_DMA = DATA_WRITE_DMA | SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_AC12EN | SDHC_XFERTYP_BCEN; - -const uint32_t DATA_WRITE_MULTI_PGM = SDHC_XFERTYP_DPSEL | - SDHC_XFERTYP_MSBSEL | - SDHC_XFERTYP_BCEN | SDHC_XFERTYP_AC12EN; - -const uint32_t ACMD6_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD6) | CMD_RESP_R1; - -const uint32_t ACMD41_XFERTYP = SDHC_XFERTYP_CMDINX(ACMD41) | CMD_RESP_R3; - -const uint32_t CMD0_XFERTYP = SDHC_XFERTYP_CMDINX(CMD0) | CMD_RESP_NONE; - -const uint32_t CMD2_XFERTYP = SDHC_XFERTYP_CMDINX(CMD2) | CMD_RESP_R2; - -const uint32_t CMD3_XFERTYP = SDHC_XFERTYP_CMDINX(CMD3) | CMD_RESP_R6; - -const uint32_t CMD6_XFERTYP = SDHC_XFERTYP_CMDINX(CMD6) | CMD_RESP_R1 | - DATA_READ_DMA; - -const uint32_t CMD7_XFERTYP = SDHC_XFERTYP_CMDINX(CMD7) | CMD_RESP_R1b; - -const uint32_t CMD8_XFERTYP = SDHC_XFERTYP_CMDINX(CMD8) | CMD_RESP_R7; - -const uint32_t CMD9_XFERTYP = SDHC_XFERTYP_CMDINX(CMD9) | CMD_RESP_R2; - -const uint32_t CMD10_XFERTYP = SDHC_XFERTYP_CMDINX(CMD10) | CMD_RESP_R2; - -const uint32_t CMD12_XFERTYP = SDHC_XFERTYP_CMDINX(CMD12) | CMD_RESP_R1b | - SDHC_XFERTYP_CMDTYP(3); - -const uint32_t CMD13_XFERTYP = SDHC_XFERTYP_CMDINX(CMD13) | CMD_RESP_R1; - -const uint32_t CMD17_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD17) | CMD_RESP_R1 | - DATA_READ_DMA; - -const uint32_t CMD18_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_DMA; - -const uint32_t CMD18_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD18) | CMD_RESP_R1 | - DATA_READ_MULTI_PGM; - -const uint32_t CMD24_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD24) | CMD_RESP_R1 | - DATA_WRITE_DMA; - -const uint32_t CMD25_DMA_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_DMA; - -const uint32_t CMD25_PGM_XFERTYP = SDHC_XFERTYP_CMDINX(CMD25) | CMD_RESP_R1 | - DATA_WRITE_MULTI_PGM; - -const uint32_t CMD32_XFERTYP = SDHC_XFERTYP_CMDINX(CMD32) | CMD_RESP_R1; - -const uint32_t CMD33_XFERTYP = SDHC_XFERTYP_CMDINX(CMD33) | CMD_RESP_R1; - -const uint32_t CMD38_XFERTYP = SDHC_XFERTYP_CMDINX(CMD38) | CMD_RESP_R1b; - -const uint32_t CMD55_XFERTYP = SDHC_XFERTYP_CMDINX(CMD55) | CMD_RESP_R1; - -//============================================================================= -static bool cardCommand(uint32_t xfertyp, uint32_t arg); -static void enableGPIO(bool enable); -static void enableDmaIrs(); -static void initSDHC(); -static bool isBusyCMD13(); -static bool isBusyCommandComplete(); -static bool isBusyCommandInhibit(); -static bool readReg16(uint32_t xfertyp, void* data); -static void setSdclk(uint32_t kHzMax); -static bool yieldTimeout(bool (*fcn)()); -static bool waitDmaStatus(); -static bool waitTimeout(bool (*fcn)()); -//----------------------------------------------------------------------------- -static bool (*m_busyFcn)() = 0; -static bool m_initDone = false; -static bool m_version2; -static bool m_highCapacity; -static uint8_t m_errorCode = SD_CARD_ERROR_INIT_NOT_CALLED; -static uint32_t m_errorLine = 0; -static uint32_t m_rca; -static volatile bool m_dmaBusy = false; -static volatile uint32_t m_irqstat; -static uint32_t m_sdClkKhz = 0; -static uint32_t m_ocr; -static cid_t m_cid; -static csd_t m_csd; -//============================================================================= -#define USE_DEBUG_MODE 0 -#if USE_DEBUG_MODE -#define DBG_IRQSTAT() if (SDHC_IRQSTAT) {Serial.print(__LINE__);\ - Serial.print(" IRQSTAT "); Serial.println(SDHC_IRQSTAT, HEX);} - -static void printRegs(uint32_t line) { - Serial.print(line); - Serial.print(" PRSSTAT "); - Serial.print(SDHC_PRSSTAT, HEX); - Serial.print(" PROCTL "); - Serial.print(SDHC_PROCTL, HEX); - Serial.print(" IRQSTAT "); - Serial.print(SDHC_IRQSTAT, HEX); - Serial.print(" m_irqstat "); - Serial.println(m_irqstat, HEX); -} -#else // USE_DEBUG_MODE -#define DBG_IRQSTAT() -#endif // USE_DEBUG_MODE -//============================================================================= -// Error function and macro. -#define sdError(code) setSdErrorCode(code, __LINE__) -inline bool setSdErrorCode(uint8_t code, uint32_t line) { - m_errorCode = code; - m_errorLine = line; - return false; // setSdErrorCode -} -//============================================================================= -// ISR -void sdhc_isr() { - SDHC_IRQSIGEN = 0; - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - m_dmaBusy = false; -} -//============================================================================= -// Static functions. -static bool cardAcmd(uint32_t rca, uint32_t xfertyp, uint32_t arg) { - return cardCommand(CMD55_XFERTYP, rca) && cardCommand (xfertyp, arg); -} -//----------------------------------------------------------------------------- -static bool cardCommand(uint32_t xfertyp, uint32_t arg) { - DBG_IRQSTAT(); - if (waitTimeout(isBusyCommandInhibit)) { - return false; // Caller will set errorCode. - } - SDHC_CMDARG = arg; - SDHC_XFERTYP = xfertyp; - if (waitTimeout(isBusyCommandComplete)) { - return false; // Caller will set errorCode. - } - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - - return (m_irqstat & SDHC_IRQSTAT_CC) && - !(m_irqstat & SDHC_IRQSTAT_CMD_ERROR); -} -//----------------------------------------------------------------------------- -static bool cardCMD6(uint32_t arg, uint8_t* status) { - // CMD6 returns 64 bytes. - if (waitTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - enableDmaIrs(); - SDHC_DSADDR = (uint32_t)status; - SDHC_CMDARG = arg; - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(64); - SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - SDHC_XFERTYP = CMD6_XFERTYP; - - if (!waitDmaStatus()) { - return sdError(SD_CARD_ERROR_CMD6); - } - return true; -} -//----------------------------------------------------------------------------- -static void enableGPIO(bool enable) { - const uint32_t PORT_CLK = PORT_PCR_MUX(4) | PORT_PCR_DSE; - const uint32_t PORT_CMD_DATA = PORT_CLK | PORT_PCR_PS | PORT_PCR_PE; - - PORTE_PCR0 = enable ? PORT_CMD_DATA : 0; // SDHC_D1 - PORTE_PCR1 = enable ? PORT_CMD_DATA : 0; // SDHC_D0 - PORTE_PCR2 = enable ? PORT_CLK : 0; // SDHC_CLK - PORTE_PCR3 = enable ? PORT_CMD_DATA : 0; // SDHC_CMD - PORTE_PCR4 = enable ? PORT_CMD_DATA : 0; // SDHC_D3 - PORTE_PCR5 = enable ? PORT_CMD_DATA : 0; // SDHC_D2 -} -//----------------------------------------------------------------------------- -static void enableDmaIrs() { - m_dmaBusy = true; - m_irqstat = 0; -} -//----------------------------------------------------------------------------- -static void initSDHC() { -#ifdef HAS_KINETIS_MPU - // Allow SDHC Bus Master access. - MPU_RGDAAC0 |= 0x0C000000; -#endif - // Enable SDHC clock. - SIM_SCGC3 |= SIM_SCGC3_SDHC; - - // Disable GPIO clock. - enableGPIO(false); - - // Reset SDHC. Use default Water Mark Level of 16. - SDHC_SYSCTL = SDHC_SYSCTL_RSTA; - while (SDHC_SYSCTL & SDHC_SYSCTL_RSTA) { - } - // Set initial SCK rate. - setSdclk(400); - - enableGPIO(true); - - // Enable desired IRQSTAT bits. - SDHC_IRQSTATEN = SDHC_IRQSTATEN_MASK; - - NVIC_SET_PRIORITY(IRQ_SDHC, 6*16); - NVIC_ENABLE_IRQ(IRQ_SDHC); - - // Send 80 clocks to card. - SDHC_SYSCTL |= SDHC_SYSCTL_INITA; - while (SDHC_SYSCTL & SDHC_SYSCTL_INITA) { - } -} -//----------------------------------------------------------------------------- -static bool isBusyCMD13() { - if (!cardCommand(CMD13_XFERTYP, m_rca)) { - // Caller will timeout. - return true; - } - return !(SDHC_CMDRSP0 & CARD_STATUS_READY_FOR_DATA); -} -//----------------------------------------------------------------------------- -static bool isBusyCommandComplete() { - return !(SDHC_IRQSTAT &(SDHC_IRQSTAT_CC | SDHC_IRQSTAT_CMD_ERROR)); -} -//----------------------------------------------------------------------------- -static bool isBusyCommandInhibit() { - return SDHC_PRSSTAT & SDHC_PRSSTAT_CIHB; -} -//----------------------------------------------------------------------------- -static bool isBusyDMA() { - return m_dmaBusy; -} -//----------------------------------------------------------------------------- -static bool isBusyFifoRead() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BREN); -} -//----------------------------------------------------------------------------- -static bool isBusyFifoWrite() { - return !(SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN); -} -//----------------------------------------------------------------------------- -static bool isBusyTransferComplete() { - return !(SDHC_IRQSTAT & (SDHC_IRQSTAT_TC | SDHC_IRQSTAT_ERROR)); -} -//----------------------------------------------------------------------------- -static bool rdWrBlocks(uint32_t xfertyp, - uint32_t lba, uint8_t* buf, size_t n) { - if ((3 & (uint32_t)buf) || n == 0) { - return sdError(SD_CARD_ERROR_DMA); - } - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - enableDmaIrs(); - SDHC_DSADDR = (uint32_t)buf; - SDHC_CMDARG = m_highCapacity ? lba : 512*lba; - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(n) | SDHC_BLKATTR_BLKSIZE(512); - SDHC_IRQSIGEN = SDHC_IRQSIGEN_MASK; - SDHC_XFERTYP = xfertyp; - - return waitDmaStatus(); -} -//----------------------------------------------------------------------------- -// Read 16 byte CID or CSD register. -static bool readReg16(uint32_t xfertyp, void* data) { - uint8_t* d = reinterpret_cast(data); - if (!cardCommand(xfertyp, m_rca)) { - return false; // Caller will set errorCode. - } - uint32_t sr[] = {SDHC_CMDRSP0, SDHC_CMDRSP1, SDHC_CMDRSP2, SDHC_CMDRSP3}; - for (int i = 0; i < 15; i++) { - d[14 - i] = sr[i/4] >> 8*(i%4); - } - d[15] = 0; - return true; -} -//----------------------------------------------------------------------------- -static void setSdclk(uint32_t kHzMax) { - const uint32_t DVS_LIMIT = 0X10; - const uint32_t SDCLKFS_LIMIT = 0X100; - uint32_t dvs = 1; - uint32_t sdclkfs = 1; - uint32_t maxSdclk = 1000*kHzMax; - - while ((F_CPU/(sdclkfs*DVS_LIMIT) > maxSdclk) && (sdclkfs < SDCLKFS_LIMIT)) { - sdclkfs <<= 1; - } - while ((F_CPU/(sdclkfs*dvs) > maxSdclk) && (dvs < DVS_LIMIT)) { - dvs++; - } - m_sdClkKhz = F_CPU/(1000*sdclkfs*dvs); - sdclkfs >>= 1; - dvs--; - - // Disable SDHC clock. - SDHC_SYSCTL &= ~SDHC_SYSCTL_SDCLKEN; - - // Change dividers. - uint32_t sysctl = SDHC_SYSCTL & ~(SDHC_SYSCTL_DTOCV_MASK - | SDHC_SYSCTL_DVS_MASK | SDHC_SYSCTL_SDCLKFS_MASK); - - SDHC_SYSCTL = sysctl | SDHC_SYSCTL_DTOCV(0x0E) | SDHC_SYSCTL_DVS(dvs) - | SDHC_SYSCTL_SDCLKFS(sdclkfs); - - // Wait until the SDHC clock is stable. - while (!(SDHC_PRSSTAT & SDHC_PRSSTAT_SDSTB)) { - } - // Enable the SDHC clock. - SDHC_SYSCTL |= SDHC_SYSCTL_SDCLKEN; -} -//----------------------------------------------------------------------------- -static bool transferStop() { - DBG_IRQSTAT(); - - if (!cardCommand(CMD12_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD12); - } - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - // Save registers before reset DAT lines. - uint32_t irqsststen = SDHC_IRQSTATEN; - uint32_t proctl = SDHC_PROCTL & ~SDHC_PROCTL_SABGREQ; - - // Do reset to clear CDIHB. Should be a better way! - SDHC_SYSCTL |= SDHC_SYSCTL_RSTD; - - // Restore registers. - SDHC_IRQSTATEN = irqsststen; - SDHC_PROCTL = proctl; - - return true; -} -//----------------------------------------------------------------------------- -// Return true if timeout occurs. -static bool yieldTimeout(bool (*fcn)()) { - m_busyFcn = fcn; - uint32_t m = micros(); - while (fcn()) { - if ((micros() - m) > BUSY_TIMEOUT_MICROS) { - m_busyFcn = 0; - return true; - } - yield(); - } - m_busyFcn = 0; - return false; // Caller will set errorCode. -} -//----------------------------------------------------------------------------- -static bool waitDmaStatus() { - if (yieldTimeout(isBusyDMA)) { - return false; // Caller will set errorCode. - } - return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); -} -//----------------------------------------------------------------------------- -// Return true if timeout occurs. -static bool waitTimeout(bool (*fcn)()) { - uint32_t m = micros(); - while (fcn()) { - if ((micros() - m) > BUSY_TIMEOUT_MICROS) { - return true; - } - } - return false; // Caller will set errorCode. -} -//============================================================================= -bool SdioCard::begin() { - uint32_t kHzSdClk; - uint32_t arg; - m_initDone = false; - m_errorCode = SD_CARD_ERROR_NONE; - m_highCapacity = false; - m_version2 = false; - - // initialize controller. - initSDHC(); - - if (!cardCommand(CMD0_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD0); - } - // Try several times for case of reset delay. - for (uint32_t i = 0; i < CMD8_RETRIES; i++) { - if (cardCommand(CMD8_XFERTYP, 0X1AA)) { - if (SDHC_CMDRSP0 != 0X1AA) { - return sdError(SD_CARD_ERROR_CMD8); - } - m_version2 = true; - break; - } - } - arg = m_version2 ? 0X40300000 : 0x00300000; - uint32_t m = micros(); - do { - if (!cardAcmd(0, ACMD41_XFERTYP, arg) || - ((micros() - m) > BUSY_TIMEOUT_MICROS)) { - return sdError(SD_CARD_ERROR_ACMD41); - } - } while ((SDHC_CMDRSP0 & 0x80000000) == 0); - - m_ocr = SDHC_CMDRSP0; - if (SDHC_CMDRSP0 & 0x40000000) { - // Is high capacity. - m_highCapacity = true; - } - if (!cardCommand(CMD2_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD2); - } - if (!cardCommand(CMD3_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD3); - } - m_rca = SDHC_CMDRSP0 & 0xFFFF0000; - - if (!readReg16(CMD9_XFERTYP, &m_csd)) { - return sdError(SD_CARD_ERROR_CMD9); - } - if (!readReg16(CMD10_XFERTYP, &m_cid)) { - return sdError(SD_CARD_ERROR_CMD10); - } - if (!cardCommand(CMD7_XFERTYP, m_rca)) { - return sdError(SD_CARD_ERROR_CMD7); - } - // Set card to bus width four. - if (!cardAcmd(m_rca, ACMD6_XFERTYP, 2)) { - return sdError(SD_CARD_ERROR_ACMD6); - } - // Set SDHC to bus width four. - SDHC_PROCTL &= ~SDHC_PROCTL_DTW_MASK; - SDHC_PROCTL |= SDHC_PROCTL_DTW(SDHC_PROCTL_DTW_4BIT); - - SDHC_WML = SDHC_WML_RDWML(FIFO_WML) | SDHC_WML_WRWML(FIFO_WML); - - // Determine if High Speed mode is supported and set frequency. - uint8_t status[64]; - if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && - cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { - kHzSdClk = 50000; - } else { - kHzSdClk = 25000; - } - // disable GPIO - enableGPIO(false); - - // Set the SDHC SCK frequency. - setSdclk(kHzSdClk); - - // enable GPIO - enableGPIO(true); - m_initDone = true; - return true; -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::cardCapacity() { - return sdCardCapacity(&m_csd); -} -//----------------------------------------------------------------------------- -bool SdioCard::erase(uint32_t firstBlock, uint32_t lastBlock) { - // check for single block erase - if (!m_csd.v1.erase_blk_en) { - // erase size mask - uint8_t m = (m_csd.v1.sector_size_high << 1) | m_csd.v1.sector_size_low; - if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) { - // error card can't erase specified area - return sdError(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); - } - } - if (!m_highCapacity) { - firstBlock <<= 9; - lastBlock <<= 9; - } - if (!cardCommand(CMD32_XFERTYP, firstBlock)) { - return sdError(SD_CARD_ERROR_CMD32); - } - if (!cardCommand(CMD33_XFERTYP, lastBlock)) { - return sdError(SD_CARD_ERROR_CMD33); - } - if (!cardCommand(CMD38_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD38); - } - if (waitTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_ERASE_TIMEOUT); - } - return true; -} -//----------------------------------------------------------------------------- -uint8_t SdioCard::errorCode() { - return m_errorCode; -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::errorData() { - return m_irqstat; -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::errorLine() { - return m_errorLine; -} -//----------------------------------------------------------------------------- -bool SdioCard::isBusy() { - return m_busyFcn ? m_busyFcn() : m_initDone && isBusyCMD13(); -} -//----------------------------------------------------------------------------- -uint32_t SdioCard::kHzSdClk() { - return m_sdClkKhz; -} -//----------------------------------------------------------------------------- -bool SdioCard::readBlock(uint32_t lba, uint8_t* buf) { - uint8_t aligned[512]; - - uint8_t* ptr = (uint32_t)buf & 3 ? aligned : buf; - - if (!rdWrBlocks(CMD17_DMA_XFERTYP, lba, ptr, 1)) { - return sdError(SD_CARD_ERROR_CMD18); - } - if (ptr != buf) { - memcpy(buf, aligned, 512); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readBlocks(uint32_t lba, uint8_t* buf, size_t n) { - if ((uint32_t)buf & 3) { - for (size_t i = 0; i < n; i++, lba++, buf += 512) { - if (!readBlock(lba, buf)) { - return false; // readBlock will set errorCode. - } - } - return true; - } - if (!rdWrBlocks(CMD18_DMA_XFERTYP, lba, buf, n)) { - return sdError(SD_CARD_ERROR_CMD18); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readCID(void* cid) { - memcpy(cid, &m_cid, 16); - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readCSD(void* csd) { - memcpy(csd, &m_csd, 16); - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readData(uint8_t *dst) { - DBG_IRQSTAT(); - uint32_t *p32 = reinterpret_cast(dst); - - if (!(SDHC_PRSSTAT & SDHC_PRSSTAT_RTA)) { - SDHC_PROCTL &= ~SDHC_PROCTL_SABGREQ; - if ((SDHC_BLKATTR & 0XFFFF0000) == 0X10000) { - // Don't stop at block gap if last block. Allows auto CMD12. - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - } else { - noInterrupts(); - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - interrupts(); - } - } - if (waitTimeout(isBusyFifoRead)) { - return sdError(SD_CARD_ERROR_READ_FIFO); - } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { - while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BREN)) { - } - for (uint32_t i = 0; i < FIFO_WML; i++) { - p32[i] = SDHC_DATPORT; - } - p32 += FIFO_WML; - } - if (waitTimeout(isBusyTransferComplete)) { - return sdError(SD_CARD_ERROR_READ_TIMEOUT); - } - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); -} -//----------------------------------------------------------------------------- -bool SdioCard::readOCR(uint32_t* ocr) { - *ocr = m_ocr; - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readStart(uint32_t lba) { - // K66/K65 Errata - SDHC: Does not support Infinite Block Transfer Mode. - return sdError(SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED); -} -//----------------------------------------------------------------------------- -// SDHC will do Auto CMD12 after count blocks. -bool SdioCard::readStart(uint32_t lba, uint32_t count) { - DBG_IRQSTAT(); - if (count > 0XFFFF) { - return sdError(SD_CARD_ERROR_READ_START); - } - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - if (count > 1) { - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - } - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(count) | SDHC_BLKATTR_BLKSIZE(512); - if (!cardCommand(CMD18_PGM_XFERTYP, m_highCapacity ? lba : 512*lba)) { - return sdError(SD_CARD_ERROR_CMD18); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::readStop() { - return transferStop(); -} -//----------------------------------------------------------------------------- -bool SdioCard::syncBlocks() { - return true; -} -//----------------------------------------------------------------------------- -uint8_t SdioCard::type() { - return m_version2 ? m_highCapacity ? - SD_CARD_TYPE_SDHC : SD_CARD_TYPE_SD2 : SD_CARD_TYPE_SD1; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf) { - uint8_t *ptr; - uint8_t aligned[512]; - if (3 & (uint32_t)buf) { - ptr = aligned; - memcpy(aligned, buf, 512); - } else { - ptr = const_cast(buf); - } - if (!rdWrBlocks(CMD24_DMA_XFERTYP, lba, ptr, 1)) { - return sdError(SD_CARD_ERROR_CMD24); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) { - uint8_t* ptr = const_cast(buf); - if (3 & (uint32_t)ptr) { - for (size_t i = 0; i < n; i++, lba++, ptr += 512) { - if (!writeBlock(lba, ptr)) { - return false; // writeBlock will set errorCode. - } - } - return true; - } - if (!rdWrBlocks(CMD25_DMA_XFERTYP, lba, ptr, n)) { - return sdError(SD_CARD_ERROR_CMD25); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeData(const uint8_t* src) { - DBG_IRQSTAT(); - const uint32_t* p32 = reinterpret_cast(src); - - if (!(SDHC_PRSSTAT & SDHC_PRSSTAT_WTA)) { - SDHC_PROCTL &= ~SDHC_PROCTL_SABGREQ; - // Don't stop at block gap if last block. Allows auto CMD12. - if ((SDHC_BLKATTR & 0XFFFF0000) == 0X10000) { - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - } else { - SDHC_PROCTL |= SDHC_PROCTL_CREQ; - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - } - } - if (waitTimeout(isBusyFifoWrite)) { - return sdError(SD_CARD_ERROR_WRITE_FIFO); - } - for (uint32_t iw = 0 ; iw < 512/(4*FIFO_WML); iw++) { - while (0 == (SDHC_PRSSTAT & SDHC_PRSSTAT_BWEN)) { - } - for (uint32_t i = 0; i < FIFO_WML; i++) { - SDHC_DATPORT = p32[i]; - } - p32 += FIFO_WML; - } - if (waitTimeout(isBusyTransferComplete)) { - return sdError(SD_CARD_ERROR_WRITE_TIMEOUT); - } - m_irqstat = SDHC_IRQSTAT; - SDHC_IRQSTAT = m_irqstat; - return (m_irqstat & SDHC_IRQSTAT_TC) && !(m_irqstat & SDHC_IRQSTAT_ERROR); -} -//----------------------------------------------------------------------------- -bool SdioCard::writeStart(uint32_t lba) { - // K66/K65 Errata - SDHC: Does not support Infinite Block Transfer Mode. - return sdError(SD_CARD_ERROR_FUNCTION_NOT_SUPPORTED); -} -//----------------------------------------------------------------------------- -// SDHC will do Auto CMD12 after count blocks. -bool SdioCard::writeStart(uint32_t lba, uint32_t count) { - if (count > 0XFFFF) { - return sdError(SD_CARD_ERROR_WRITE_START); - } - DBG_IRQSTAT(); - if (yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - if (count > 1) { - SDHC_PROCTL |= SDHC_PROCTL_SABGREQ; - } - SDHC_BLKATTR = SDHC_BLKATTR_BLKCNT(count) | SDHC_BLKATTR_BLKSIZE(512); - - if (!cardCommand(CMD25_PGM_XFERTYP, m_highCapacity ? lba : 512*lba)) { - return sdError(SD_CARD_ERROR_CMD25); - } - return true; -} -//----------------------------------------------------------------------------- -bool SdioCard::writeStop() { - return transferStop(); -} -#endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdFat.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SdFat.h deleted file mode 100644 index 5f2ef0d7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdFat.h +++ /dev/null @@ -1,514 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdFat_h -#define SdFat_h -/** - * \file - * \brief SdFat class - */ -#include "SysCall.h" -#include "BlockDriver.h" -#include "FatLib/FatLib.h" -#include "SdCard/SdioCard.h" -#if INCLUDE_SDIOS -#include "sdios.h" -#endif // INCLUDE_SDIOS -//------------------------------------------------------------------------------ -/** SdFat version 1.1.0 */ -#define SD_FAT_VERSION 10100 -/** SdFat version as string. */ -#define SD_FAT_VERSION_STR "1.1.0" -//============================================================================== -/** - * \class SdBaseFile - * \brief Class for backward compatibility. - */ -class SdBaseFile : public FatFile { - public: - SdBaseFile() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - SdBaseFile(const char* path, oflag_t oflag) : FatFile(path, oflag) {} -}; -//----------------------------------------------------------------------------- -#if ENABLE_ARDUINO_FEATURES -/** - * \class SdFile - * \brief Class for backward compatibility. - */ -class SdFile : public PrintFile { - public: - SdFile() {} - /** Create a file object and open it in the current working directory. - * - * \param[in] path A path for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a - * bitwise-inclusive OR of open flags. see - * FatFile::open(FatFile*, const char*, oflag_t). - */ - SdFile(const char* path, oflag_t oflag) : PrintFile(path, oflag) {} -}; -#endif // #if ENABLE_ARDUINO_FEATURES -//----------------------------------------------------------------------------- -/** - * \class SdFileSystem - * \brief Virtual base class for %SdFat library. - */ -template -class SdFileSystem : public FatFileSystem { - public: - /** Initialize file system. - * \return true for success else false. - */ - bool begin() { - return FatFileSystem::begin(&m_card); - } - /** \return Pointer to SD card object */ - SdDriverClass *card() { - m_card.syncBlocks(); - return &m_card; - } - /** %Print any SD error code to Serial and halt. */ - void errorHalt() { - errorHalt(&Serial); - } - /** %Print any SD error code and halt. - * - * \param[in] pr Print destination. - */ - void errorHalt(Print* pr) { - errorPrint(pr); - SysCall::halt(); - } - /** %Print msg, any SD error code and halt. - * - * \param[in] msg Message to print. - */ - void errorHalt(char const* msg) { - errorHalt(&Serial, msg); - } - /** %Print msg, any SD error code, and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorHalt(Print* pr, char const* msg) { - errorPrint(pr, msg); - SysCall::halt(); - } - /** %Print any SD error code to Serial */ - void errorPrint() { - errorPrint(&Serial); - } - /** %Print any SD error code. - * \param[in] pr Print device. - */ - void errorPrint(Print* pr) { - if (!cardErrorCode()) { - return; - } - pr->print(F("SD errorCode: 0X")); - pr->print(cardErrorCode(), HEX); - pr->print(F(",0X")); - pr->println(cardErrorData(), HEX); - } - /** %Print msg, any SD error code. - * - * \param[in] msg Message to print. - */ - void errorPrint(const char* msg) { - errorPrint(&Serial, msg); - } - /** %Print msg, any SD error code. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorPrint(Print* pr, char const* msg) { - pr->print(F("error: ")); - pr->println(msg); - errorPrint(pr); - } - /** %Print any SD error code and halt. */ - void initErrorHalt() { - initErrorHalt(&Serial); - } - /** %Print error details and halt after begin fails. - * - * \param[in] pr Print destination. - */ - void initErrorHalt(Print* pr) { - initErrorPrint(pr); - SysCall::halt(); - } - /**Print message, error details, and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorHalt(char const *msg) { - initErrorHalt(&Serial, msg); - } - /**Print message, error details, and halt after begin() fails. - * \param[in] pr Print device. - * \param[in] msg Message to print. - */ - void initErrorHalt(Print* pr, char const *msg) { - pr->println(msg); - initErrorHalt(pr); - } - - /** Print error details after begin() fails. */ - void initErrorPrint() { - initErrorPrint(&Serial); - } - /** Print error details after begin() fails. - * - * \param[in] pr Print destination. - */ - void initErrorPrint(Print* pr) { - if (cardErrorCode()) { - pr->println(F("Can't access SD card. Do not reformat.")); - if (cardErrorCode() == SD_CARD_ERROR_CMD0) { - pr->println(F("No card, wrong chip select pin, or SPI problem?")); - } - errorPrint(pr); - } else if (vol()->fatType() == 0) { - pr->println(F("Invalid format, reformat SD.")); - } else if (!vwd()->isOpen()) { - pr->println(F("Can't open root directory.")); - } else { - pr->println(F("No error found.")); - } - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorPrint(char const *msg) { - initErrorPrint(&Serial, msg); - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void initErrorPrint(Print* pr, char const *msg) { - pr->println(msg); - initErrorPrint(pr); - } -#if defined(ARDUINO) || defined(DOXYGEN) - /** %Print msg, any SD error code, and halt. - * - * \param[in] msg Message to print. - */ - void errorHalt(const __FlashStringHelper* msg) { - errorHalt(&Serial, msg); - } - /** %Print msg, any SD error code, and halt. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorHalt(Print* pr, const __FlashStringHelper* msg) { - errorPrint(pr, msg); - SysCall::halt(); - } - - /** %Print msg, any SD error code. - * - * \param[in] msg Message to print. - */ - void errorPrint(const __FlashStringHelper* msg) { - errorPrint(&Serial, msg); - } - /** %Print msg, any SD error code. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void errorPrint(Print* pr, const __FlashStringHelper* msg) { - pr->print(F("error: ")); - pr->println(msg); - errorPrint(pr); - } - /**Print message, error details, and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorHalt(const __FlashStringHelper* msg) { - initErrorHalt(&Serial, msg); - } - /**Print message, error details, and halt after begin() fails. - * \param[in] pr Print device for message. - * \param[in] msg Message to print. - */ - void initErrorHalt(Print* pr, const __FlashStringHelper* msg) { - pr->println(msg); - initErrorHalt(pr); - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] msg Message to print. - */ - void initErrorPrint(const __FlashStringHelper* msg) { - initErrorPrint(&Serial, msg); - } - /**Print message and error details and halt after begin() fails. - * - * \param[in] pr Print destination. - * \param[in] msg Message to print. - */ - void initErrorPrint(Print* pr, const __FlashStringHelper* msg) { - pr->println(msg); - initErrorPrint(pr); - } -#endif // defined(ARDUINO) || defined(DOXYGEN) - /** \return The card error code */ - uint8_t cardErrorCode() { - return m_card.errorCode(); - } - /** \return the card error data */ - uint32_t cardErrorData() { - return m_card.errorData(); - } - - protected: - SdDriverClass m_card; -}; -//============================================================================== -/** - * \class SdFat - * \brief Main file system class for %SdFat library. - */ -class SdFat : public SdFileSystem { - public: -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - SdFat() { - m_spi.setPort(nullptr); - } - /** Constructor with SPI port selection. - * \param[in] spiPort SPI port number. - */ - explicit SdFat(SPIClass* spiPort) { - m_spi.setPort(spiPort); - } -#endif // IMPLEMENT_SPI_PORT_SELECTION - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - /** Initialize SD card for diagnostic use only. - * - * \param[in] csPin SD card chip select pin. - * \param[in] settings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool cardBegin(uint8_t csPin = SS, SPISettings settings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, settings); - } - /** Initialize file system for diagnostic use only. - * \return true for success else false. - */ - bool fsBegin() { - return FatFileSystem::begin(card()); - } - - private: - SdFatSpiDriver m_spi; -}; -//============================================================================== -#if ENABLE_SDIO_CLASS || defined(DOXYGEN) -/** - * \class SdFatSdio - * \brief SdFat class using SDIO. - */ -class SdFatSdio : public SdFileSystem { - public: - /** Initialize SD card and file system. - * \return true for success else false. - */ - bool begin() { - return m_card.begin() && SdFileSystem::begin(); - } - /** Initialize SD card for diagnostic use only. - * - * \return true for success else false. - */ - bool cardBegin() { - return m_card.begin(); - } - /** Initialize file system for diagnostic use only. - * \return true for success else false. - */ - bool fsBegin() { - return SdFileSystem::begin(); - } -}; -#if ENABLE_SDIOEX_CLASS || defined(DOXYGEN) -//----------------------------------------------------------------------------- -/** - * \class SdFatSdioEX - * \brief SdFat class using SDIO. - */ -class SdFatSdioEX : public SdFileSystem { - public: - /** Initialize SD card and file system. - * \return true for success else false. - */ - bool begin() { - return m_card.begin() && SdFileSystem::begin(); - } - /** \return Pointer to SD card object */ - SdioCardEX* card() { - return &m_card; - } - /** Initialize SD card for diagnostic use only. - * - * \return true for success else false. - */ - bool cardBegin() { - return m_card.begin(); - } - /** Initialize file system for diagnostic use only. - * \return true for success else false. - */ - bool fsBegin() { - return SdFileSystem::begin(); - } -}; -#endif // ENABLE_SDIOEX_CLASS || defined(DOXYGEN) -#endif // ENABLE_SDIO_CLASS || defined(DOXYGEN) -//============================================================================= -#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -/** - * \class SdFatSoftSpi - * \brief SdFat class using software SPI. - */ -template -class SdFatSoftSpi : public SdFileSystem { - public: - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings ignored for software SPI.. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - private: - SdSpiSoftDriver m_spi; -}; -#endif // #if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -//============================================================================== -#if ENABLE_EXTENDED_TRANSFER_CLASS || defined(DOXYGEN) -/** - * \class SdFatEX - * \brief SdFat class with extended SD I/O. - */ -class SdFatEX : public SdFileSystem { - public: -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - SdFatEX() { - m_spi.setPort(nullptr); - } - /** Constructor with SPI port selection. - * \param[in] spiPort SPI port number. - */ - explicit SdFatEX(SPIClass* spiPort) { - m_spi.setPort(spiPort); - } -#endif // IMPLEMENT_SPI_PORT_SELECTION - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - - private: - SdFatSpiDriver m_spi; -}; -//============================================================================== -#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -/** - * \class SdFatSoftSpiEX - * \brief SdFat class using software SPI and extended SD I/O. - */ -template -class SdFatSoftSpiEX : public SdFileSystem { - public: - /** Initialize SD card and file system. - * - * \param[in] csPin SD card chip select pin. - * \param[in] spiSettings ignored for software SPI. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings spiSettings = SPI_FULL_SPEED) { - return m_card.begin(&m_spi, csPin, spiSettings) && - SdFileSystem::begin(); - } - private: - SdSpiSoftDriver m_spi; -}; -#endif // #if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -#endif // ENABLE_EXTENDED_TRANSFER_CLASS || defined(DOXYGEN) -//============================================================================= -/** - * \class Sd2Card - * \brief Raw access to SD and SDHC card using default SPI library. - */ -class Sd2Card : public SdSpiCard { - public: - /** Initialize the SD card. - * \param[in] csPin SD chip select pin. - * \param[in] settings SPI speed, mode, and bit order. - * \return true for success else false. - */ - bool begin(uint8_t csPin = SS, SPISettings settings = SD_SCK_MHZ(50)) { - return SdSpiCard::begin(&m_spi, csPin, settings); - } - private: - SdFatSpiDriver m_spi; -}; -#endif // SdFat_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SdFatConfig.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SdFatConfig.h deleted file mode 100644 index 81ae5a9b..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SdFatConfig.h +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief configuration definitions - */ -#ifndef SdFatConfig_h -#define SdFatConfig_h -#include -#include -#ifdef __AVR__ -#include -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** - * Set INCLUDE_SDIOS nonzero to include sdios.h in SdFat.h. - * sdios.h provides C++ style IO Streams. - */ -#define INCLUDE_SDIOS 1 -//------------------------------------------------------------------------------ -/** - * Set USE_LONG_FILE_NAMES nonzero to use long file names (LFN). - * Long File Name are limited to a maximum length of 255 characters. - * - * This implementation allows 7-bit characters in the range - * 0X20 to 0X7E except the following characters are not allowed: - * - * < (less than) - * > (greater than) - * : (colon) - * " (double quote) - * / (forward slash) - * \ (backslash) - * | (vertical bar or pipe) - * ? (question mark) - * * (asterisk) - * - */ -#define USE_LONG_FILE_NAMES 1 -//------------------------------------------------------------------------------ -/** - * If the symbol ENABLE_EXTENDED_TRANSFER_CLASS is nonzero, the class SdFatEX - * will be defined. If the symbol ENABLE_SOFTWARE_SPI_CLASS is also nonzero, - * the class SdFatSoftSpiEX will be defined. - * - * These classes used extended multi-block SD I/O for better performance. - * the SPI bus may not be shared with other devices in this mode. - */ -#define ENABLE_EXTENDED_TRANSFER_CLASS 0 -//------------------------------------------------------------------------------ -/** - * If the symbol USE_STANDARD_SPI_LIBRARY is zero, an optimized custom SPI - * driver is used if it exists. If the symbol USE_STANDARD_SPI_LIBRARY is - * one, the standard Arduino SPI.h library is used with SPI. If the symbol - * USE_STANDARD_SPI_LIBRARY is two, the SPI port can be selected with the - * constructors SdFat(SPIClass* spiPort) and SdFatEX(SPIClass* spiPort). - */ -#define USE_STANDARD_SPI_LIBRARY 0 -//------------------------------------------------------------------------------ -/** - * If the symbol ENABLE_SOFTWARE_SPI_CLASS is nonzero, the class SdFatSoftSpi - * will be defined. If ENABLE_EXTENDED_TRANSFER_CLASS is also nonzero, - * the class SdFatSoftSpiEX will be defined. - */ -#define ENABLE_SOFTWARE_SPI_CLASS 0 -//------------------------------------------------------------------------------ -/** If the symbol USE_FCNTL_H is nonzero, open flags for access modes O_RDONLY, - * O_WRONLY, O_RDWR and the open modifiers O_APPEND, O_CREAT, O_EXCL, O_SYNC - * will be defined by including the system file fcntl.h. - */ -#if defined(__AVR__) -// AVR fcntl.h does not define open flags. -#define USE_FCNTL_H 0 -#elif defined(PLATFORM_ID) -// Particle boards - use fcntl.h. -#define USE_FCNTL_H 1 -#elif defined(__arm__) -// ARM gcc defines open flags. -#define USE_FCNTL_H 1 -#else // defined(__AVR__) //Like ESP32 -#define USE_FCNTL_H 1 -#endif // defined(__AVR__) -//------------------------------------------------------------------------------ -/** - * If CHECK_FLASH_PROGRAMMING is zero, overlap of single sector flash - * programming and other operations will be allowed for faster write - * performance. - * - * Some cards will not sleep in low power mode unless CHECK_FLASH_PROGRAMMING - * is non-zero. - */ -#define CHECK_FLASH_PROGRAMMING 1 -//------------------------------------------------------------------------------ -/** - * Set MAINTAIN_FREE_CLUSTER_COUNT nonzero to keep the count of free clusters - * updated. This will increase the speed of the freeClusterCount() call - * after the first call. Extra flash will be required. - */ -#define MAINTAIN_FREE_CLUSTER_COUNT 0 -//------------------------------------------------------------------------------ -/** - * To enable SD card CRC checking set USE_SD_CRC nonzero. - * - * Set USE_SD_CRC to 1 to use a smaller CRC-CCITT function. This function - * is slower for AVR but may be fast for ARM and other processors. - * - * Set USE_SD_CRC to 2 to used a larger table driven CRC-CCITT function. This - * function is faster for AVR but may be slower for ARM and other processors. - */ -#define USE_SD_CRC 0 -//------------------------------------------------------------------------------ -/** - * Handle Watchdog Timer for WiFi modules. - * - * Yield will be called before accessing the SPI bus if it has been more - * than WDT_YIELD_TIME_MICROS microseconds since the last yield call by SdFat. - */ -#if defined(PLATFORM_ID) || defined(ESP8266) -// If Particle device or ESP8266 call yield. -#define WDT_YIELD_TIME_MICROS 100000 -#else -#define WDT_YIELD_TIME_MICROS 0 -#endif -//------------------------------------------------------------------------------ -/** - * Set FAT12_SUPPORT nonzero to enable use if FAT12 volumes. - * FAT12 has not been well tested and requires additional flash. - */ -#define FAT12_SUPPORT 0 -//------------------------------------------------------------------------------ -/** - * Set DESTRUCTOR_CLOSES_FILE nonzero to close a file in its destructor. - * - * Causes use of lots of heap in ARM. - */ -#define DESTRUCTOR_CLOSES_FILE 0 -//------------------------------------------------------------------------------ -/** - * Call flush for endl if ENDL_CALLS_FLUSH is nonzero - * - * The standard for iostreams is to call flush. This is very costly for - * SdFat. Each call to flush causes 2048 bytes of I/O to the SD. - * - * SdFat has a single 512 byte buffer for SD I/O so it must write the current - * data block to the SD, read the directory block from the SD, update the - * directory entry, write the directory block to the SD and read the data - * block back into the buffer. - * - * The SD flash memory controller is not designed for this many rewrites - * so performance may be reduced by more than a factor of 100. - * - * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force - * all data to be written to the SD. - */ -#define ENDL_CALLS_FLUSH 0 -//------------------------------------------------------------------------------ -/** - * Set USE_SEPARATE_FAT_CACHE nonzero to use a second 512 byte cache - * for FAT table entries. This improves performance for large writes - * that are not a multiple of 512 bytes. - */ -#ifdef __arm__ -#define USE_SEPARATE_FAT_CACHE 1 -#else // __arm__ -#define USE_SEPARATE_FAT_CACHE 0 -#endif // __arm__ -//------------------------------------------------------------------------------ -/** - * Set USE_MULTI_BLOCK_IO nonzero to use multi-block SD read/write. - * - * Don't use mult-block read/write on small AVR boards. - */ -#if defined(RAMEND) && RAMEND < 3000 -#define USE_MULTI_BLOCK_IO 0 -#else // RAMEND -#define USE_MULTI_BLOCK_IO 1 -#endif // RAMEND -//----------------------------------------------------------------------------- -/** Enable SDIO driver if available. */ -#if defined(__MK64FX512__) || defined(__MK66FX1M0__) -#define ENABLE_SDIO_CLASS 1 -#define ENABLE_SDIOEX_CLASS 1 -#else // ENABLE_SDIO_CLASS -#define ENABLE_SDIO_CLASS 0 -#endif // ENABLE_SDIO_CLASS -//------------------------------------------------------------------------------ -/** - * Determine the default SPI configuration. - */ -#if defined(__STM32F1__) || defined(__STM32F4__) || defined(PLATFORM_ID) -// has multiple SPI ports -#define SD_HAS_CUSTOM_SPI 2 -#elif defined(__AVR__)\ - || defined(__SAM3X8E__) || defined(__SAM3X8H__)\ - || (defined(__arm__) && defined(CORE_TEENSY))\ - || defined(ESP8266) -#define SD_HAS_CUSTOM_SPI 1 -#else // SD_HAS_CUSTOM_SPI -// Use standard SPI library. -#define SD_HAS_CUSTOM_SPI 0 -#endif // SD_HAS_CUSTOM_SPI -//------------------------------------------------------------------------------ -/** - * Check if API to select HW SPI port is needed. - */ -#if USE_STANDARD_SPI_LIBRARY > 1 || SD_HAS_CUSTOM_SPI > 1 -#define IMPLEMENT_SPI_PORT_SELECTION 1 -#else // IMPLEMENT_SPI_PORT_SELECTION -#define IMPLEMENT_SPI_PORT_SELECTION 0 -#endif // IMPLEMENT_SPI_PORT_SELECTION -#endif // SdFatConfig_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/DigitalPin.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/DigitalPin.h deleted file mode 100644 index 9f8b8e49..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/DigitalPin.h +++ /dev/null @@ -1,386 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * @file - * @brief Fast Digital Pin functions - * - * @defgroup digitalPin Fast Pin I/O - * @details Fast Digital I/O functions and template class. - * @{ - */ -#ifndef DigitalPin_h -#define DigitalPin_h -#if defined(__AVR__) || defined(DOXYGEN) -#include -/** GpioPinMap type */ -struct GpioPinMap_t { - volatile uint8_t* pin; /**< address of PIN for this pin */ - volatile uint8_t* ddr; /**< address of DDR for this pin */ - volatile uint8_t* port; /**< address of PORT for this pin */ - uint8_t mask; /**< bit mask for this pin */ -}; - -/** Initializer macro. */ -#define GPIO_PIN(reg, bit) {&PIN##reg, &DDR##reg, &PORT##reg, 1 << bit} - -// Include pin map for current board. -#include "boards/GpioPinMap.h" -//------------------------------------------------------------------------------ -/** generate bad pin number error */ -void badPinNumber(void) - __attribute__((error("Pin number is too large or not a constant"))); -//------------------------------------------------------------------------------ -/** Check for valid pin number - * @param[in] pin Number of pin to be checked. - */ -static inline __attribute__((always_inline)) -void badPinCheck(uint8_t pin) { - if (!__builtin_constant_p(pin) || pin >= NUM_DIGITAL_PINS) { - badPinNumber(); - } -} -//------------------------------------------------------------------------------ -/** DDR register address - * @param[in] pin Arduino pin number - * @return register address - */ -static inline __attribute__((always_inline)) -volatile uint8_t* ddrReg(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].ddr; -} -//------------------------------------------------------------------------------ -/** Bit mask for pin - * @param[in] pin Arduino pin number - * @return mask - */ -static inline __attribute__((always_inline)) -uint8_t pinMask(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].mask; -} -//------------------------------------------------------------------------------ -/** PIN register address - * @param[in] pin Arduino pin number - * @return register address - */ -static inline __attribute__((always_inline)) -volatile uint8_t* pinReg(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].pin; -} -//------------------------------------------------------------------------------ -/** PORT register address - * @param[in] pin Arduino pin number - * @return register address - */ -static inline __attribute__((always_inline)) -volatile uint8_t* portReg(uint8_t pin) { - badPinCheck(pin); - return GpioPinMap[pin].port; -} -//------------------------------------------------------------------------------ -/** Fast write helper. - * @param[in] address I/O register address - * @param[in] mask bit mask for pin - * @param[in] level value for bit - */ -static inline __attribute__((always_inline)) -void fastBitWriteSafe(volatile uint8_t* address, uint8_t mask, bool level) { - uint8_t s; - if (address > reinterpret_cast(0X3F)) { - s = SREG; - cli(); - } - if (level) { - *address |= mask; - } else { - *address &= ~mask; - } - if (address > reinterpret_cast(0X3F)) { - SREG = s; - } -} -//------------------------------------------------------------------------------ -/** Read pin value. - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - return *pinReg(pin) & pinMask(pin); -} -//------------------------------------------------------------------------------ -/** Toggle a pin. - * @param[in] pin Arduino pin number - * - * If the pin is in output mode toggle the pin level. - * If the pin is in input mode toggle the state of the 20K pullup. - */ -static inline __attribute__((always_inline)) -void fastDigitalToggle(uint8_t pin) { - if (pinReg(pin) > reinterpret_cast(0X3F)) { - // must write bit to high address port - *pinReg(pin) = pinMask(pin); - } else { - // will compile to sbi and PIN register will not be read. - *pinReg(pin) |= pinMask(pin); - } -} -//------------------------------------------------------------------------------ -/** Set pin value. - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, bool level) { - fastBitWriteSafe(portReg(pin), pinMask(pin), level); -} -//------------------------------------------------------------------------------ -/** Write the DDR register. - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDdrWrite(uint8_t pin, bool level) { - fastBitWriteSafe(ddrReg(pin), pinMask(pin), level); -} -//------------------------------------------------------------------------------ -/** Set pin mode. - * @param[in] pin Arduino pin number - * @param[in] mode INPUT, OUTPUT, or INPUT_PULLUP. - * - * The internal pullup resistors will be enabled if mode is INPUT_PULLUP - * and disabled if the mode is INPUT. - */ -static inline __attribute__((always_inline)) -void fastPinMode(uint8_t pin, uint8_t mode) { - fastDdrWrite(pin, mode == OUTPUT); - if (mode != OUTPUT) { - fastDigitalWrite(pin, mode == INPUT_PULLUP); - } -} -#else // defined(__AVR__) -#if defined(CORE_TEENSY) -//------------------------------------------------------------------------------ -/** read pin value - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - return *portInputRegister(pin); -} -//------------------------------------------------------------------------------ -/** Set pin value - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, bool value) { - if (value) { - *portSetRegister(pin) = 1; - } else { - *portClearRegister(pin) = 1; - } -} -#elif defined(__SAM3X8E__) || defined(__SAM3X8H__) -//------------------------------------------------------------------------------ -/** read pin value - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - return g_APinDescription[pin].pPort->PIO_PDSR & g_APinDescription[pin].ulPin; -} -//------------------------------------------------------------------------------ -/** Set pin value - * @param[in] pin Arduino pin number - * @param[in] level value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, bool value) { - if (value) { - g_APinDescription[pin].pPort->PIO_SODR = g_APinDescription[pin].ulPin; - } else { - g_APinDescription[pin].pPort->PIO_CODR = g_APinDescription[pin].ulPin; - } -} -#elif defined(ESP8266) -//------------------------------------------------------------------------------ -/** Set pin value - * @param[in] pin Arduino pin number - * @param[in] val value to write - */ -static inline __attribute__((always_inline)) -void fastDigitalWrite(uint8_t pin, uint8_t val) { - if (pin < 16) { - if (val) { - GPOS = (1 << pin); - } else { - GPOC = (1 << pin); - } - } else if (pin == 16) { - if (val) { - GP16O |= 1; - } else { - GP16O &= ~1; - } - } -} -//------------------------------------------------------------------------------ -/** Read pin value - * @param[in] pin Arduino pin number - * @return value read - */ -static inline __attribute__((always_inline)) -bool fastDigitalRead(uint8_t pin) { - if (pin < 16) { - return GPIP(pin); - } else if (pin == 16) { - return GP16I & 0x01; - } - return 0; -} -#else // CORE_TEENSY -//------------------------------------------------------------------------------ -inline void fastDigitalWrite(uint8_t pin, bool value) { - digitalWrite(pin, value); -} -//------------------------------------------------------------------------------ -inline bool fastDigitalRead(uint8_t pin) { - return digitalRead(pin); -} -#endif // CORE_TEENSY -//------------------------------------------------------------------------------ -inline void fastDigitalToggle(uint8_t pin) { - fastDigitalWrite(pin, !fastDigitalRead(pin)); -} -//------------------------------------------------------------------------------ -inline void fastPinMode(uint8_t pin, uint8_t mode) { - pinMode(pin, mode); -} -#endif // __AVR__ -//------------------------------------------------------------------------------ -/** set pin configuration - * @param[in] pin Arduino pin number - * @param[in] mode mode INPUT or OUTPUT. - * @param[in] level If mode is output, set level high/low. - * If mode is input, enable or disable the pin's 20K pullup. - */ -#define fastPinConfig(pin, mode, level)\ - {fastPinMode(pin, mode); fastDigitalWrite(pin, level);} -//============================================================================== -/** - * @class DigitalPin - * @brief Fast digital port I/O - */ -template -class DigitalPin { - public: - //---------------------------------------------------------------------------- - /** Constructor */ - DigitalPin() {} - //---------------------------------------------------------------------------- - /** Asignment operator. - * @param[in] value If true set the pin's level high else set the - * pin's level low. - * - * @return This DigitalPin instance. - */ - inline DigitalPin & operator = (bool value) __attribute__((always_inline)) { - write(value); - return *this; - } - //---------------------------------------------------------------------------- - /** Parenthesis operator. - * @return Pin's level - */ - inline operator bool () const __attribute__((always_inline)) { - return read(); - } - //---------------------------------------------------------------------------- - /** Set pin configuration. - * @param[in] mode: INPUT or OUTPUT. - * @param[in] level If mode is OUTPUT, set level high/low. - * If mode is INPUT, enable or disable the pin's 20K pullup. - */ - inline __attribute__((always_inline)) - void config(uint8_t mode, bool level) { - fastPinConfig(PinNumber, mode, level); - } - //---------------------------------------------------------------------------- - /** - * Set pin level high if output mode or enable 20K pullup if input mode. - */ - inline __attribute__((always_inline)) - void high() {write(true);} - //---------------------------------------------------------------------------- - /** - * Set pin level low if output mode or disable 20K pullup if input mode. - */ - inline __attribute__((always_inline)) - void low() {write(false);} - //---------------------------------------------------------------------------- - /** - * Set pin mode. - * @param[in] mode: INPUT, OUTPUT, or INPUT_PULLUP. - * - * The internal pullup resistors will be enabled if mode is INPUT_PULLUP - * and disabled if the mode is INPUT. - */ - inline __attribute__((always_inline)) - void mode(uint8_t mode) { - fastPinMode(PinNumber, mode); - } - //---------------------------------------------------------------------------- - /** @return Pin's level. */ - inline __attribute__((always_inline)) - bool read() const { - return fastDigitalRead(PinNumber); - } - //---------------------------------------------------------------------------- - /** Toggle a pin. - * - * If the pin is in output mode toggle the pin's level. - * If the pin is in input mode toggle the state of the 20K pullup. - */ - inline __attribute__((always_inline)) - void toggle() { - fastDigitalToggle(PinNumber); - } - //---------------------------------------------------------------------------- - /** Write the pin's level. - * @param[in] value If true set the pin's level high else set the - * pin's level low. - */ - inline __attribute__((always_inline)) - void write(bool value) { - fastDigitalWrite(PinNumber, value); - } -}; -#endif // DigitalPin_h -/** @} */ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiBaseDriver.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiBaseDriver.h deleted file mode 100644 index 8a33a469..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiBaseDriver.h +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SdSpiBaseDriver_h -#define SdSpiBaseDriver_h -/** - * \class SdSpiBaseDriver - * \brief SPI base driver. - */ -class SdSpiBaseDriver { - public: - /** Set SPI options for access to SD/SDHC cards. - * - */ - virtual void activate() = 0; - /** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ - virtual void begin(uint8_t chipSelectPin) = 0; - /** - * End SPI transaction. - */ - virtual void deactivate() = 0; - /** Receive a byte. - * - * \return The byte. - */ - virtual uint8_t receive() = 0; - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - virtual uint8_t receive(uint8_t* buf, size_t n) = 0; - /** Send a byte. - * - * \param[in] data Byte to send - */ - virtual void send(uint8_t data) = 0; - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - virtual void send(const uint8_t* buf, size_t n) = 0; - /** Set CS low. */ - virtual void select() = 0; - /** Save SPI settings. - * \param[in] spiSettings SPI speed, mode, and bit order. - */ - virtual void setSpiSettings(SPISettings spiSettings) = 0; - /** Set CS high. */ - virtual void unselect() = 0; -}; -#endif // SdSpiBaseDriver_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiDriver.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiDriver.h deleted file mode 100644 index 563efe84..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiDriver.h +++ /dev/null @@ -1,438 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * \file - * \brief SpiDriver classes - */ -#ifndef SdSpiDriver_h -#define SdSpiDriver_h -#include -#include "SPI.h" -#include "SdSpiBaseDriver.h" -#include "SdFatConfig.h" -//------------------------------------------------------------------------------ -/** SDCARD_SPI is defined if board has built-in SD card socket */ -#ifndef SDCARD_SPI -#define SDCARD_SPI SPI -#endif // SDCARD_SPI -//------------------------------------------------------------------------------ -/** - * \class SdSpiLibDriver - * \brief SdSpiLibDriver - use standard SPI library. - */ -#if ENABLE_SOFTWARE_SPI_CLASS -class SdSpiLibDriver : public SdSpiBaseDriver { -#else // ENABLE_SOFTWARE_SPI_CLASS -class SdSpiLibDriver { -#endif // ENABLE_SOFTWARE_SPI_CLASS - public: -#if IMPLEMENT_SPI_PORT_SELECTION - /** Activate SPI hardware. */ - void activate() { - m_spi->beginTransaction(m_spiSettings); - } - /** Deactivate SPI hardware. */ - void deactivate() { - m_spi->endTransaction(); - } - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin) { - m_csPin = csPin; - digitalWrite(csPin, HIGH); - pinMode(csPin, OUTPUT); - m_spi->begin(); - } - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive() { - return m_spi->transfer( 0XFF); - } - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = m_spi->transfer(0XFF); - } - return 0; - } - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data) { - m_spi->transfer(data); - } - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - m_spi->transfer(buf[i]); - } - } -#else // IMPLEMENT_SPI_PORT_SELECTION - /** Activate SPI hardware. */ - void activate() { - SDCARD_SPI.beginTransaction(m_spiSettings); - } - /** Deactivate SPI hardware. */ - void deactivate() { - SDCARD_SPI.endTransaction(); - } - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin) { - m_csPin = csPin; - digitalWrite(csPin, HIGH); - pinMode(csPin, OUTPUT); - SDCARD_SPI.begin(); - } - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive() { - return SDCARD_SPI.transfer( 0XFF); - } - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = SDCARD_SPI.transfer(0XFF); - } - return 0; - } - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data) { - SDCARD_SPI.transfer(data); - } - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - SDCARD_SPI.transfer(buf[i]); - } - } -#endif // IMPLEMENT_SPI_PORT_SELECTION - /** Set CS low. */ - void select() { - digitalWrite(m_csPin, LOW); - } - /** Save SPISettings. - * - * \param[in] spiSettings SPI speed, mode, and byte order. - */ - void setSpiSettings(SPISettings spiSettings) { - m_spiSettings = spiSettings; - } - /** Set CS high. */ - void unselect() { - digitalWrite(m_csPin, HIGH); - } -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - /** Set SPI port. - * \param[in] spiPort Hardware SPI port. - */ - void setPort(SPIClass* spiPort) { - m_spi = spiPort ? spiPort : &SDCARD_SPI; - } - private: - SPIClass* m_spi; -#else // IMPLEMENT_SPI_PORT_SELECTION - private: -#endif // IMPLEMENT_SPI_PORT_SELECTION - SPISettings m_spiSettings; - uint8_t m_csPin; -}; -//------------------------------------------------------------------------------ -/** - * \class SdSpiAltDriver - * \brief Optimized SPI class for access to SD and SDHC flash memory cards. - */ -#if ENABLE_SOFTWARE_SPI_CLASS -class SdSpiAltDriver : public SdSpiBaseDriver { -#else // ENABLE_SOFTWARE_SPI_CLASS -class SdSpiAltDriver { -#endif // ENABLE_SOFTWARE_SPI_CLASS - public: - /** Activate SPI hardware. */ - void activate(); - /** Deactivate SPI hardware. */ - void deactivate(); - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin); - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive(); - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n); - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data); - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf, size_t n); - /** Set CS low. */ - void select() { - digitalWrite(m_csPin, LOW); - } - /** Save SPISettings. - * - * \param[in] spiSettings SPI speed, mode, and byte order. - */ - void setSpiSettings(SPISettings spiSettings) { - m_spiSettings = spiSettings; - } - /** Set CS high. */ - void unselect() { - digitalWrite(m_csPin, HIGH); - } -#if IMPLEMENT_SPI_PORT_SELECTION || defined(DOXYGEN) - /** Set SPI port number. - * \param[in] spiPort Hardware SPI port. - */ - void setPort(SPIClass* spiPort) { - m_spi = spiPort ? spiPort : &SDCARD_SPI; - } - private: - SPIClass* m_spi; -#else // IMPLEMENT_SPI_PORT_SELECTION - private: -#endif // IMPLEMENT_SPI_PORT_SELECTION - SPISettings m_spiSettings; - uint8_t m_csPin; -}; -//------------------------------------------------------------------------------ -#if ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -#ifdef ARDUINO -#include "SoftSPI.h" -#elif defined(PLATFORM_ID) // Only defined if a Particle device -#include "SoftSPIParticle.h" -#endif // ARDUINO -/** - * \class SdSpiSoftDriver - * \brief Software SPI class for access to SD and SDHC flash memory cards. - */ -template -class SdSpiSoftDriver : public SdSpiBaseDriver { - public: - /** Dummy activate SPI hardware for software SPI */ - void activate() {} - /** Dummy deactivate SPI hardware for software SPI */ - void deactivate() {} - /** Initialize the SPI bus. - * - * \param[in] csPin SD card chip select pin. - */ - void begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - m_spi.begin(); - } - /** Receive a byte. - * - * \return The byte. - */ - uint8_t receive() { - return m_spi.receive(); - } - /** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ - uint8_t receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = receive(); - } - return 0; - } - /** Send a byte. - * - * \param[in] data Byte to send - */ - void send(uint8_t data) { - m_spi.send(data); - } - /** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ - void send(const uint8_t* buf , size_t n) { - for (size_t i = 0; i < n; i++) { - send(buf[i]); - } - } - /** Set CS low. */ - void select() { - digitalWrite(m_csPin, LOW); - } - /** Save SPISettings. - * - * \param[in] spiSettings SPI speed, mode, and byte order. - */ - void setSpiSettings(SPISettings spiSettings) { - (void)spiSettings; - } - /** Set CS high. */ - void unselect() { - digitalWrite(m_csPin, HIGH); - } - - private: - uint8_t m_csPin; - SoftSPI m_spi; -}; -#endif // ENABLE_SOFTWARE_SPI_CLASS || defined(DOXYGEN) -//------------------------------------------------------------------------------ -// Choose SPI driver for SdFat and SdFatEX classes. -#if USE_STANDARD_SPI_LIBRARY || !SD_HAS_CUSTOM_SPI -/** SdFat uses Arduino library SPI. */ -typedef SdSpiLibDriver SdFatSpiDriver; -#else // USE_STANDARD_SPI_LIBRARY || !SD_HAS_CUSTOM_SPI -/** SdFat uses custom fast SPI. */ -typedef SdSpiAltDriver SdFatSpiDriver; -#endif // USE_STANDARD_SPI_LIBRARY || !SD_HAS_CUSTOM_SPI - -/** typedef for for SdSpiCard class. */ -#if ENABLE_SOFTWARE_SPI_CLASS -// Need virtual driver. -typedef SdSpiBaseDriver SdSpiDriver; -#else // ENABLE_SOFTWARE_SPI_CLASS -// Don't need virtual driver. -typedef SdFatSpiDriver SdSpiDriver; -#endif // ENABLE_SOFTWARE_SPI_CLASS -//============================================================================== -// Use of in-line for AVR to save flash. -#ifdef __AVR__ -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - SPI.begin(); -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::deactivate() { - SPI.endTransaction(); -} -//------------------------------------------------------------------------------ -inline uint8_t SdSpiAltDriver::receive() { - SPDR = 0XFF; - while (!(SPSR & (1 << SPIF))) {} - return SPDR; -} -//------------------------------------------------------------------------------ -inline uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - if (n-- == 0) { - return 0; - } - SPDR = 0XFF; - for (size_t i = 0; i < n; i++) { - while (!(SPSR & (1 << SPIF))) {} - uint8_t b = SPDR; - SPDR = 0XFF; - buf[i] = b; - } - while (!(SPSR & (1 << SPIF))) {} - buf[n] = SPDR; - return 0; -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::send(uint8_t data) { - SPDR = data; - while (!(SPSR & (1 << SPIF))) {} -} -//------------------------------------------------------------------------------ -inline void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - if (n == 0) { - return; - } - SPDR = buf[0]; - if (n > 1) { - uint8_t b = buf[1]; - size_t i = 2; - while (1) { - while (!(SPSR & (1 << SPIF))) {} - SPDR = b; - if (i == n) { - break; - } - b = buf[i++]; - } - } - while (!(SPSR & (1 << SPIF))) {} -} -#endif // __AVR__ -#endif // SdSpiDriver_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiESP8266.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiESP8266.cpp deleted file mode 100644 index 5594a45d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiESP8266.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(ESP8266) -#include "SdSpiDriver.h" -//------------------------------------------------------------------------------ -/** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - SPI.begin(); -} -//------------------------------------------------------------------------------ -/** Set SPI options for access to SD/SDHC cards. - * - */ -void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::deactivate() { - // Note: endTransaction is an empty function on ESP8266. - SPI.endTransaction(); -} -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return SPI.transfer(0XFF); -} -//------------------------------------------------------------------------------ -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - // Adjust to 32-bit alignment. - while ((reinterpret_cast(buf) & 0X3) && n) { - *buf++ = SPI.transfer(0xff); - n--; - } - // Do multiple of four byte transfers. - size_t n4 = 4*(n/4); - SPI.transferBytes(0, buf, n4); - - // Transfer up to three remaining bytes. - for (buf += n4, n -= n4; n; n--) { - *buf++ = SPI.transfer(0xff); - } - return 0; -} -//------------------------------------------------------------------------------ -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - SPI.transfer(b); -} -//------------------------------------------------------------------------------ -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - // Adjust to 32-bit alignment. - while ((reinterpret_cast(buf) & 0X3) && n) { - SPI.transfer(*buf++); - n--; - } - SPI.transferBytes(const_cast(buf), 0, n); -} -#endif // defined(ESP8266) diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiParticle.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiParticle.cpp deleted file mode 100644 index ee75bbfb..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiParticle.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(PLATFORM_ID) -#include "SdSpiDriver.h" -static volatile bool SPI_DMA_TransferCompleted = false; -//----------------------------------------------------------------------------- -static void SD_SPI_DMA_TransferComplete_Callback(void) { - SPI_DMA_TransferCompleted = true; -} -//------------------------------------------------------------------------------ -/** Set SPI options for access to SD/SDHC cards. - * - * \param[in] divisor SCK clock divider relative to the APB1 or APB2 clock. - */ -void SdSpiAltDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -/** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - m_spi->begin(); - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); -} -//------------------------------------------------------------------------------ -/** - * End SPI transaction. - */ -void SdSpiAltDriver::deactivate() { - m_spi->endTransaction(); -} -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return m_spi->transfer(0XFF); -} -//------------------------------------------------------------------------------ -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - SPI_DMA_TransferCompleted = false; - m_spi->transfer(nullptr, buf, n, SD_SPI_DMA_TransferComplete_Callback); - while (!SPI_DMA_TransferCompleted) {} - return 0; -} -//------------------------------------------------------------------------------ -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - m_spi->transfer(b); -} -//------------------------------------------------------------------------------ -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - SPI_DMA_TransferCompleted = false; - - m_spi->transfer(const_cast(buf), nullptr, n, - SD_SPI_DMA_TransferComplete_Callback); - - while (!SPI_DMA_TransferCompleted) {} -} -#endif // defined(PLATFORM_ID) diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiSAM3X.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiSAM3X.cpp deleted file mode 100644 index 2da85cda..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiSAM3X.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiDriver.h" -#if defined(__SAM3X8E__) || defined(__SAM3X8H__) -/** Use SAM3X DMAC if nonzero */ -#define USE_SAM3X_DMAC 1 -/** Use extra Bus Matrix arbitration fix if nonzero */ -#define USE_SAM3X_BUS_MATRIX_FIX 0 -/** Time in ms for DMA receive timeout */ -#define SAM3X_DMA_TIMEOUT 100 -/** chip select register number */ -#define SPI_CHIP_SEL 3 -/** DMAC receive channel */ -#define SPI_DMAC_RX_CH 1 -/** DMAC transmit channel */ -#define SPI_DMAC_TX_CH 0 -/** DMAC Channel HW Interface Number for SPI TX. */ -#define SPI_TX_IDX 1 -/** DMAC Channel HW Interface Number for SPI RX. */ -#define SPI_RX_IDX 2 -//------------------------------------------------------------------------------ -/** Disable DMA Controller. */ -static void dmac_disable() { - DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); -} -/** Enable DMA Controller. */ -static void dmac_enable() { - DMAC->DMAC_EN = DMAC_EN_ENABLE; -} -/** Disable DMA Channel. */ -static void dmac_channel_disable(uint32_t ul_num) { - DMAC->DMAC_CHDR = DMAC_CHDR_DIS0 << ul_num; -} -/** Enable DMA Channel. */ -static void dmac_channel_enable(uint32_t ul_num) { - DMAC->DMAC_CHER = DMAC_CHER_ENA0 << ul_num; -} -/** Poll for transfer complete. */ -static bool dmac_channel_transfer_done(uint32_t ul_num) { - return (DMAC->DMAC_CHSR & (DMAC_CHSR_ENA0 << ul_num)) ? false : true; -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); -SPI.begin(); -#if USE_SAM3X_DMAC - pmc_enable_periph_clk(ID_DMAC); - dmac_disable(); - DMAC->DMAC_GCFG = DMAC_GCFG_ARB_CFG_FIXED; - dmac_enable(); -#if USE_SAM3X_BUS_MATRIX_FIX - MATRIX->MATRIX_WPMR = 0x4d415400; - MATRIX->MATRIX_MCFG[1] = 1; - MATRIX->MATRIX_MCFG[2] = 1; - MATRIX->MATRIX_SCFG[0] = 0x01000010; - MATRIX->MATRIX_SCFG[1] = 0x01000010; - MATRIX->MATRIX_SCFG[7] = 0x01000010; -#endif // USE_SAM3X_BUS_MATRIX_FIX -#endif // USE_SAM3X_DMAC -} -//------------------------------------------------------------------------------ -// start RX DMA -static void spiDmaRX(uint8_t* dst, uint16_t count) { - dmac_channel_disable(SPI_DMAC_RX_CH); - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_SADDR = (uint32_t)&SPI0->SPI_RDR; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DADDR = (uint32_t)dst; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | - DMAC_CTRLB_SRC_INCR_FIXED | DMAC_CTRLB_DST_INCR_INCREMENTING; - DMAC->DMAC_CH_NUM[SPI_DMAC_RX_CH].DMAC_CFG = DMAC_CFG_SRC_PER(SPI_RX_IDX) | - DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ASAP_CFG; - dmac_channel_enable(SPI_DMAC_RX_CH); -} -//------------------------------------------------------------------------------ -// start TX DMA -static void spiDmaTX(const uint8_t* src, uint16_t count) { - static uint8_t ff = 0XFF; - uint32_t src_incr = DMAC_CTRLB_SRC_INCR_INCREMENTING; - if (!src) { - src = &ff; - src_incr = DMAC_CTRLB_SRC_INCR_FIXED; - } - dmac_channel_disable(SPI_DMAC_TX_CH); - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | - src_incr | DMAC_CTRLB_DST_INCR_FIXED; - - DMAC->DMAC_CH_NUM[SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(SPI_TX_IDX) | - DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; - - dmac_channel_enable(SPI_DMAC_TX_CH); -} -//------------------------------------------------------------------------------ -// initialize SPI controller -void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); - - Spi* pSpi = SPI0; - // Save the divisor - uint32_t scbr = pSpi->SPI_CSR[SPI_CHIP_SEL] & 0XFF00; - // Disable SPI - pSpi->SPI_CR = SPI_CR_SPIDIS; - // reset SPI - pSpi->SPI_CR = SPI_CR_SWRST; - // no mode fault detection, set master mode - pSpi->SPI_MR = SPI_PCS(SPI_CHIP_SEL) | SPI_MR_MODFDIS | SPI_MR_MSTR; - // mode 0, 8-bit, - pSpi->SPI_CSR[SPI_CHIP_SEL] = scbr | SPI_CSR_CSAAT | SPI_CSR_NCPHA; - // enable SPI - pSpi->SPI_CR |= SPI_CR_SPIEN; -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::deactivate() { - SPI.endTransaction(); -} -//------------------------------------------------------------------------------ -static inline uint8_t spiTransfer(uint8_t b) { - Spi* pSpi = SPI0; - - pSpi->SPI_TDR = b; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} - b = pSpi->SPI_RDR; - return b; -} -//------------------------------------------------------------------------------ -/** SPI receive a byte */ -uint8_t SdSpiAltDriver::receive() { - return spiTransfer(0XFF); -} -//------------------------------------------------------------------------------ -/** SPI receive multiple bytes */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - Spi* pSpi = SPI0; - int rtn = 0; -#if USE_SAM3X_DMAC - // clear overrun error - pSpi->SPI_SR; - - spiDmaRX(buf, n); - spiDmaTX(0, n); - - uint32_t m = millis(); - while (!dmac_channel_transfer_done(SPI_DMAC_RX_CH)) { - if ((millis() - m) > SAM3X_DMA_TIMEOUT) { - dmac_channel_disable(SPI_DMAC_RX_CH); - dmac_channel_disable(SPI_DMAC_TX_CH); - rtn = 2; - break; - } - } - if (pSpi->SPI_SR & SPI_SR_OVRES) { - rtn |= 1; - } -#else // USE_SAM3X_DMAC - for (size_t i = 0; i < n; i++) { - pSpi->SPI_TDR = 0XFF; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) {} - buf[i] = pSpi->SPI_RDR; - } -#endif // USE_SAM3X_DMAC - return rtn; -} -//------------------------------------------------------------------------------ -/** SPI send a byte */ -void SdSpiAltDriver::send(uint8_t b) { - spiTransfer(b); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - Spi* pSpi = SPI0; -#if USE_SAM3X_DMAC - spiDmaTX(buf, n); - while (!dmac_channel_transfer_done(SPI_DMAC_TX_CH)) {} -#else // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} - for (size_t i = 0; i < n; i++) { - pSpi->SPI_TDR = buf[i]; - while ((pSpi->SPI_SR & SPI_SR_TDRE) == 0) {} - } -#endif // #if USE_SAM3X_DMAC - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) {} - // leave RDR empty - pSpi->SPI_RDR; -} -#endif // defined(__SAM3X8E__) || defined(__SAM3X8H__) diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiSTM32.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiSTM32.cpp deleted file mode 100644 index 629775ee..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiSTM32.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#if defined(__STM32F1__) || defined(__STM32F4__) -#include "SdSpiDriver.h" -#if defined(__STM32F1__) -#define USE_STM32_DMA 1 -#elif defined(__STM32F4__) -#define USE_STM32_DMA 1 -#else // defined(__STM32F1__) -#error Unknown STM32 type -#endif // defined(__STM32F1__) -//------------------------------------------------------------------------------ -/** Set SPI options for access to SD/SDHC cards. - * - * \param[in] divisor SCK clock divider relative to the APB1 or APB2 clock. - */ -void SdSpiAltDriver::activate() { - m_spi->beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -/** Initialize the SPI bus. - * - * \param[in] chipSelectPin SD card chip select pin. - */ -void SdSpiAltDriver::begin(uint8_t csPin) { - m_csPin = csPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - m_spi->begin(); -} -//------------------------------------------------------------------------------ -/** - * End SPI transaction. - */ -void SdSpiAltDriver::deactivate() { - m_spi->endTransaction(); -} -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return m_spi->transfer(0XFF); -} -//------------------------------------------------------------------------------ -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { -#if USE_STM32_DMA - return m_spi->dmaTransfer(nullptr, buf, n); -#else // USE_STM32_DMA - m_spi->read(buf, n); - return 0; -#endif // USE_STM32_DMA -} -//------------------------------------------------------------------------------ -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - m_spi->transfer(b); -} -//------------------------------------------------------------------------------ -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { -#if USE_STM32_DMA - m_spi->dmaTransfer(const_cast(buf), nullptr, n); -#else // USE_STM32_DMA - m_spi->write(const_cast(buf), n); -#endif // USE_STM32_DMA -} -#endif // defined(__STM32F1__) || defined(__STM32F4__) diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiTeensy3.cpp b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiTeensy3.cpp deleted file mode 100644 index 02ed2af7..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SdSpiTeensy3.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#include "SdSpiDriver.h" -#if defined(__arm__) && defined(CORE_TEENSY) -// SPI definitions -#include "kinetis.h" - -//------------------------------------------------------------------------------ -void SdSpiAltDriver::activate() { - SPI.beginTransaction(m_spiSettings); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::begin(uint8_t chipSelectPin) { - m_csPin = chipSelectPin; - pinMode(m_csPin, OUTPUT); - digitalWrite(m_csPin, HIGH); - SPI.begin(); -} -//------------------------------------------------------------------------------ -void SdSpiAltDriver::deactivate() { - SPI.endTransaction(); -} -//============================================================================== -#ifdef KINETISK - -// use 16-bit frame if SPI_USE_8BIT_FRAME is zero -#define SPI_USE_8BIT_FRAME 0 -// Limit initial fifo to three entries to avoid fifo overrun -#define SPI_INITIAL_FIFO_DEPTH 3 -// define some symbols that are not in mk20dx128.h -#ifndef SPI_SR_RXCTR -#define SPI_SR_RXCTR 0XF0 -#endif // SPI_SR_RXCTR -#ifndef SPI_PUSHR_CONT -#define SPI_PUSHR_CONT 0X80000000 -#endif // SPI_PUSHR_CONT -#ifndef SPI_PUSHR_CTAS -#define SPI_PUSHR_CTAS(n) (((n) & 7) << 28) -#endif // SPI_PUSHR_CTAS -//------------------------------------------------------------------------------ -/** SPI receive a byte */ -uint8_t SdSpiAltDriver::receive() { - SPI0_MCR |= SPI_MCR_CLR_RXF; - SPI0_SR = SPI_SR_TCF; - SPI0_PUSHR = 0xFF; - while (!(SPI0_SR & SPI_SR_TCF)) {} - return SPI0_POPR; -} -//------------------------------------------------------------------------------ -/** SPI receive multiple bytes */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - // clear any data in RX FIFO - SPI0_MCR = SPI_MCR_MSTR | SPI_MCR_CLR_RXF | SPI_MCR_PCSIS(0x1F); -#if SPI_USE_8BIT_FRAME - // initial number of bytes to push into TX FIFO - int nf = n < SPI_INITIAL_FIFO_DEPTH ? n : SPI_INITIAL_FIFO_DEPTH; - for (int i = 0; i < nf; i++) { - SPI0_PUSHR = 0XFF; - } - // limit for pushing dummy data into TX FIFO - uint8_t* limit = buf + n - nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = 0XFF; - *buf++ = SPI0_POPR; - } - // limit for rest of RX data - limit += nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - *buf++ = SPI0_POPR; - } -#else // SPI_USE_8BIT_FRAME - // use 16 bit frame to avoid TD delay between frames - // get one byte if n is odd - if (n & 1) { - *buf++ = receive(); - n--; - } - // initial number of words to push into TX FIFO - int nf = n/2 < SPI_INITIAL_FIFO_DEPTH ? n/2 : SPI_INITIAL_FIFO_DEPTH; - for (int i = 0; i < nf; i++) { - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | 0XFFFF; - } - uint8_t* limit = buf + n - 2*nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | 0XFFFF; - uint16_t w = SPI0_POPR; - *buf++ = w >> 8; - *buf++ = w & 0XFF; - } - // limit for rest of RX data - limit += 2*nf; - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - uint16_t w = SPI0_POPR; - *buf++ = w >> 8; - *buf++ = w & 0XFF; - } -#endif // SPI_USE_8BIT_FRAME - return 0; -} -//------------------------------------------------------------------------------ -/** SPI send a byte */ -void SdSpiAltDriver::send(uint8_t b) { - SPI0_MCR |= SPI_MCR_CLR_RXF; - SPI0_SR = SPI_SR_TCF; - SPI0_PUSHR = b; - while (!(SPI0_SR & SPI_SR_TCF)) {} -} -//------------------------------------------------------------------------------ -/** SPI send multiple bytes */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - // clear any data in RX FIFO - SPI0_MCR = SPI_MCR_MSTR | SPI_MCR_CLR_RXF | SPI_MCR_PCSIS(0x1F); -#if SPI_USE_8BIT_FRAME - // initial number of bytes to push into TX FIFO - int nf = n < SPI_INITIAL_FIFO_DEPTH ? n : SPI_INITIAL_FIFO_DEPTH; - // limit for pushing data into TX fifo - const uint8_t* limit = buf + n; - for (int i = 0; i < nf; i++) { - SPI0_PUSHR = *buf++; - } - // write data to TX FIFO - while (buf < limit) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = *buf++; - SPI0_POPR; - } - // wait for data to be sent - while (nf) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_POPR; - nf--; - } -#else // SPI_USE_8BIT_FRAME - // use 16 bit frame to avoid TD delay between frames - // send one byte if n is odd - if (n & 1) { - send(*buf++); - n--; - } - // initial number of words to push into TX FIFO - int nf = n/2 < SPI_INITIAL_FIFO_DEPTH ? n/2 : SPI_INITIAL_FIFO_DEPTH; - // limit for pushing data into TX fifo - const uint8_t* limit = buf + n; - for (int i = 0; i < nf; i++) { - uint16_t w = (*buf++) << 8; - w |= *buf++; - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | w; - } - // write data to TX FIFO - while (buf < limit) { - uint16_t w = *buf++ << 8; - w |= *buf++; - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_PUSHR = SPI_PUSHR_CONT | SPI_PUSHR_CTAS(1) | w; - SPI0_POPR; - } - // wait for data to be sent - while (nf) { - while (!(SPI0_SR & SPI_SR_RXCTR)) {} - SPI0_POPR; - nf--; - } -#endif // SPI_USE_8BIT_FRAME -} -#else // KINETISK -//============================================================================== -// Use standard SPI library if not KINETISK -//------------------------------------------------------------------------------ -/** Receive a byte. - * - * \return The byte. - */ -uint8_t SdSpiAltDriver::receive() { - return SPI.transfer(0XFF); -} -/** Receive multiple bytes. - * - * \param[out] buf Buffer to receive the data. - * \param[in] n Number of bytes to receive. - * - * \return Zero for no error or nonzero error code. - */ -uint8_t SdSpiAltDriver::receive(uint8_t* buf, size_t n) { - for (size_t i = 0; i < n; i++) { - buf[i] = SPI.transfer(0XFF); - } - return 0; -} -/** Send a byte. - * - * \param[in] b Byte to send - */ -void SdSpiAltDriver::send(uint8_t b) { - SPI.transfer(b); -} -/** Send multiple bytes. - * - * \param[in] buf Buffer for data to be sent. - * \param[in] n Number of bytes to send. - */ -void SdSpiAltDriver::send(const uint8_t* buf , size_t n) { - for (size_t i = 0; i < n; i++) { - SPI.transfer(buf[i]); - } -} -#endif // KINETISK -#endif // defined(__arm__) && defined(CORE_TEENSY) diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SoftSPI.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SoftSPI.h deleted file mode 100644 index ee21b230..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/SoftSPI.h +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -/** - * @file - * @brief Software SPI. - * - * @defgroup softSPI Software SPI - * @details Software SPI Template Class. - * @{ - */ - -#ifndef SoftSPI_h -#define SoftSPI_h -#include "DigitalPin.h" -//------------------------------------------------------------------------------ -/** Nop for timing. */ -#define nop asm volatile ("nop\n\t") -//------------------------------------------------------------------------------ -/** Pin Mode for MISO is input.*/ -#define MISO_MODE INPUT -/** Pullups disabled for MISO are disabled. */ -#define MISO_LEVEL false -/** Pin Mode for MOSI is output.*/ -#define MOSI_MODE OUTPUT -/** Pin Mode for SCK is output. */ -#define SCK_MODE OUTPUT -//------------------------------------------------------------------------------ -/** - * @class SoftSPI - * @brief Fast software SPI. - */ -template -class SoftSPI { - public: - //---------------------------------------------------------------------------- - /** Initialize SoftSPI pins. */ - void begin() { - fastPinConfig(MisoPin, MISO_MODE, MISO_LEVEL); - fastPinConfig(MosiPin, MOSI_MODE, !MODE_CPHA(Mode)); - fastPinConfig(SckPin, SCK_MODE, MODE_CPOL(Mode)); - } - //---------------------------------------------------------------------------- - /** Soft SPI receive byte. - * @return Data byte received. - */ - inline __attribute__((always_inline)) - uint8_t receive() { - uint8_t data = 0; - receiveBit(7, &data); - receiveBit(6, &data); - receiveBit(5, &data); - receiveBit(4, &data); - receiveBit(3, &data); - receiveBit(2, &data); - receiveBit(1, &data); - receiveBit(0, &data); - return data; - } - //---------------------------------------------------------------------------- - /** Soft SPI send byte. - * @param[in] data Data byte to send. - */ - inline __attribute__((always_inline)) - void send(uint8_t data) { - sendBit(7, data); - sendBit(6, data); - sendBit(5, data); - sendBit(4, data); - sendBit(3, data); - sendBit(2, data); - sendBit(1, data); - sendBit(0, data); - } - //---------------------------------------------------------------------------- - /** Soft SPI transfer byte. - * @param[in] txData Data byte to send. - * @return Data byte received. - */ - inline __attribute__((always_inline)) - uint8_t transfer(uint8_t txData) { - uint8_t rxData = 0; - transferBit(7, &rxData, txData); - transferBit(6, &rxData, txData); - transferBit(5, &rxData, txData); - transferBit(4, &rxData, txData); - transferBit(3, &rxData, txData); - transferBit(2, &rxData, txData); - transferBit(1, &rxData, txData); - transferBit(0, &rxData, txData); - return rxData; - } - - private: - //---------------------------------------------------------------------------- - inline __attribute__((always_inline)) - bool MODE_CPHA(uint8_t mode) {return (mode & 1) != 0;} - inline __attribute__((always_inline)) - bool MODE_CPOL(uint8_t mode) {return (mode & 2) != 0;} - inline __attribute__((always_inline)) - void receiveBit(uint8_t bit, uint8_t* data) { - if (MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); - } - nop; - nop; - fastDigitalWrite(SckPin, - MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); - if (fastDigitalRead(MisoPin)) *data |= 1 << bit; - if (!MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, MODE_CPOL(Mode)); - } - } - //---------------------------------------------------------------------------- - inline __attribute__((always_inline)) - void sendBit(uint8_t bit, uint8_t data) { - if (MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); - } - fastDigitalWrite(MosiPin, data & (1 << bit)); - fastDigitalWrite(SckPin, - MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); - nop; - nop; - if (!MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, MODE_CPOL(Mode)); - } - } - //---------------------------------------------------------------------------- - inline __attribute__((always_inline)) - void transferBit(uint8_t bit, uint8_t* rxData, uint8_t txData) { - if (MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); - } - fastDigitalWrite(MosiPin, txData & (1 << bit)); - fastDigitalWrite(SckPin, - MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); - if (fastDigitalRead(MisoPin)) *rxData |= 1 << bit; - if (!MODE_CPHA(Mode)) { - fastDigitalWrite(SckPin, MODE_CPOL(Mode)); - } - } - //---------------------------------------------------------------------------- -}; -#endif // SoftSPI_h -/** @} */ diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h deleted file mode 100644 index 67a8ec29..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/AvrDevelopersGpioPinMap.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef AvrDevelopersGpioPinMap_h -#define AvrDevelopersGpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 4), // D4 - GPIO_PIN(B, 5), // D5 - GPIO_PIN(B, 6), // D6 - GPIO_PIN(B, 7), // D7 - GPIO_PIN(D, 0), // D8 - GPIO_PIN(D, 1), // D9 - GPIO_PIN(D, 2), // D10 - GPIO_PIN(D, 3), // D11 - GPIO_PIN(D, 4), // D12 - GPIO_PIN(D, 5), // D13 - GPIO_PIN(D, 6), // D14 - GPIO_PIN(D, 7), // D15 - GPIO_PIN(C, 0), // D16 - GPIO_PIN(C, 1), // D17 - GPIO_PIN(C, 2), // D18 - GPIO_PIN(C, 3), // D19 - GPIO_PIN(C, 4), // D20 - GPIO_PIN(C, 5), // D21 - GPIO_PIN(C, 6), // D22 - GPIO_PIN(C, 7), // D23 - GPIO_PIN(A, 7), // D24 - GPIO_PIN(A, 6), // D25 - GPIO_PIN(A, 5), // D26 - GPIO_PIN(A, 4), // D27 - GPIO_PIN(A, 3), // D28 - GPIO_PIN(A, 2), // D29 - GPIO_PIN(A, 1), // D30 - GPIO_PIN(A, 0) // D31 -}; -#endif // AvrDevelopersGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/BobuinoGpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/BobuinoGpioPinMap.h deleted file mode 100644 index 2d199445..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/BobuinoGpioPinMap.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef BobuinoGpioPinMap_h -#define BobuinoGpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 4), // D4 - GPIO_PIN(B, 5), // D5 - GPIO_PIN(B, 6), // D6 - GPIO_PIN(B, 7), // D7 - GPIO_PIN(D, 0), // D8 - GPIO_PIN(D, 1), // D9 - GPIO_PIN(D, 2), // D10 - GPIO_PIN(D, 3), // D11 - GPIO_PIN(D, 4), // D12 - GPIO_PIN(D, 5), // D13 - GPIO_PIN(D, 6), // D14 - GPIO_PIN(D, 7), // D15 - GPIO_PIN(C, 0), // D16 - GPIO_PIN(C, 1), // D17 - GPIO_PIN(C, 2), // D18 - GPIO_PIN(C, 3), // D19 - GPIO_PIN(C, 4), // D20 - GPIO_PIN(C, 5), // D21 - GPIO_PIN(C, 6), // D22 - GPIO_PIN(C, 7), // D23 - GPIO_PIN(A, 0), // D24 - GPIO_PIN(A, 1), // D25 - GPIO_PIN(A, 2), // D26 - GPIO_PIN(A, 3), // D27 - GPIO_PIN(A, 4), // D28 - GPIO_PIN(A, 5), // D29 - GPIO_PIN(A, 6), // D30 - GPIO_PIN(A, 7) // D31 -}; -#endif // BobuinoGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/GpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/GpioPinMap.h deleted file mode 100644 index 326b7621..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/GpioPinMap.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef GpioPinMap_h -#define GpioPinMap_h -#if defined(__AVR_ATmega168__)\ -||defined(__AVR_ATmega168P__)\ -||defined(__AVR_ATmega328P__) -// 168 and 328 Arduinos -#include "UnoGpioPinMap.h" -#elif defined(__AVR_ATmega1280__)\ -|| defined(__AVR_ATmega2560__) -// Mega ADK -#include "MegaGpioPinMap.h" -#elif defined(__AVR_ATmega32U4__) -#ifdef CORE_TEENSY -#include "Teensy2GpioPinMap.h" -#else // CORE_TEENSY -// Leonardo or Yun -#include "LeonardoGpioPinMap.h" -#endif // CORE_TEENSY -#elif defined(__AVR_AT90USB646__)\ -|| defined(__AVR_AT90USB1286__) -// Teensy++ 1.0 & 2.0 -#include "Teensy2ppGpioPinMap.h" -#elif defined(__AVR_ATmega1284P__)\ -|| defined(__AVR_ATmega1284__)\ -|| defined(__AVR_ATmega644P__)\ -|| defined(__AVR_ATmega644__)\ -|| defined(__AVR_ATmega64__)\ -|| defined(__AVR_ATmega32__)\ -|| defined(__AVR_ATmega324__)\ -|| defined(__AVR_ATmega16__) -#ifdef ARDUINO_1284P_AVR_DEVELOPERS -#include "AvrDevelopersGpioPinMap.h" -#elif defined(BOBUINO_PINOUT) || defined(ARDUINO_1284P_BOBUINO) -#include "BobuinoGpioPinMap.h" -#elif defined(ARDUINO_1284P_SLEEPINGBEAUTY) -#include "SleepingBeautyGpioPinMap.h" -#elif defined(STANDARD_PINOUT) || defined(ARDUINO_1284P_STANDARD) -#include "Standard1284GpioPinMap.h" -#else // ARDUINO_1284P_AVR_DEVELOPERS -#error Undefined variant 1284, 644, 324 -#endif // ARDUINO_1284P_AVR_DEVELOPERS -#else // 1284P, 1284, 644 -#error Unknown board type. -#endif // end all boards -#endif // GpioPinMap_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/LeonardoGpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/LeonardoGpioPinMap.h deleted file mode 100644 index 73544e66..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/LeonardoGpioPinMap.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef LeonardoGpioPinMap_h -#define LeonardoGpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 2), // D0 - GPIO_PIN(D, 3), // D1 - GPIO_PIN(D, 1), // D2 - GPIO_PIN(D, 0), // D3 - GPIO_PIN(D, 4), // D4 - GPIO_PIN(C, 6), // D5 - GPIO_PIN(D, 7), // D6 - GPIO_PIN(E, 6), // D7 - GPIO_PIN(B, 4), // D8 - GPIO_PIN(B, 5), // D9 - GPIO_PIN(B, 6), // D10 - GPIO_PIN(B, 7), // D11 - GPIO_PIN(D, 6), // D12 - GPIO_PIN(C, 7), // D13 - GPIO_PIN(B, 3), // D14 - GPIO_PIN(B, 1), // D15 - GPIO_PIN(B, 2), // D16 - GPIO_PIN(B, 0), // D17 - GPIO_PIN(F, 7), // D18 - GPIO_PIN(F, 6), // D19 - GPIO_PIN(F, 5), // D20 - GPIO_PIN(F, 4), // D21 - GPIO_PIN(F, 1), // D22 - GPIO_PIN(F, 0), // D23 - GPIO_PIN(D, 4), // D24 - GPIO_PIN(D, 7), // D25 - GPIO_PIN(B, 4), // D26 - GPIO_PIN(B, 5), // D27 - GPIO_PIN(B, 6), // D28 - GPIO_PIN(D, 6) // D29 -}; -#endif // LeonardoGpioPinMap_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/MegaGpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/MegaGpioPinMap.h deleted file mode 100644 index c0413431..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/MegaGpioPinMap.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef MegaGpioPinMap_h -#define MegaGpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(E, 0), // D0 - GPIO_PIN(E, 1), // D1 - GPIO_PIN(E, 4), // D2 - GPIO_PIN(E, 5), // D3 - GPIO_PIN(G, 5), // D4 - GPIO_PIN(E, 3), // D5 - GPIO_PIN(H, 3), // D6 - GPIO_PIN(H, 4), // D7 - GPIO_PIN(H, 5), // D8 - GPIO_PIN(H, 6), // D9 - GPIO_PIN(B, 4), // D10 - GPIO_PIN(B, 5), // D11 - GPIO_PIN(B, 6), // D12 - GPIO_PIN(B, 7), // D13 - GPIO_PIN(J, 1), // D14 - GPIO_PIN(J, 0), // D15 - GPIO_PIN(H, 1), // D16 - GPIO_PIN(H, 0), // D17 - GPIO_PIN(D, 3), // D18 - GPIO_PIN(D, 2), // D19 - GPIO_PIN(D, 1), // D20 - GPIO_PIN(D, 0), // D21 - GPIO_PIN(A, 0), // D22 - GPIO_PIN(A, 1), // D23 - GPIO_PIN(A, 2), // D24 - GPIO_PIN(A, 3), // D25 - GPIO_PIN(A, 4), // D26 - GPIO_PIN(A, 5), // D27 - GPIO_PIN(A, 6), // D28 - GPIO_PIN(A, 7), // D29 - GPIO_PIN(C, 7), // D30 - GPIO_PIN(C, 6), // D31 - GPIO_PIN(C, 5), // D32 - GPIO_PIN(C, 4), // D33 - GPIO_PIN(C, 3), // D34 - GPIO_PIN(C, 2), // D35 - GPIO_PIN(C, 1), // D36 - GPIO_PIN(C, 0), // D37 - GPIO_PIN(D, 7), // D38 - GPIO_PIN(G, 2), // D39 - GPIO_PIN(G, 1), // D40 - GPIO_PIN(G, 0), // D41 - GPIO_PIN(L, 7), // D42 - GPIO_PIN(L, 6), // D43 - GPIO_PIN(L, 5), // D44 - GPIO_PIN(L, 4), // D45 - GPIO_PIN(L, 3), // D46 - GPIO_PIN(L, 2), // D47 - GPIO_PIN(L, 1), // D48 - GPIO_PIN(L, 0), // D49 - GPIO_PIN(B, 3), // D50 - GPIO_PIN(B, 2), // D51 - GPIO_PIN(B, 1), // D52 - GPIO_PIN(B, 0), // D53 - GPIO_PIN(F, 0), // D54 - GPIO_PIN(F, 1), // D55 - GPIO_PIN(F, 2), // D56 - GPIO_PIN(F, 3), // D57 - GPIO_PIN(F, 4), // D58 - GPIO_PIN(F, 5), // D59 - GPIO_PIN(F, 6), // D60 - GPIO_PIN(F, 7), // D61 - GPIO_PIN(K, 0), // D62 - GPIO_PIN(K, 1), // D63 - GPIO_PIN(K, 2), // D64 - GPIO_PIN(K, 3), // D65 - GPIO_PIN(K, 4), // D66 - GPIO_PIN(K, 5), // D67 - GPIO_PIN(K, 6), // D68 - GPIO_PIN(K, 7) // D69 -}; -#endif // MegaGpioPinMap_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h deleted file mode 100644 index bf040d93..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/SleepingBeautyGpioPinMap.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef SleepingBeautyGpioPinMap_h -#define SleepingBeautyGpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 0), // D0 - GPIO_PIN(D, 1), // D1 - GPIO_PIN(D, 2), // D2 - GPIO_PIN(D, 3), // D3 - GPIO_PIN(B, 0), // D4 - GPIO_PIN(B, 1), // D5 - GPIO_PIN(B, 2), // D6 - GPIO_PIN(B, 3), // D7 - GPIO_PIN(D, 6), // D8 - GPIO_PIN(D, 5), // D9 - GPIO_PIN(B, 4), // D10 - GPIO_PIN(B, 5), // D11 - GPIO_PIN(B, 6), // D12 - GPIO_PIN(B, 7), // D13 - GPIO_PIN(C, 7), // D14 - GPIO_PIN(C, 6), // D15 - GPIO_PIN(A, 5), // D16 - GPIO_PIN(A, 4), // D17 - GPIO_PIN(A, 3), // D18 - GPIO_PIN(A, 2), // D19 - GPIO_PIN(A, 1), // D20 - GPIO_PIN(A, 0), // D21 - GPIO_PIN(D, 4), // D22 - GPIO_PIN(D, 7), // D23 - GPIO_PIN(C, 2), // D24 - GPIO_PIN(C, 3), // D25 - GPIO_PIN(C, 4), // D26 - GPIO_PIN(C, 5), // D27 - GPIO_PIN(C, 1), // D28 - GPIO_PIN(C, 0), // D29 - GPIO_PIN(A, 6), // D30 - GPIO_PIN(A, 7) // D31 -}; -#endif // SleepingBeautyGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Standard1284GpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Standard1284GpioPinMap.h deleted file mode 100644 index d38ff0cd..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Standard1284GpioPinMap.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef Standard1284GpioPinMap_h -#define Standard1284GpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 4), // D4 - GPIO_PIN(B, 5), // D5 - GPIO_PIN(B, 6), // D6 - GPIO_PIN(B, 7), // D7 - GPIO_PIN(D, 0), // D8 - GPIO_PIN(D, 1), // D9 - GPIO_PIN(D, 2), // D10 - GPIO_PIN(D, 3), // D11 - GPIO_PIN(D, 4), // D12 - GPIO_PIN(D, 5), // D13 - GPIO_PIN(D, 6), // D14 - GPIO_PIN(D, 7), // D15 - GPIO_PIN(C, 0), // D16 - GPIO_PIN(C, 1), // D17 - GPIO_PIN(C, 2), // D18 - GPIO_PIN(C, 3), // D19 - GPIO_PIN(C, 4), // D20 - GPIO_PIN(C, 5), // D21 - GPIO_PIN(C, 6), // D22 - GPIO_PIN(C, 7), // D23 - GPIO_PIN(A, 0), // D24 - GPIO_PIN(A, 1), // D25 - GPIO_PIN(A, 2), // D26 - GPIO_PIN(A, 3), // D27 - GPIO_PIN(A, 4), // D28 - GPIO_PIN(A, 5), // D29 - GPIO_PIN(A, 6), // D30 - GPIO_PIN(A, 7) // D31 -}; -#endif // Standard1284GpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Teensy2GpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Teensy2GpioPinMap.h deleted file mode 100644 index 00aa437d..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Teensy2GpioPinMap.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef Teensy2GpioPinMap_h -#define Teensy2GpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(B, 0), // D0 - GPIO_PIN(B, 1), // D1 - GPIO_PIN(B, 2), // D2 - GPIO_PIN(B, 3), // D3 - GPIO_PIN(B, 7), // D4 - GPIO_PIN(D, 0), // D5 - GPIO_PIN(D, 1), // D6 - GPIO_PIN(D, 2), // D7 - GPIO_PIN(D, 3), // D8 - GPIO_PIN(C, 6), // D9 - GPIO_PIN(C, 7), // D10 - GPIO_PIN(D, 6), // D11 - GPIO_PIN(D, 7), // D12 - GPIO_PIN(B, 4), // D13 - GPIO_PIN(B, 5), // D14 - GPIO_PIN(B, 6), // D15 - GPIO_PIN(F, 7), // D16 - GPIO_PIN(F, 6), // D17 - GPIO_PIN(F, 5), // D18 - GPIO_PIN(F, 4), // D19 - GPIO_PIN(F, 1), // D20 - GPIO_PIN(F, 0), // D21 - GPIO_PIN(D, 4), // D22 - GPIO_PIN(D, 5), // D23 - GPIO_PIN(E, 6), // D24 -}; -#endif // Teensy2GpioPinMap_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Teensy2ppGpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Teensy2ppGpioPinMap.h deleted file mode 100644 index 68c51d72..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/Teensy2ppGpioPinMap.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef Teensypp2GpioPinMap_h -#define Teensypp2GpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 0), // D0 - GPIO_PIN(D, 1), // D1 - GPIO_PIN(D, 2), // D2 - GPIO_PIN(D, 3), // D3 - GPIO_PIN(D, 4), // D4 - GPIO_PIN(D, 5), // D5 - GPIO_PIN(D, 6), // D6 - GPIO_PIN(D, 7), // D7 - GPIO_PIN(E, 0), // D8 - GPIO_PIN(E, 1), // D9 - GPIO_PIN(C, 0), // D10 - GPIO_PIN(C, 1), // D11 - GPIO_PIN(C, 2), // D12 - GPIO_PIN(C, 3), // D13 - GPIO_PIN(C, 4), // D14 - GPIO_PIN(C, 5), // D15 - GPIO_PIN(C, 6), // D16 - GPIO_PIN(C, 7), // D17 - GPIO_PIN(E, 6), // D18 - GPIO_PIN(E, 7), // D19 - GPIO_PIN(B, 0), // D20 - GPIO_PIN(B, 1), // D21 - GPIO_PIN(B, 2), // D22 - GPIO_PIN(B, 3), // D23 - GPIO_PIN(B, 4), // D24 - GPIO_PIN(B, 5), // D25 - GPIO_PIN(B, 6), // D26 - GPIO_PIN(B, 7), // D27 - GPIO_PIN(A, 0), // D28 - GPIO_PIN(A, 1), // D29 - GPIO_PIN(A, 2), // D30 - GPIO_PIN(A, 3), // D31 - GPIO_PIN(A, 4), // D32 - GPIO_PIN(A, 5), // D33 - GPIO_PIN(A, 6), // D34 - GPIO_PIN(A, 7), // D35 - GPIO_PIN(E, 4), // D36 - GPIO_PIN(E, 5), // D37 - GPIO_PIN(F, 0), // D38 - GPIO_PIN(F, 1), // D39 - GPIO_PIN(F, 2), // D40 - GPIO_PIN(F, 3), // D41 - GPIO_PIN(F, 4), // D42 - GPIO_PIN(F, 5), // D43 - GPIO_PIN(F, 6), // D44 - GPIO_PIN(F, 7), // D45 -}; -#endif // Teensypp2GpioPinMap_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/UnoGpioPinMap.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/UnoGpioPinMap.h deleted file mode 100644 index 21ec75dd..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SpiDriver/boards/UnoGpioPinMap.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef UnoGpioPinMap_h -#define UnoGpioPinMap_h -static const GpioPinMap_t GpioPinMap[] = { - GPIO_PIN(D, 0), // D0 - GPIO_PIN(D, 1), // D1 - GPIO_PIN(D, 2), // D2 - GPIO_PIN(D, 3), // D3 - GPIO_PIN(D, 4), // D4 - GPIO_PIN(D, 5), // D5 - GPIO_PIN(D, 6), // D6 - GPIO_PIN(D, 7), // D7 - GPIO_PIN(B, 0), // D8 - GPIO_PIN(B, 1), // D9 - GPIO_PIN(B, 2), // D10 - GPIO_PIN(B, 3), // D11 - GPIO_PIN(B, 4), // D12 - GPIO_PIN(B, 5), // D13 - GPIO_PIN(C, 0), // D14 - GPIO_PIN(C, 1), // D15 - GPIO_PIN(C, 2), // D16 - GPIO_PIN(C, 3), // D17 - GPIO_PIN(C, 4), // D18 - GPIO_PIN(C, 5) // D19 -}; -#endif // UnoGpioPinMap_h \ No newline at end of file diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/SysCall.h b/extra-libraries/SDFat/SdFat-1.1.0/src/SysCall.h deleted file mode 100644 index 5847155c..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/SysCall.h +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef SysCall_h -#define SysCall_h -/** - * \file - * \brief SysCall class - */ -#if defined(ARDUINO) -#include -#include -#elif defined(PLATFORM_ID) // Only defined if a Particle device -#include "application.h" -#else // defined(ARDUINO) -#error "Unknown system" -#endif // defined(ARDUINO) -//------------------------------------------------------------------------------ -#ifdef ESP8266 -// undefine F macro if ESP8266. -#undef F -#endif // ESP8266 -//------------------------------------------------------------------------------ -#ifndef F -/** Define macro for strings stored in flash. */ -#define F(str) (str) -#endif // F -//------------------------------------------------------------------------------ -/** \return the time in milliseconds. */ -inline uint16_t curTimeMS() { - return millis(); -} -//------------------------------------------------------------------------------ -/** - * \class SysCall - * \brief SysCall - Class to wrap system calls. - */ -class SysCall { - public: - /** Halt execution of this thread. */ - static void halt() { - while (1) { - yield(); - } - } - /** Yield to other threads. */ - static void yield(); -}; - -#if defined(ESP8266) -inline void SysCall::yield() { - // Avoid ESP8266 bug - delay(0); -} -#elif defined(ARDUINO) -inline void SysCall::yield() { - // Use the external Arduino yield() function. - ::yield(); -} -#elif defined(PLATFORM_ID) // Only defined if a Particle device -inline void SysCall::yield() { - Particle.process(); -} -#else // ESP8266 -inline void SysCall::yield() {} -#endif // ESP8266 -#endif // SysCall_h diff --git a/extra-libraries/SDFat/SdFat-1.1.0/src/sdios.h b/extra-libraries/SDFat/SdFat-1.1.0/src/sdios.h deleted file mode 100644 index 6054623a..00000000 --- a/extra-libraries/SDFat/SdFat-1.1.0/src/sdios.h +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright (c) 2011-2018 Bill Greiman - * This file is part of the SdFat library for SD memory cards. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -#ifndef sdios_h -#define sdios_h -/** - * \file - * \brief C++ IO Streams features. - */ -#include "FatLib/fstream.h" -#include "FatLib/ArduinoStream.h" -#endif // sdios_h diff --git a/platformIO/extra_script.py b/platformIO/extra_script.py index 8122aa21..e16b206b 100644 --- a/platformIO/extra_script.py +++ b/platformIO/extra_script.py @@ -9,8 +9,7 @@ print("Check if need to add some library to path") if isfile(configuration_file): fh = open(configuration_file, 'r') for line in fh: - entry = re.search('^#define(\s)*SD_DEVICE(\s)*ESP_SDFAT', line) - entry2 = re.search('^#define(\s)*SD_DEVICE(\s)*ESP_SDFAT2', line) + entry = re.search('^#define(\s)*SD_DEVICE(\s)*ESP_SDFAT2', line) if entry: print("Need to add some SD FAT library to path") if (env["PIOPLATFORM"] == "espressif8266"): @@ -21,21 +20,12 @@ if isfile(configuration_file): print("Ignore libs:", lib_ignore) env.GetProjectConfig().set( "env:" + env["PIOENV"], "lib_ignore", lib_ignore) - if entry2: - print("Add ESP8266SDFat2 library to path") - env["LIBSOURCE_DIRS"].append( + print("Add ESP8266SDFat2 library to path") + env["LIBSOURCE_DIRS"].append( "extra-libraries/ESP8266SDFat2") - else: - print("Add ESP8266SDFat library to path") - env["LIBSOURCE_DIRS"].append( - "extra-libraries/ESP8266SDFat") else: - if entry2: - print("Add SDFat2 library to path") - env["LIBSOURCE_DIRS"].append("extra-libraries/SDFat2") - else: - print("Add SDFat library to path") - env["LIBSOURCE_DIRS"].append("extra-libraries/SDFat") + print("Add SDFat2 library to path") + env["LIBSOURCE_DIRS"].append("extra-libraries/SDFat2") fh.close() else: print("No configuration.h file found") diff --git a/test/fatwrite/fatwrite.ino b/test/fatwrite/fatwrite.ino deleted file mode 100644 index d34795c2..00000000 --- a/test/fatwrite/fatwrite.ino +++ /dev/null @@ -1,75 +0,0 @@ -/* - * full system / not flat fs - * directory mode supported - * parsing only File variables - * directory creation: yes - * parsing: one level at once - */ - -#include -#include "FFat.h" - -void setup(){ - Serial.begin(115200); - delay(5000); - Serial.printf("Format()\n"); - if (!FFat.format()) { - Serial.printf("Unable to format(), aborting\n"); - //return; - } - Serial.printf("begin()\n"); - if (!FFat.begin()) { - Serial.printf("Unable to begin(), aborting\n"); - return; - } - File f = FFat.open("/test.txt","w"); - if (f){ - Serial.printf("/test.txt created\n"); - f.print("hello world"); - f.close(); - } else { - Serial.printf("/test.txt creation failed\n"); - } - if (FFat.mkdir("/myDir")){ - Serial.printf("/myDir/ created\n"); - } else { - Serial.printf("/myDir directory creation failed\n"); - } - if (FFat.mkdir("/myDir2")){ - Serial.printf("/myDir2/ created\n"); - } else { - Serial.printf("/myDir2 directory creation failed\n"); - } - f = FFat.open("/myDir/test2.txt","w"); - if (f){ - Serial.printf("/myDir/test2.txt created\n"); - f.print("hello world"); - f.close(); - } else { - Serial.printf("/myDir/test.txt creation failed\n"); - } -} - -void loop(){ - File root = FFat.open("/"); - uint8_t nbf = 0; - uint8_t nbd = 0; - File dir = root.openNextFile(); - while (dir) { - String filename = dir.name(); - size_t fileSize = dir.size(); - if (dir.isDirectory()) - { - Serial.printf("Dir %s\n",filename.c_str() ); - nbd++; - } - if (!dir.isDirectory()) - { - Serial.printf("File %s %d\n",filename.c_str(), fileSize ); - nbf++; - } - dir = root.openNextFile(); - } - Serial.printf("NB Dir: %d, NB File: %d\n",nbd, nbf); - delay(5000); -} diff --git a/test/littlefswrite/littlefswrite.ino b/test/littlefswrite/littlefswrite.ino deleted file mode 100644 index e2bd40f3..00000000 --- a/test/littlefswrite/littlefswrite.ino +++ /dev/null @@ -1,67 +0,0 @@ -#include -/* - * full system / not flat - * directory mode supported - * parsing need Dir and File variables - * directory creation / query no `/` at the end - * parsing: one level at once - */ - -void setup(){ - Serial.begin(115200); - delay(5000); - if (!LittleFS.format()) { - Serial.printf("Unable to format(), aborting\n"); - return; - } - if (!LittleFS.begin()) { - Serial.printf("Unable to begin(), aborting\n"); - return; - } - File f = LittleFS.open("/test.txt","w"); - if (f){ - Serial.printf("/test.txt created\n"); - f.write("hello world", strlen("hello world")); - f.close(); - } else { - Serial.printf("/test.txt creation failed\n"); - } - if (LittleFS.mkdir("/myDir")){ - if (LittleFS.mkdir("/myDir/mysubDir")){} - f = LittleFS.open("/myDir/test2.txt","w"); - if (f){ - Serial.printf("/myDir/test2.txt created\n"); - f.write("hello world", strlen("hello world")); - f.close(); - } else { - Serial.printf("/myDir/test.txt creation failed\n"); - } - } else { - Serial.printf("/myDir directory creation failed\n"); - } - if (!LittleFS.mkdir("/myDir/mysubDir/mysubdir2")){ - Serial.printf("/myDir/mysubDir/mysubdir2 directory creation failed\n"); - } -} - -void loop(){ - Dir dir = LittleFS.openDir("/"); - uint8_t nbf = 0; - uint8_t nbd = 0; - while (dir.next()) { - String fileName = dir.fileName(); - size_t fileSize = dir.fileSize(); - if (dir.isDirectory()) - { - Serial.printf("Dir %s\n",fileName.c_str() ); - nbd++; - } - if (dir.isFile()) - { - Serial.printf("File %s %d\n",fileName.c_str(), fileSize ); - nbf++; - } - } - Serial.printf("NB Dir: %d, NB File: %d\n",nbd, nbf); - delay(5000); -} diff --git a/test/spiffs32write/spiffs32write.ino b/test/spiffs32write/spiffs32write.ino deleted file mode 100644 index 6c767c02..00000000 --- a/test/spiffs32write/spiffs32write.ino +++ /dev/null @@ -1,84 +0,0 @@ -/* - * full system / flat fs - * directory mode not supported - * parsing only File variable - * directory creation: no, need fake dir using . file - * parsing: all levels at once - */ - -#include -#include - -void setup(){ - Serial.begin(115200); - delay(5000); - Serial.printf("Format()\n"); - if (!SPIFFS.format()) { - Serial.printf("Unable to format(), aborting\n"); - return; - } - Serial.printf("begin()\n"); - if (!SPIFFS.begin()) { - Serial.printf("Unable to begin(), aborting\n"); - return; - } - File f = SPIFFS.open("/test.txt","w"); - if (f){ - Serial.printf("/test.txt created\n"); - f.print("hello world"); - f.close(); - } else { - Serial.printf("/test.txt creation failed\n"); - } - if (SPIFFS.mkdir("/myDir")){ - Serial.printf("/myDir/ created\n"); - } else { - Serial.printf("/myDir directory creation failed\n"); - } - if (SPIFFS.mkdir("/myDir2")){ - Serial.printf("/myDir2/ created\n"); - } else { - Serial.printf("/myDir2 directory creation failed\n"); - } - f = SPIFFS.open("/myDir/test2.txt","w"); - if (f){ - Serial.printf("/myDir/test2.txt created\n"); - f.print("hello world"); - f.close(); - } else { - Serial.printf("/myDir/test.txt creation failed\n"); - } - f = SPIFFS.open("/myDir/mysubdir/.","w"); - if (f) { - Serial.printf("/myDir/mysubdir/. created\n"); - f.close(); - } else { - Serial.printf("/myDir/mysubdir/. creation failed\n"); - } - - -} - -void loop(){ - File root = SPIFFS.open("/"); - uint8_t nbf = 0; - uint8_t nbd = 0; - File dir = root.openNextFile(); - while (dir) { - String filename = dir.name(); - size_t fileSize = dir.size(); - if (dir.isDirectory()) - { - Serial.printf("Dir %s\n",filename.c_str() ); - nbd++; - } - if (!dir.isDirectory()) - { - Serial.printf("File %s %d\n",filename.c_str(), fileSize ); - nbf++; - } - dir = root.openNextFile(); - } - Serial.printf("NB Dir: %d, NB File: %d\n",nbd, nbf); - delay(5000); -} diff --git a/test/spiffs8266write/spiffs8266write.ino b/test/spiffs8266write/spiffs8266write.ino deleted file mode 100644 index df3ddae3..00000000 --- a/test/spiffs8266write/spiffs8266write.ino +++ /dev/null @@ -1,76 +0,0 @@ -/* - * full system / flat fs - * directory mode not supported ? - * parsing need Dir and File variables - * directory creation: no, need fake dir using . file - * parsing: all levels at once - */ - -#include - -void setup(){ - Serial.begin(115200); - delay(5000); - Serial.printf("Format()\n"); - // if (!SPIFFS.format()) { - // Serial.printf("Unable to format(), aborting\n"); - // return; - // } - Serial.printf("begin()\n"); - if (!SPIFFS.begin()) { - Serial.printf("Unable to begin(), aborting\n"); - return; - } - File f = SPIFFS.open("/test.txt","w"); - if (f){ - Serial.printf("/test.txt created\n"); - f.write("hello world", strlen("hello world")); - f.close(); - } else { - Serial.printf("/test.txt creation failed\n"); - } - if (SPIFFS.mkdir("/myDir")){ - Serial.printf("/myDir/ created\n"); - } else { - Serial.printf("/myDir directory creation failed\n"); - } - f = SPIFFS.open("/myDir/test2.txt","w"); - if (f){ - Serial.printf("/myDir/test2.txt created\n"); - f.write("hello world", strlen("hello world")); - f.close(); - } else { - Serial.printf("/myDir/test.txt creation failed\n"); - } - f = SPIFFS.open("/myDir/mysubdir/.","w"); - if (f) { - Serial.printf("/myDir/mysubdir/. created\n"); - f.close(); - } else { - Serial.printf("/myDir/mysubdir/. creation failed\n"); - } - - -} - -void loop(){ - Dir dir = SPIFFS.openDir("/"); - uint8_t nbf = 0; - uint8_t nbd = 0; - while (dir.next()) { - String fileName = dir.fileName(); - size_t fileSize = dir.fileSize(); - if (dir.isDirectory()) - { - Serial.printf("Dir %s\n",fileName.c_str() ); - nbd++; - } - if (dir.isFile()) - { - Serial.printf("File %s %d\n",fileName.c_str(), fileSize ); - nbf++; - } - } - Serial.printf("NB Dir: %d, NB File: %d\n",nbd, nbf); - delay(5000); -}